你好,我是cuda编程的新手,但是遇到了问题。
我有一个变量,让我们调用存储在每个块共享内存中的 foo ,每个块的值都不同。而且我只希望一个线程可以将所有这些求和求和。我以为将 foo 发送到全局内存,然后计算总和,但是有没有函数可以更快地做到这一点?
感谢您的帮助。
答案 0 :(得分:2)
在每个块中只有一个线程执行atomicAdd()
操作,将每个块的值添加到全局内存中的单个网格范围变量会更快。
请参阅relevant section中的CUDA C Programming guide。
要深入研究优化缩减(=求和),尽管不一定要执行该优化,请查看Mark Harris的演示文稿:Optimizing Parallel Reduction in CUDA。