database - NBody 模拟 - 适当的设计方法

标签 database cuda opencl cpu gpu

我遇到一个问题,我将拥有一堆 nbody - 每个物体的运动都是由现有数据预先描述的,但是当一个物体处于另一个物体的范围内时,它的某些属性会发生变化。为了解决这个问题,我们假设每个物体都有一个计数器,用于计算您在其他物体周围的时间。所以基本上你从 t = 0 开始,你在 body 2 周围花了 5 秒,所以你的 t 现在是 5。我想知道我应该采取什么最好的方法,我还没有数据,但我只是想知道我是否适合探索像 CUDA/OpenCL 这样的东西,或者我应该坚持在多核 cpu 机器上优化它。因为要模拟的数据量约为 500 个物体,每个物体都有 30 天内精确到秒的运动描述,因此每个物体有 43200 个数据点。

最佳答案

蛮力 nbody 绝对适合 GPU,因为它是“令人尴尬的并行”。每个 body 与 body 之间的交互计算完全独立于任何其他计算。您的变体包括跟踪其他物体“存在”所花费的时间,这将是对现有 body 对 body 力计算的直接补充,因为无论如何一切都是在时间步长的基础上完成的。

Here's some sample CUDA code for nbody .

关于database - NBody 模拟 - 适当的设计方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13718981/

相关文章:

c - OpenCl 内核返回异常巨大的数字

database - 如何将现有的 sqlite 数据库表转换为 fts3 表?

安卓 SQLite : Replace old database with a new one or use migration scripts

c++ - OpenCL 不允许我选择设备

linux - 无法插入 'nvidia_352' : No such device

c++ - 你如何使用CUFFT的批处理模式?

java - Jocl与装置裂变

SQL将日期时间的格式更改为特定样式

java - 从java代码加载文件到数据库

c - 使用cuda编程进行奇偶排序