由另一个向量的推力访问向量元素

时间:2015-07-24 07:58:51

标签: c++ vector cuda thrust

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或类似方式的方式实现这一点?

1 个答案:

答案 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的地图。

[标准免责声明:用浏览器编写,未经测试,使用风险自负]