首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用GPU值得吗?

利用GPU值得吗?
EN

Stack Overflow用户
提问于 2012-09-26 13:22:25
回答 2查看 594关注 0票数 3

我想计算受某些势能约束的粒子的轨迹,这是一个典型的N体问题。我一直在研究利用GPU的方法(例如CUDA),它们似乎对大N (20000)的模拟有利。这是有道理的,因为最昂贵的计算通常是求力。

然而,我的系统将具有“低”N(小于20),许多不同的潜力/因素,以及许多时间步长。是否值得将此系统移植到GPU上?

根据Fast N-Body Simulation with CUDA的文章,对于不同的计算(如加速度和力),使用不同的内核似乎是有效的。对于低N的系统,似乎复制到设备/从设备复制的成本实际上是很大的,因为对于每个时间步,必须为每个内核从设备复制和检索数据。

任何想法都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-26 19:53:16

如果你需要并行模拟的实体少于20个,我只会在普通的多核CPU上使用并行处理,而不会费心使用GPU。

使用多核CPU将更容易编程,并避免将所有操作转换为GPU操作的步骤。

此外,正如您已经建议的那样,使用GPU的性能增益将很小(甚至是负的),因为进程数量很少。

票数 3
EN

Stack Overflow用户

发布于 2012-09-26 17:29:07

不需要将结果从设备复制到主机,并在时间步长之间来回复制。只需在GPU上运行整个模拟,并仅在计算了几个时间步长后才将结果复制回来。

对于多少个不同的势,你需要运行模拟?是否足够使用N-body示例中的结构,并且仍然加载整个GPU?

如果不是,并且假设潜在的计算是昂贵的,我认为最好为每一对粒子使用一个线程,以便使问题足够并行。如果对每个潜在设置使用一个块,则可以将力写出到共享内存__syncthreads(),并使用块线程的子集(每个粒子一个)对力求和。__syncthreads(),然后继续下一个时间步。

如果潜在的计算并不昂贵,那么可能值得先探索一下模拟的主要成本在哪里。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12595009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档