さらに学ぶには
本書で扱った各分野を深めるための、評価の定まった資料を挙げます。
コンピュータアーキテクチャ全般
- 『コンピュータシステムの理論と実装』/ CS:APP: 英語では Computer Systems: A Programmer's Perspective (Bryant & O'Hallaron)です。 プログラマの視点でハードウェアを学ぶ標準的な教科書です。 本書のPart Iを体系的に深めたい場合の第一候補です
- What Every Programmer Should Know About Memory (Ulrich Drepper): メモリ階層とキャッシュについての古典的な論文です。 2007年の文書ですが、2章の内容の原典として今も読む価値があります
- Agner Fog's optimization manuals: x86の命令レイテンシ表や最適化技法を網羅した資料です。 アセンブリレベルの最適化を行う場合に参照します
Rustの性能
- The Rust Performance Book: Rustの性能改善手法を簡潔にまとめた無料の電子書籍です。 本書のPart IIを実務面から補完します
- Rust Atomics and Locks (Mara Bos): 5章で「1冊の本になる」と書いた、アトミックとメモリオーダリングを 扱う書籍です。無料で公開されています
- The Rustonomicon:
unsafe Rustの公式ガイドです。
get_uncheckedなどを使う前に読む資料です
計測ツール
- criterion: ベンチマーク(8章)
- samply: プロファイラ(8章)
- cargo-show-asm: アセンブリ表示(8章)
- Compiler Explorer: ブラウザでアセンブリ確認(1章)
- cargo-flamegraph: フレームグラフ生成
GPU
- WebGPU仕様 / WGSL仕様: 一次情報です
- Learn wgpu: wgpuの標準的なチュートリアルです。グラフィックス寄りですが、 11章の先へ進むのに適しています
- wgpu公式サンプル: 本書のコードもここのhello-computeを出発点にしています
- CUDA C++ Programming Guide (NVIDIA): CUDAに進む場合の一次資料です。 ワープ、共有メモリ、コアレッシングなど、9〜10章の概念の NVIDIA版の詳細を学べます
- burn / candle: Rustの機械学習フレームワークです。目的が行列演算の高速化だけなら、 自作カーネルより先にこちらを検討してください
応用編の先へ
- Computer Architecture: A Quantitative Approach (Hennessy & Patterson): アーキテクチャを定量的に扱う標準的な教科書です。Part IVの内容を深められます
- Operating Systems: Three Easy Pieces (OSTEP): 仮想メモリ(14章)とOSの層(27章)を体系的に学べる、 無料公開の教科書です
- Systems Performance (Brendan Gregg): 27〜28章の実務面 (計測・OS・クラウド)を網羅した書籍です
- Programming Massively Parallel Processors (Hwu, Kirk & Hajj): Part VIのカーネル最適化をCUDAで深める標準的な教科書です
- Async Book / tokioチュートリアル: 19章の先の asyncの実務を扱います
- crossbeam: 17章で扱った ロックフリー構造の既存実装です
- HdrHistogram: 28章のレイテンシ分布の計測に広く使われるライブラリです
- iai-callgrind: 命令数に基づく、ばらつきの小さいベンチマークツールです(28章)
本書のコードについて
本書のすべての実行可能コードは、リポジトリのsrc/snippets/
(ブラウザ実行対応)とexamples/(ローカル実行、GPU含む)にあります。
数値は筆者の環境(Apple M4 / Rust Playground)での実測であり、
環境が違えば数値も変わります。手元で再計測してください。
再計測そのものが、8章で学んだことの実践です。