首页 > 解决方案 > 跨块的 CUDA 总和

问题描述

您好,我是 cuda 编程的新手,但遇到了问题。

我有一个变量,让我们调用foo存储在每个块的共享内存中,从一个块到另一个块具有不同的值。而且我只希望一个线程将所有这些跨块相加。我想将foo发送到全局内存然后计算总和,但是有没有什么函数可以更快地做到这一点?

谢谢你的帮助。

标签: cudagpu

解决方案


让每个块中的一个线程执行操作会更快atomicAdd(),将每个块的值添加到全局内存中的单个网格范围的变量中。

请参阅CUDA C 编程指南相关部分

要更深入地探索优化归约(= 求和),尽管不一定是您想要执行的,请查看 Mark Harris 的演示文稿:在 CUDA 中优化并行归约


推荐阅读