回答:
さまざまなアルゴリズムがあります。Barnes Hutは一般的なメソッドであり、Fast Multipole Methodははるかに洗練された代替手段です。
どちらの方法も、ノードがツリーの各レベルで最も近い隣接ノードとのみ本質的に対話するツリーデータ構造を使用します。十分な深さで一連のプロセス間でツリーを分割し、それらを最高レベルでのみ連携させることを考えることができます。
高速多重極法を見てください。非常にスケーラブルでです。精度とコストのトレードオフが可能です。 GPUクラスターで42 Tflopsで実行される例を次に示します。
古典的な重力n体問題については、次の2つの論文が、力の評価ステップの並列実装の本質を議論するのに役立つと思います。論文ではGPUの実装について説明していますが、並列性についてはうまく説明し、アルゴリズムの詳細を提供しています。
Nyland、Harris、およびPrinsによるこの論文は、GPU用のCUDAの直接n体アルゴリズムを示しています。
横田とBarbaによるこの他の論文は、GPUコンピューティングのコンテキストでも、ツリーコードと高速多重極アルゴリズムについて良い議論があります。
n体の数値シミュレーションの精度に関する質問はもう少し複雑であり、非常に多くの重要な詳細があるため、答えがいくつかの本を生み出すことがあります。最善の方法は、いくつかの書籍の参考文献を提供することだと思います。私は提案します:
Sverre J. Aarsethによる重力N体シミュレーション
HockneyとEastwoodによる粒子を使用したコンピューターシミュレーション。(PDFバージョンはありません)
漸近的な意味で最適ではない単純な実装アプローチが必要な場合は、オールギャザー通信操作の使用を検討する必要があります。各Nボディは他のボディの重力効果を知る必要があるため、すべてのプロセッサがデータセット全体を知ることが重要です。これが、オールギャザー操作の動作です。良い本があります:Michael J. Quinn(2004)によるMPIとOPENMPを使用したCでの並列プログラミングは、82ページでこのトピックを正確に説明しています。