【发布时间】:2018-01-07 10:06:13
【问题描述】:
我想计算受特定势能影响的粒子的轨迹,这是一个典型的 N 体问题。我一直在研究利用 GPU(例如 CUDA)的方法,它们似乎有利于大 N(20000)的模拟。这是有道理的,因为最昂贵的计算通常是寻找力。
但是,我的系统将具有“低”N(小于 20)、许多不同的潜力/因素以及许多时间步长。将此系统移植到 GPU 是否值得?
根据Fast N-Body Simulation with CUDA 的文章,似乎对于不同的计算(例如加速度和力)有不同的内核是有效的。对于具有低 N 的系统,似乎从设备复制到/从设备的成本实际上是巨大的,因为对于每个时间步,必须为每个内核从设备复制和检索数据。
任何想法将不胜感激。
【问题讨论】:
-
GFOR 循环正是针对这类问题(数据量小但迭代次数多)。在 ArrayFire 中查看(我是其中一员):accelereyes.com/arrayfire/c/page_gfor.htm
-
请注意,在即将推出的 C++17 中,您可能可以使用
parallell_for等中的相同代码和不同属性来试验这两个选项。
标签: cuda gpu simulation