並列計算
Important
この章を読む前に
この章を読むには、以下の章を先に読んでおく必要があります。
また、並列化の具体例として第2部・第3部の内容を使用するため、それらの章を読んでおくとより実践的な理解が得られます。
物理シミュレーションの規模が大きくなると、単一のCPUコア(スレッド)での計算には限界が訪れます。 現代のコンピュータはマルチコア化が進んでおり、計算資源を最大限に活用するためには並列計算 (Parallel Computing) が不可欠です。
Rustは「恐れを知らない並列性 (Fearless Concurrency)」を標榜しており、所有権と型システムによって、データ競合 (Data Race) などの並列プログラミングにおける典型的なバグをコンパイルタイムで防ぐことができます。 本章では、数値計算を高速化するための並列化手法と、そのパフォーマンスを評価する方法を学びます。
本章の構成
-
Rayonによるデータ並列化 Rustで最も広く使われている並列計算ライブラリ
Rayonを使い、既存のループ処理をいかに簡単に並列化できるかを学びます。 -
SIMD最適化 CPUの特殊な命令セットを用いて、一度に複数のデータを処理する SIMD (Single Instruction, Multiple Data) について解説します。
-
パフォーマンス測定とプロファイリング 最適化の指針を得るために、ベンチマークの取り方やボトルネックの特定方法を学びます。
-
GPU計算への展望 さらに大規模な並列計算を可能にする GPU (GPGPU) 計算の基本概念と、Rustにおける展望を紹介します。