在Thrust
我有三个设备向量
device_vector<int> ID(N)
device_vector<float> F(M),Y(N)
通常M<<N
(但这不重要)。 ID
的所有值都在0...M-1
范围内。
我现在想为所有Y[i] = F[ID[i]]
分配i=0...N-1
。如果我正确理解了Thrust,我就无法使用for_each
和一些仿函数来做到这一点。有没有办法以我可以使用thrust::transform
或类似方式的方式实现这一点?
答案 0 :(得分:3)
您可以使用thrust:gather
执行此操作,例如:
device_vector<int> ID(N);
device_vector<float> F(M),Y(N);
thrust::gather(ID.begin(), ID.end(), F.begin(), Y.begin());
在通话中,ID
是用于收集F
中的值并将其写入Y
的地图。
[标准免责声明:用浏览器编写,未经测试,使用风险自负]