我有一个2D矢量,我想为2D矢量的每个元素实现变换仿函数(每个元素都是一个后缀表达式,将通过不同的线程进行评估)
如何使用Cuda推力? 我编写了一个测试代码,用于评估每个向量的总和但给出错误。 这是正确的方法吗?
struct sum_v
{
__host__ __device__ float operator()(thrust::device_vector<float> v)
{
float sum=reduce(v.begin(),v.end());
return sum;
}
};
int main(void)
{
thrust::host_vector<float> h1_vec(3);
thrust::device_vector<float> vectors[3];
vectors[0] = thrust::device_vector<float>(3);
vectors[1] = thrust::device_vector<float>(3);
vectors[2] = thrust::device_vector<float>(3);
thrust::sequence(vectors[0].begin(), vectors[0].end());
thrust::sequence(vectors[1].begin(), vectors[1].end());
thrust::sequence(vectors[2].begin(), vectors[2].end());
thrust::device_vector<float> d1_vec(3);
thrust::transform(vectors.begin(), vectors.end(),d1_vec.begin(),sum_v());
thrust::copy(d1_vec.begin(), d1_vec.end(), h1_vec.begin());
return 0;
}