cuda - 跨块的 CUDA 总和
问题描述
您好,我是 cuda 编程的新手,但遇到了问题。
我有一个变量,让我们调用foo存储在每个块的共享内存中,从一个块到另一个块具有不同的值。而且我只希望一个线程将所有这些跨块相加。我想将foo发送到全局内存然后计算总和,但是有没有什么函数可以更快地做到这一点?
谢谢你的帮助。
解决方案
让每个块中的一个线程执行操作会更快atomicAdd()
,将每个块的值添加到全局内存中的单个网格范围的变量中。
请参阅CUDA C 编程指南的相关部分。
要更深入地探索优化归约(= 求和),尽管不一定是您想要执行的,请查看 Mark Harris 的演示文稿:在 CUDA 中优化并行归约。
推荐阅读
- java - 哪个单元测试更好地为 Java 中的命令模式添加
- screen-scraping - 试图获取数组中的所有项目
- javascript - 如何在nodejs中使用递归遍历每个元素?
- php - 基于自定义字段的 WooCommerce 产品变化价格
- javascript - 如何断言对作为属性传递的类的方法的调用
- sparql - 创建一个从 `rdf:Bag` 中提取信息而不丢失信息的 SPARQL 查询
- java - 如何计算数据的平均值
- c# - SOAP 响应 .NET 中的部分反序列化 XmlArray
- html - 将 CSS 百分比宽度指定为视口宽度的函数
- c++ - 运算符<<重载决议(C++)