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 回答