CUDA:同步全局内存写入&具有计算能力的阅读1.1

时间:2013-02-22 09:52:12

标签: c++ c cuda gpgpu

好吧,在nVidia论坛上找到了解决方案(https://devtalk.nvidia.com/default/topic/458062/atomicadd-float-float-atomicmul-float-float-/)。

感谢。

2 个答案:

答案 0 :(得分:0)

首先,这段代码是一堆乱重的乱码,让调试变得非常痛苦。找出哪些子表达式是冗余的,并将它们分成不同的变量,以便您的代码变得更加清晰。否则,就这个代码寻求帮助同样有意义,因为它要求帮助赢得彩票。没有人会费心阅读你的代码,因为这是一个眼睛。

运行单线程解决方案。使用分析器确定此代码的哪些部分最适合并行化,否则您的优化只是猜测,您无法用可测量的术语表达。我猜想,一旦你运行单线程解决方案,你就可以在每个核心上并行运行相同的解决方案,在独立的值范围内获得相当好的性能,因此几乎不需要同步。

答案 1 :(得分:0)

使用Atomic Functions可以实现序列化。

Compute Capability 1.1不支持atomicAdd()用于浮点数,但任何原子操作都可以基于atomicCAS()(比较和交换)实现。