【发布时间】:2013-02-01 08:40:38
【问题描述】:
如果i 是如下所示的随机游走(每个索引不是唯一的),并且有一个设备向量A 填充了零。
{0, 1, 0, 2, 3, 3, ....}
是否有可能推力可以使A[i]自动递增,操作后A可能看起来像
//2 means appears count of 0's
//1 means appears count of 1's
//1 means appears count of 2's
//2 means appears count of 3's
{2, 1, 1, 2}
我尝试过几种情况,但这些情况只有在A 是主向量时才能正常工作,我猜是因为推力是并行的,所以以前的结果不会影响新的,结果可能看起来像
//无论索引出现多少次,只计算一次
{1、1、1、1}
thrust 可以用设备向量 A 和随机游走索引向量实现我的目标吗?
【问题讨论】:
-
thrust::sort 然后thrust::reduce_by_key
-
我尝试了排序,但性能不够好,所以现在我使用“宿主向量+直方图”的方法来实现我的目标。新方法(包含设备主机开销)的执行时间比排序版本短。我对更好的解决方案很感兴趣,并在这里询问。
-
需要使用推力吗?
-
使用thrust或者cuda内核代码都可以!但是我仍然很想知道 Thrust 在使用 device_vector 时能达到多快?