减少奇数个元素CUDA

时间:2015-09-28 03:12:09

标签: cuda parallel-processing gpu-programming reduction

似乎只能对奇数个元素进行缩减。例如,它需要总结数字。当我有多个元素时,它将是这样的:

1 2 3 4
1+2
3+3
6+4

但我有什么可以做的,例如1 2 3 4 5?最后一次迭代是三个元素6 + 4 + 5的总和还是什么?我看到同样的问题here,但找不到答案。

1 个答案:

答案 0 :(得分:4)

并行缩减将首先添加元素对:

1  1+3   4+6
2  2+4
3
4

具有奇数个元素的示例通常会实现为:

1  1+4  5+3  8+7
2  2+5  7+0
3  3+0
4  0+0
5
0
0
0

也就是说,通常并行缩减将使用2次幂的线程集合,并且最多一个线程块(最后一个)将具有少于完整的数据补充。处理此问题的常用方法是将数据填零到线程块大小。如果你研究cuda parallel reduction示例代码,你会发现这个例子。