C++ 在CUDA中,向量元素之间的相减

C++ 在CUDA中,向量元素之间的相减,c++,cuda,C++,Cuda,我在CUDA中有一个向量(x_dev),它有B个元素,是双类型的。 我正在寻找最好的方法,从下一个元素中减去每个元素,然后覆盖向量。 (我不关心最后一个因素) 本质上,这个C++代码的对应关系: for(int i = 0; i < B-1; i++) x_dev[i] = x_dev[i] - x_dev[i+1]; for(int i=0;i

我在CUDA中有一个向量(
x_dev
),它有B个元素,是双类型的。 我正在寻找最好的方法,从下一个元素中减去每个元素,然后覆盖向量。 (我不关心最后一个因素)

本质上,这个C++代码的对应关系:

for(int i = 0; i < B-1; i++)                           
    x_dev[i] = x_dev[i] - x_dev[i+1];
for(int i=0;i
您可以使用


谢谢,但是我得到了这个错误x_dev vector在我的代码中被定义为double!错误:请求“x_dev”中的成员“begin”,该成员为非类类型“double*”错误:请求“x_dev”中的成员“end”,该成员为非类类型“double*”错误:请求“x_dev”中的成员“begin”,该成员为非类类型“double*”错误:请求“x_dev”中的成员“begin”,属于非类类型“double*”的错误:“\u 1”未在此作用域中声明错误:“\u 2”未在此作用域中声明您可能希望阅读此错误。哦,我明白你现在说的了。问题是我的向量是一个cuBlas函数的输出。所以我似乎首先需要创建一个设备向量并将数据复制到其中,对吗?不需要复制。您想阅读所有文档吗
thrust::transform(x.begin(), x.end()-1, x.begin()+1, x.begin(), _1 - _2);