VASPでの並列化
1 k点、54原子、、、NBANDS=152
およびを持つシステムがありNGZ=80
ます。VASPバージョン5.4.4でAIMDシミュレーションを実行しています
スーパーコンピューターには32コア/ノードがあります。これは、最新のマルチコアマシンであるInfinibandによってリンクされたLINUXクラスターです。効率的で高速な計算を得るために、パラメータを選択してリソースを要求するための最良の方法は何でしょうか。これが私が考えたいくつかのシナリオです。(効率と速度の点で)「最良の」方法は何でしょうか。
- 私がここで読んだことに基づいて
- 19バンド(152/8)のようなものをリクエストする必要があります。たぶん、NBANDS = 160を設定して、さらに20コアを要求します。
- 次に、INCARファイルでNCORE = 20を設定し、1つのノードで20コアを要求しますか?
- または、NCORE = 10に設定してから、ノードごとに2ノードと10コアのようなものを要求する方がよいでしょうか。それとも、通信オーバーヘッドが多すぎてシミュレーションが遅くなるでしょうか?
- コアの数=原子の数= 54を使用することにした場合
- NCORE = 32を設定してから、2ノードで54コアを要求しますか(1ノードで32 + 2番目で22)?または、9コア/ノードと6ノード?
- ノード全体をリクエストすることはできませんか?1ノード、32コア
- したがって、NCORE = 32に設定すると、ノード全体を要求するだけです。ただし、VASPマニュアルでは、NPAR = 1になるため、これに反対することを提案しています。
- 複数のノードにまたがるコアが相互に通信するよりも、1つのノードに32個のコアがある方が効率的であると想定するため、これは少し混乱します。
回答
VASPのベンチマークを数多く行った人として、実験的なアプローチを試してみることをお勧めします。並列化が必要な場合は、VASPによってバンドが追加されると思いますので、個人的には心配しません。ノードの物理的なレイアウト(1プロセッサで32コア、2プロセッサで16コア、単一CPUでの特別なAMDプロセッサレイアウト)は、クラスタごとに大幅に異なる可能性があり、試行せずに最適なものを知ることはできません。
MDシミュレーションを実行しているように見えるので、長いシミュレーションを実行する前に、各システムのベンチマークを行う価値があると思います。マイナーな変更では、再ベンチマークする必要はありませんが、50から150から300の原子に移行すると、理想が変わる可能性があります。妥当と思われるNCOREの全範囲で一連の迅速な計算を実行します。最良の結果を使用してください。私は最大のノードのすべての要素をチェックする傾向があります。
32コアの場合、NCORE =(1、2、4、8、16、32)を確認します。私はそれを10かそこらの幾何学的なステップに対して計時します。これは時間の無駄に思えるかもしれませんが、将来的には大幅な時間を節約できる可能性があります。
正当な理由がない限り、ほとんどの場合、ノード全体を要求することをお勧めします。周りを見回していると、最終的にはKPARオプションも表示される可能性がありますが、さまざまな意見を聞いています。個人的には、kpoint並列化を使用した場合、使用しない場合よりも良い結果が得られたことはありません。しかし、それはメモリの違いを生むかもしれません。
Tristanの提案に従って、ベンチマークの結果を投稿すると思いました。多分それは将来誰かのために役立つでしょう。MDでは10ステップしか実行しませんでした(1 fsステップサイズ、合計10 fs)。
パーセントの違いはすべて、32コアと1ノードで実行されたNCORE = 1に関連しています。64コア(NCORE = 32)の2つのノードに移動すると、33%高速化されます。
明らかに、これはクラスターによって異なる場合があります。ちなみに、これはカナダのSharcnetにあるGrahamクラスターです。カナダ人の仲間に役立つことを願っています:)
