如何将值从 uint2 复制到推力中的一个向量?
How to copy values from uint2 to one vector in thrust?
我在 vector<uint2> results (size)
中有值 我只想将 results.y 的值单独复制到 vector<int> count (size)
。我如何使用 thrust::transform
函数执行此操作?
您需要声明某种函数对象(它可以是 UnaryFunction
或 BinaryFunction
,它将 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);
我在 vector<uint2> results (size)
中有值 我只想将 results.y 的值单独复制到 vector<int> count (size)
。我如何使用 thrust::transform
函数执行此操作?
您需要声明某种函数对象(它可以是 UnaryFunction
或 BinaryFunction
,它将 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);