重力のn体問題はどのように並行して解決できますか?


回答:


27

さまざまなアルゴリズムがあります。Barnes Hutは一般的なメソッドであり、Fast Multipole Methodははるかに洗練された代替手段です。ONログNON

どちらの方法も、ノードがツリーの各レベルで最も近い隣接ノードとのみ本質的に対話するツリーデータ構造を使用します。十分な深さで一連のプロセス間でツリーを分割し、それらを最高レベルでのみ連携させることを考えることができます。

ペタスケールマシンでの FMMについて説明している最近の論文はこちらにあります


2
ツリーコードとも呼ばれるBHは、低い精度で望ましいと思われます。以下に、これらの方法を適応的に組み合わせた論文を紹介しますが、実際にこの作業を見たことはありません。
マットネプリー


8

代替ソースとして、メッシュベースのEwaldに似た方法も見ることができます。「粒子メッシュ」法(PPPMや平滑化粒子メッシュEwaldなど)の起源は、天体物理学のための銀河のシミュレーションにあります。課金への接続は、意図しない副作用でした(たまたま最終的に元の使用量を追い越しました)。

さらに最近では、高速多重極法やBarnes-Hutと同種のマルチレベル加算法に関する文献もありますが、さまざまな状況(より一般的で柔軟な形状、効率の向上など)で利点が得られる場合があります。


8

古典的な重力n体問題については、次の2つの論文が、力の評価ステップの並列実装の本質を議論するのに役立つと思います。論文ではGPUの実装について説明していますが、並列性についてはうまく説明し、アルゴリズムの詳細を提供しています。

Nyland、Harris、およびPrinsによるこの論文は、GPU用のCUDAの直接n体アルゴリズムを示しています。

横田とBarbaによるこの他の論文は、GPUコンピューティングのコンテキストでも、ツリーコードと高速多重極アルゴリズムについて良い議論があります。

n体の数値シミュレーション精度に関する質問はもう少し複雑であり、非常に多くの重要な詳細があるため、答えがいくつかの本を生み出すことがあります。最善の方法は、いくつかの書籍の参考文献を提供することだと思います。私は提案します:

Sverre J. Aarsethによる重力N体シミュレーション

HockneyとEastwoodによる粒子を使用したコンピューターシミュレーション。(PDFバージョンはありません)


4

漸近的な意味で最適ではない単純な実装アプローチが必要な場合は、オールギャザー通信操作の使用を検討する必要があります。各Nボディは他のボディの重力効果を知る必要があるため、すべてのプロセッサがデータセット全体を知ることが重要です。これが、オールギャザー操作の動作です。良い本があります:Michael J. Quinn(2004)によるMPIとOPENMPを使用したCでの並列プログラミングは、82ページでこのトピックを正確に説明しています。


3
On2

それは本当だ。ただし、前述したように、これは簡単な実装であり、必ずしも効率的な実装ではありません。
ポール

+1何らかの形で、他のすべての回答は、OPがテラまたはペタスケールのパフォーマンスを探していると仮定しています。FMMと同種は、より単純なアプローチにのみ反対します。
ステファノM

1

Google Scholarを参照し、他のコードの中でも特にHACCおよびGADGETへの参照を探してください。


2
HACCとGADGETを推奨する理由について、もう少し詳しく説明してください。
ポール

1
どちらも重力ソルバーを含む有名な宇宙論コードです。
ジェフ14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.