Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

計算機の基本モデル

計算物理のコードは、数式だけでなく、実際の計算機の上で動きます。 同じ計算量のアルゴリズムでも、メモリ上のデータの並びやアクセス順序によって、 実行時間が大きく変わることがあります。

本章では、Rustに入る前に、数値計算コードを読むための計算機モデルを確認します。 ここで扱う内容は Rust 固有ではありません。C/C++、Fortran、Python/NumPy でも重要です。

  • CPU、メモリ、ストレージの役割
  • latency と bandwidth
  • cache と cache line
  • 1次元データの連続アクセスと飛び飛びアクセス
  • stack と heap

本章の目的は、CPU architecture を詳しく学ぶことではありません。 以降の章で Vec<f64>、多次元配列、ndarray、PDE、行列演算、 SIMD、並列化を扱うときに、なぜデータ配置が重要なのかを理解することです。

本章の構成

本章を終えると、以降の章で出てくる配列操作や性能の話を、 プログラミング言語だけではなく計算機の動きとして読めるようになります。