推力装置ベクトルを使用しない通常のCUDAコードを使用してカーネルを作成しました。カーネルは、デバイス上の配列、例えば配列Xに格納されたいくつかの結果を出力します。私は今、Xを減らしたいと思います。最初にXをスラストにコピーせずにthrust :: reduction関数を使用する方法はありますか:: device_vector変数?device_vectorsを使用しないでCuda thrust?
0
A
答えて
3
これを行う伝統的な方法は、デバイスポインタをthrust::device_ptr
にラップし、それを推力アルゴリズムに渡すことです。 Thrustのタグベースのテンプレートモデルは、コールで提供される入力シーケンスのタイプのためにデバイス実行が確実に行われます。
#include <thrust/device_ptr.h>
#include <thrust/reduce.h>
int* X;
cudaMalloc((void **)&X, sizeof(int) * size_t(N));
// Do stuff with X
thrust::device_ptr X_ptr(X);
int result = thrust::reduce(X_ptr, X_ptr+N);
実行ポリシーの概念が導入されました。これにより、device_ptr
を使用してデバイスアドレスを明示的に折り返す必要がなくなります。だからではなく、あなたが持っているとどのコードスタイル推力のバージョンによって導かれるべきであるあなたがこれを行うことを選択する方法入力イテレータはデバイス上にあることを示していると
#include <thrust/reduce.h>
#include <thrust/execution_policy.h>
int* X;
cudaMalloc((void **)&X, sizeof(int) * size_t(N));
// Do stuff with X
int result = thrust::reduce(thrust::device, X, X+N);
ような何かをするthrust::device
ポリシーに使用することができますあなたは好きです。
関連する問題
- 1. __host__ __device__ファンクタにThrust :: device_vectorsを作成する
- 2. cuda thrust :: for_each with thrust :: counting_iterator
- 3. nvidia cuda thrust abort()find_if
- 4. スラストを使用したスローソート、CUDA
- 5. フォースCUDAの推力::私は推力を使用するCUDAプログラムを持っていない並列処理
- 6. thrust :: complex型で操作する:thrust :: transform
- 7. CUDAを使用しないPytorch .backward()メソッド
- 8. 推力を使用したODEソルバのCUDAプログラミング
- 9. CUDA on Thrust:優先キューを実装する方法
- 10. CUDA - ダイナミック共有メモリがthrust :: system :: system_errorをトリガー
- 11. thrust :: device_vectorエラー
- 12. Cuda Thrust - sort_by_key、merge_by_key、およびreduce_by_keyを使用してコードを最適化する方法
- 13. CUDA Thrustライブラリの解決方法 - for_each同期エラー?
- 14. Thrustを使用したデバイスファンクタの作成と使用
- 15. Thrust :: sort/uniqueはNaN、Infを処理できますか?私のCUDAカーネルで
- 16. 複数の共有オブジェクトのcuda&rdc&thrustがregisterEntryFunctionのSIGSEVになります
- 17. CUDAスラストを使用した最大要素値とその位置の検索
- 18. thrust :: device_vectorに効率的に挿入/マージするには?
- 19. CUDAを使用したMergesort
- 20. CUDAでレジスタメモリを使用
- 21. SobelフィルタでCUDAを使用したコンボリューション
- 22. ストリームを使用してThrustを実行するPyCuda
- 23. Cuda/Thrustのすべての組み合わせのファンクタを呼び出す
- 24. LLVM/Clangを使用したWin10でOpenMPを使用したCuda
- 25. CUDAでのGPU使用率が低い
- 26. CUDA別コンパイルでのスラストエラー
- 27. Windows上でcudaを使用しようとしています
- 28. thrust :: device_referenceはprintfで使用できません。
- 29. clock_gettime()でタイミングが狂うCUDA
- 30. CUDAプログラミング:レガシーGPUをCUDA 7.5ツールキットで使用するには?