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

How to copy values from uint2 to one vector in thrust?

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

您需要声明某种函数对象(它可以是 UnaryFunctionBinaryFunction,它将 select 来自 uint2 的第二个元素。您可以使用 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);

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