如何实现以下链接中给出的代码的第7版:
http://www.cuvilib.com/Reduction.pdf
对于大小是任意数字的输入数组,换句话说,不是2的幂?
答案 0 :(得分:5)
版本7已经处理了任意数量的元素。
也许不应该参考cuvilib链接,而应该查看相关NVIDIA CUDA reduction sample的链接。它主要包括您正在使用的pdf文件,还包括实现缩减1到7的示例代码(标记为reduce0
到reduce6
)
如果您研究文档中缩减7的描述,您将看到初始缩小步骤是通过while循环处理的,这会导致网格循环通过内存。当它遍历内存时,每个线程都在累积多个缩减元素。
这个初始while循环不限于特定的问题大小(例如2的幂)。
由于通过此while循环初始处理缩减,后续步骤可以在线程块级别以超高效率2完成,如之前在该文档中所讨论的那样。但初始输入集大小不限于2的幂。
请研究CUDA样本中给出的代码(reduce6
)。