如何将uint2中的值复制到推力中的一个向量?

时间:2017-02-13 13:24:41

标签: vector cuda thrust

我在vector<uint2> results (size)中有价值我只想将结果值复制到vector<int> count (size)。如何使用thrust::transform函数执行此操作?

1 个答案:

答案 0 :(得分:1)

您需要声明某种函数对象(它可以是UnaryFunctionBinaryFunction,它将从uint2中选择第二个元素。如果启用{{1,则可以使用lambda在nvcc中:

--expt-extended-lambda

您可以改为使用函数对象:

auto selector = [&]  __device__ (const uint2& pair) { return pair.y; };

然后在struct Selector { __host__ __device__ unsigned int operator()(const uint2& pair) { return pair.y; } }; 中使用它:

thrust::transform

thrust::transform(results.begin(), results.end(), count.begin(), selector);