並列計算と HPC#
Part I–III は qc-rs を動かすことを教えました。この Part は、それを速く・大きく動かすこと — 1 つ以上の CPU コア、1 台以上のマシン、または GPU を使うこと — を教えます。ゼロから書いてあります:高性能計算(HPC)の予備 知識は不要です。まず並列性とは何かから始め、qc-rs が公開する 3 つのレベルへと進みます。
注釈
始めるのにこれは不要 ここまではすべて 1 コアで問題なく動きました。計算が 1 コアには遅すぎる・大きすぎるとき — より大きな分子、 より大きな基底、多ステップの構造最適化 — にこの Part を使います。作業がノート PC に快適に収まるなら、必要になる まで Part IV は飛ばしてかまいません。
並列性の 3 つのレベル#
qc-rs は 3 つの補完的な方法で、易しい順により多くのハードウェアを使えます:
レベル |
ハードウェア |
qc-rs のノブ |
章 |
|---|---|---|---|
スレッド |
1 台のマシンの複数コア(共有メモリ) |
|
|
MPI |
複数のマシン(クラスタ) |
|
|
GPU |
NVIDIA グラフィックスカード |
|
これらは合成できます:大きなクラスタ実行はノード間で MPI、各ノード内でスレッド、任意でノードごとに GPU を使います。入門 が、qc-rs 固有の話の前に基礎(プロセス対スレッド、共有対 分散メモリ、Amdahl の法則)を説明し、後続の章が実践的な使い方です。
通底する 1 つの考え:ハードウェアが増えても変わるのは速さで答えではない#
初期推定 や 収束アルゴリズム が経路だけを変えたのと同じく、
コア・ランク・GPU を増やしても変わるのはどれだけ速く結果を得るかだけで — 収束エネルギーは(浮動小数点の
簡約順序を除いて)同じです。これは全編で検証されます:run(nthread=1) と run(nthread=4) は水のエネルギーを
ビット単位で同一に与えます。
別の軸:積分戦略(eri=)#
量子化学の性能は二電子積分に支配され、qc-rs はそれらをどう扱うか — メモリ内、再計算、アウトオブコア、密度
フィッティング、GPU 上 — を単一の ints(eri=...) キーワードで選ばせます。その選択は 3 つの並列レベルすべてと
相互作用するので、独立した章を設けています:ERI / J-K 戦略。
準備はいいですか?何も前提としない 並列計算入門 から始めましょう。