2016-07-16 6 views
-1

B要素を持ちダブルタイプのCUDAでベクトル(x_dev)を持っています。 私は、次の要素から各要素を減算し、ベクトルを上書きするための最良の方法を探しています。 (私は最後の要素については気にしません)。基本的には、CUDAでベクトルの要素を互いに引き離します。

、このC++コードの対応:

for(int i = 0; i < B-1; i++)       
    x_dev[i] = x_dev[i] - x_dev[i+1]; 

答えて

1

あなたはthrust::transform

thrust::transform(x.begin(), x.end()-1, x.begin()+1, x.begin(), _1 - _2); 
+0

感謝を使用することができますが、私は x_devベクターはいえ、私のコードでは、二重のように定義され、このエラーが出ます! エラー: 'x_dev'のメンバ 'begin'を要求しています。これは 'double *'型ではありません。 エラー: 'x_dev'のメンバー 'end' ' エラー:' x_dev 'のメンバ' begin 'を要求します。これは、' double * '型ではありません。 エラー:' x_dev 'のメンバ' begin ' ' エラー:' _1 'はこのスコープ内で宣言されていません エラー:' _2 'はこのスコープ内で宣言されていません – NEO

+0

これを読んでみてください。 https://github.com/thrust/thrust/wiki/Quick-Start-Guide – kangshiyin

+0

ああ、あなたが今何を言っているのか分かります。私のベクトルはcuBlas関数の出力です。最初は私が必要とするようですdevice_vectorを作成し、そのデータをコピーします。そうですか? – NEO

関連する問題