粒子分解およびドメイン分解の並列化アルゴリズムの長所と短所は何ですか?


15

GromacsやDL_POLYなどのいくつかのソフトウェアパッケージを使用して、分子動力学(MD)シミュレーションを実行しています。

Gromacsは、粒子分解アルゴリズムとドメイン分解アルゴリズムの両方をサポートするようになりました。デフォルトでは、Gromacsシミュレーションはドメイン分解を使用しますが、長年、最近まで、粒子分解はGromacsで実装された唯一の方法でした。Gromacsの論文の1つ(DOI 10.1002 / jcc.20291)で、著者は粒子分解の最初の選択の理由を示しています。

「初期の設計決定は、プロセッサに作業を分散するためにドメイン分解ではなく粒子分解を使用する選択でした。後者の場合、空間ドメインはプロセッサに割り当てられます。ドメイン分解は、線形システムのサイズが相互作用の範囲を大幅に超える場合にのみ適切な選択です(分子動力学ではほとんどありません)。粒子分解では、各プロセッサが力と座標/速度の更新を計算しますプロセッサに均等に分散された事前計算されたネイバーリストを使用して、割り当てられたパーティクルの一部に対して。Fj粒子 と間のペア相互作用から生じるは、粒子と 両方の速度更新に必要です。jj、一度だけ計算され、他のプロセッサに伝達されます。すべてのプロセッサは、ストレージを必要な座標に制限するのではなく、システムの完全な座標セットをローカルメモリに保持します。これはより単純で通信のオーバーヘッドを節約しますが、メモリクレームは通常、何百万ものパーティクルであっても制限要因ではありません。一方、近隣リストは、最大1000倍の数のパーティクルを含むことができ、プロセッサに分散されます。通信は本質的に、座標の送信とプロセッサリングの周りのタイムステップごとに1回の強制に制限されます。これらの選択肢は、長期にわたって堅牢であり、最新のプロセッサクラスタに簡単に適用できることが実証されています。」

「ドメイン分解は、線形システムのサイズが相互作用の範囲を大幅に超える場合にのみより良い選択です。これは分子動力学ではめったにありません」という文の「線形システムのサイズ」とはどういう意味ですか?上記の段落から、粒子の分解には、ドメインの境界を越えて移動する粒子を処理する必要がないという利点があります。むしろ、システム構成全体を保存するのに十分なメモリが各プロセッサに必要です。したがって、ドメイン分解は非常に好ましくないように見えますが、粒子分解は非常に好ましいように見えます。

これは非常に複雑な質問(そしておそらく多くの本の主題)であると確信していますが、基本的に、粒子の分解が非常に好ましいと思われる場合、ドメイン分解を使用する必要があるのはなぜですか? システムのサイズが非常に大きい場合(各プロセッサに構成全体を保存するのが困難または不可能になる場合)、ドメインの分解は適切ですか?上記の引用された段落に基づいて、ドメイン分解が最近、Gromacsのデフォルトの並列化アルゴリズムである理由がわかりません。

DL_POLY(バージョン4)もドメイン分解を使用しているようです。バージョン4のマニュアルから:

「この方法での構成データの分割は、シミュレーションセル内の原子の位置に基づいています。このようなシステムデータの幾何学的割り当ては、DDアルゴリズムの特徴です。この戦略が効率的に機能するために、システムは合理的に均一な密度を持たなければならないので、各プロセッサには原子データのほぼ等しい部分が割り当てられます(可能な限り)。この方法は概念的には簡単ですが、プログラミングは難しく、効率が最も高い大規模なシミュレーションに特に適しています。

...

DD戦略の場合、SHAKE(RATTLE)アルゴリズムはDL_POLY ClassicのReplicated Dataメソッドよりも単純です。この場合、原子位置のグローバルな更新(マージとスプライシング)が必要です。

これにより、実装が困難になる可能性がありますが、より効率的になる可能性があるため、ドメイン分解が良好であるかのように聞こえます。

一方、以前のバージョン(DL_POLY Classic)は複製されたデータの並列化を使用していました。これは、パーティクル分解の別名と思われます。そのバージョンのマニュアルから:

レプリケートデータ(RD)戦略は、MDで並列化を実現するいくつかの方法の1つです。その名前は、並列コンピューターの各ノード上の構成データの複製に由来します(すなわち、原子座標、速度 定義する配列、およびを強制しますすべてrvfNシミュレートされたシステム内の原子は、すべての処理ノードで再現されます)。この戦略では、力の計算と運動方程式の統合のほとんどは、ノード間で簡単かつ均等に共有でき、大部分は各ノードで独立して処理できます。この方法は、プログラムが比較的簡単であり、かなり効率的です。さらに、単一のプロセッサで非常に簡単に実行できるように「折りたたみ」できます。ただし、この戦略はメモリを大量に消費し、通信のオーバーヘッドが高くなる可能性がありますが、全体的に見て、幅広いアプリケーションで成功することが実証されています。

この段落は一般に、この質問の最初の段落と一致しているように見えますが、複製されたデータ/粒子の分解には「高い通信オーバーヘッド」があると書かれています。Gromacsの論文のパラグラフは、その逆を言っているようです。つまり、粒子分解は、ドメイン分解よりも通信のオーバーヘッドが少ないため、好ましいと言えます。

何か考えはありますか?

回答:


10

粒子とドメインの分解は、限られた範囲の相互作用を持つシステムの力の計算を高速化する2つの主要な方法-Verlet隣接リストとセルリンクリストに直接接続されています。詳細を知りたい場合は、Allen and Tildesleyのかなり良い本があります。これは、液体のコンピューターシミュレーションと呼ばれ、多くの人が分子動力学とモンテカルロ研究の「聖書」と考えています。次に、Griebel、Knapek、およびZumbusch による分子動力学の数値シミュレーションがあります。これは、MDの並列実装のためのさまざまな手法の詳細です。

基本的に、Verletリストは、指定された半径内の指定された原子/分子(または一般的な粒子)のすべての近傍のリストを作成します。後で、力を計算するために原子のペアを調べているときに、リストが調べられます。リストが作成されると、どの粒子がどの粒子に近いかが明らかになり、評価のために異なるプロセッサに分散できます。このリストは、を作成するのに必要なため(パーティクルの可能性のあるすべてのパリが検査されます)、時々のみ作成し、最新の状態に保つためのいくつかの巧妙なテクニックを使用します。すでに構築されたリストが、評価を強制します。O N ON2ON

セルリンクリストは、相互作用ポテンシャルのカットオフ距離よりも大きい同じサイズのセルにスペースを分割し、各パーティクルは、該当するセルに関連付けられたリストに配置されます。このプロセスは取ります。次に、特定のパーティクルの隣接セルは、同じセルまたはその隣接セルでのみ検索されます。各セルには一定数の近傍(たとえば、3-Dの場合は26)があるため、力は評価されます。しかし、ここで定数乗数は、このアルゴリズムをVerletリスト法よりも悪化させるほど大きくすることができます。しかし、十分な大きさのO N NONON Nスケーラビリティが向上します。したがって、線形サイズの引数。ドメイン分解法は、セルリンクリスト法の単純な拡張です-セルは異なるCPUに分割されます。

ドメイン分解の問題は、あるセルから別のCPUが処理する別のセルに粒子が移動するときに通信する必要があることです。これは、粒子が平衡位置よりも遠くに移動する傾向があるシミュレーション温度が高い場合、または粒子の流れがある場合に問題になる可能性があります。また、ドメイン境界上のセルからの情報は、各反復で隣接ドメインに転送する必要があります。しかし、これはすべてローカル同期通信であり、非常に効率的に行うことができます。

複製されたデータは最も簡単なアプローチですが、残念ながら、すべてのステップですべての位置と速度の情報をグローバルに同期する必要があります。並列処理の目標の一つは、各CPUが成立するようなデータの分布であるが、これは実際にうまくスケールしないと非常に大規模なシステムのためのメモリのグローバルammountは、CPUの数が使用されるデータ構造の倍の大きさであり、以下のグローバルなデータ量よりも。

要約すると、シミュレートされるすべてのシステムに適した「1つのサイズですべてに適合する」方法は存在しません。ほとんどの場合、システムのジオメトリから最適な並列化戦略を導き出すことができ、その場合に適切なMDコードを選択できます。これらはすべて、同じ基になる力場と積分器を実装します。


素晴らしい答えです!均一な原子分布を持つことは一般的ですか?均一でない分布でも同じように機能しますか?
フクルス

3
シミュレートされるシステムに依存します。液体、気体、またはバルク結晶の場合、原子はより均一に分布しません。フェーズまたは高度にローカライズされた粒子凝集体がある場合-それほどではありません。非一様分布の場合、何らかの適応アプローチをとらない限り、ドメイン分解の効率は低下する可能性があります。
フリストIliev

2
ON2ONログNorON

4

「ドメイン分解は、線形システムのサイズが相互作用の範囲を大幅に超える場合にのみ適切な選択であり、これは分子動力学ではめったにありません」というGROMACS論文の著者は、近隣リストの空間サイズが1 nmのオーダーで、シミュレーションセルが数ナノメートルしかない場合、ドメイン分解のオーバーヘッドは大きすぎます。同様に、粒子分解におけるすべてからすべてへの情報の分配を受け入れ、ドメイン分解のためのすべての簿記に時間を費やす必要はありません。

GROMACSが実装したパーティクル分解の問題は、各プロセッサに割り当てられたパーティクルが時間とともに拡散することでした。各相互作用の計算の責任は初期位置によって固定されていたため、拡散により、隣接リストで記述された合計計算が一定であっても、各プロセッサが隣接リストを構築するために知る必要がある合計スペースのボリュームが徐々に増加しました。実際には、データと通信の局所性をリセットするために、定期的にシミュレーションを再起動します。

「粒子の分解には、ドメインの境界を越えて移動する粒子を処理する必要がないという利点がある」という仮定は、シミュレーションの時間スケールで拡散が大きい場合には当てはまりません。

ドメイン分解は、拡散とともに相互作用の責任を移行することにより、この「事前」を処理し、それにより各プロセッサーのデータの局所性を改善し、通信量を最小化します。

免責事項:私はGROMACSの開発を手伝い、おそらく来週の粒子分解の実装を破ります;-)


0

フリスト・イリエフの答えに加えたいと思います。彼の投稿のほとんどは計算の複雑さについて述べていますが、並列化に関しては、通信の複雑さは少なくとも同じくらい重要であり、それがドメイン分解の主な理由です。

最近の並列マシンには通常、何らかのトーラストポロジがあります。つまり、各CPUには、非常に高速に通信できる「隣接」CPUがいくつかあります。隣人ではないCPUとの通信はよりコストがかかります。したがって、隣接するCPUとのみ通信する必要があるアルゴリズムを使用することは常に有利です。

POP2

POP

OP

ただし、不均一なシステムは聞こえるほど一般的ではなく、真空中で何かをシミュレートする場合、または暗黙的な溶媒を使用する場合にのみ発生することに注意してください。結晶と液体の密度は、ドメイン分解を実行するのに十分に近いです。


これは非常に良い答えです。精度を追加したかっただけです。(そのような離散要素法など)のアルゴリズム-ようにMDに基づく方法を使用して粒状フローシミュレーションは、多くの場合...あなたがそれらに満ちている粒子と他のほとんどのボイドある領域を有する例が発生した
BLAB

相互作用パートナーがランダムに分散していることは、粒子分解の要件ではありません。共通の相互作用近傍を共有するため、空間的にコンパクトな粒子のグループに分解することから始めることができます。最終的に拡散は、分布がランダムになることを意味します。そのため、上記のGROMACS粒子分解シミュレーションが定期的に再起動され、分解の局所性が更新されます。
マブラハム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.