我有一个这样的数组:
数组:0 1 0 0 1 0 1
指数:0 1 2 3 4 5 6
我希望收集" 1"的所有位置进入这样的结果数组:
1 4 6
推力有一个"计数"功能,但它只能计算" 1"
的数量那么最快的方法是什么?推力是否有一些功能来处理这个问题?如果没有,如何以高效的方式实现CUDA?
我自己的想法:首先使用prefix-sum获取偏移数组,然后添加另一个内核,其中每个线程将其id写入resultArray [offset [id]],如果其数据数组值为" 1&#34 ;。我觉得我的想法太丑了。有更好的方法吗?
答案 0 :(得分:3)
Thrust有一个例子正是这样做的:
https://github.com/thrust/thrust/blob/master/examples/counting_iterator.cu