2

nbodies の束を持つことになる問題があります - それぞれの動きは既存のデータによって事前に記述されていますが、ボディが別のボディの範囲内にある場合、それに関する特定のプロパティが変化します。この質問のために、あなたが他の体の周りにいた時間をカウントするカウンターを体ごとに持っていると仮定します. つまり、基本的に t = 0 から開始し、本体 2 の周りに 5 秒を費やすため、t は現在 5 です。これについてどうするのが最善の方法なのか疑問に思っています。まだデータはありませんが、 CUDA/OpenCL のようなものを探索するのが適切かどうか、またはマルチコア CPU マシン全体でこれを最適化することに固執する必要があるかどうか疑問に思っています。これがシミュレートされるデータ量は約 500 体であり、それぞれが 30 日間にわたって秒単位で記述された動きを持っているため、

4

1 に答える 1

4

Brute force nbody は、「恥ずかしいほど並列」であるため、GPU に確実に適しています。各物体間相互作用の計算は、互いに完全に独立しています。とにかくすべてがタイムステップベースで行われるため、他の物体の「存在」で費やされた時間を追跡することを含むバリエーションは、既存の物体間力の計算に簡単に追加できます。

nbody のサンプル CUDA コードを次に示します。

于 2012-12-05T08:37:51.213 に答える