在Cuda中减少任意数量的元素

时间:2013-11-18 13:23:11

标签: cuda gpu reduce

如何实现以下链接中给出的代码的第7版: http://www.cuvilib.com/Reduction.pdf
对于大小是任意数字的输入数组,换句话说,不是2的幂?

1 个答案:

答案 0 :(得分:5)

版本7已经处理了任意数量的元素。

也许不应该参考cuvilib链接,而应该查看相关NVIDIA CUDA reduction sample的链接。它主要包括您正在使用的pdf文件,还包括实现缩减1到7的示例代码(标记为reduce0reduce6

如果您研究文档中缩减7的描述,您将看到初始缩小步骤是通过while循环处理的,这会导致网格循环通过内存。当它遍历内存时,每个线程都在累积多个缩减元素。

这个初始while循环不限于特定的问题大小(例如2的幂)。

由于通过此while循环初始处理缩减,后续步骤可以在线程块级别以超高效率2完成,如之前在该文档中所讨论的那样。但初始输入集大小不限于2的幂。

请研究CUDA样本中给出的代码(reduce6)。