並列計算と 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 台のマシンの複数コア(共有メモリ)

run(nthread=N)

スレッドと BLAS

MPI

複数のマシン(クラスタ)

run(nmpi=N, hosts=...) または comm=

MPI と相互接続

GPU

NVIDIA グラフィックスカード

eri="4c-cuda"cuda ビルド)

GPU / CUDA

これらは合成できます:大きなクラスタ実行はノード間で MPI各ノード内でスレッド、任意でノードごとに GPU を使います。入門 が、qc-rs 固有の話の前に基礎(プロセス対スレッド、共有対 分散メモリ、Amdahl の法則)を説明し、後続の章が実践的な使い方です。

通底する 1 つの考え:ハードウェアが増えても変わるのは速さ答えではない#

初期推定収束アルゴリズム経路だけを変えたのと同じく、 コア・ランク・GPU を増やしても変わるのはどれだけ速く結果を得るかだけで — 収束エネルギーは(浮動小数点の 簡約順序を除いて)同じです。これは全編で検証されます:run(nthread=1)run(nthread=4) は水のエネルギーを ビット単位で同一に与えます。

別の軸:積分戦略(eri=#

量子化学の性能は二電子積分に支配され、qc-rs はそれらをどう扱うか — メモリ内、再計算、アウトオブコア、密度 フィッティング、GPU 上 — を単一の ints(eri=...) キーワードで選ばせます。その選択は 3 つの並列レベルすべてと 相互作用するので、独立した章を設けています:ERI / J-K 戦略

準備はいいですか?何も前提としない 並列計算入門 から始めましょう。