如何使用推力对2D矢量进行操作?

时间:2013-06-10 14:09:53

标签: cuda thrust

我有一个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;

}

0 个答案:

没有答案