CUDA的推力:: inclusive_scan()是否有'init'参数?

时间:2013-01-13 18:26:59

标签: cuda gpgpu thrust

根据CUDA的Thrust library documentationthrust::inclusive_scan() 4 参数:

OutputIterator thrust::inclusive_scan(InputIterator       first,
                                      InputIterator       last,
                                      OutputIterator      result,
                                      AssociativeOperator binary_op 
                                     )  

然而在使用演示中(在相同的文档中),它们传递 5 参数。额外的第4个参数作为扫描的初始值传递(与thrust::exclusive_scan()中的完全相同):

int data[10] = {-5, 0, 2, -3, 2, 4, 0, -1, 2, 8};
thrust::maximum<int> binary_op;
thrust::inclusive_scan(data, data + 10, data, 1, binary_op); // in-place scan

现在,我的代码只会编译传递4个参数(传递5给出错误no instance of overloaded function "thrust::inclusive_scan" matches the argument list),但我碰巧需要初始化我的滚动最大值,就像在示例中一样。

有人可以澄清如何初始化包容性扫描吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

您似乎无法理解包容性扫描操作是什么。没有初始化包容性扫描的事情。根据定义,包容性扫描的第一个值始终是序列的第一个元素。

所以序列

 [ 1, 2, 3, 4, 5, 6, 7 ]

包容性扫描

[ 1, 3, 6, 10, 15, 21, 28 ]

和独占扫描(初始化为零)是

[ 0, 1, 3, 6, 10, 15, 21 ]