私は以下を参考にしたいと思います。ホストコード、カーネル関数、そしてデバイス関数がカーネルから呼び出されています。私は、デバイスの機能だけがホスト配列を使用したい。私のホスト配列を何らかの方法で直接デバイスの機能から「可視」にすることはできますか?それとも最初にカーネルにコピーする必要がありますか?デバイスアレイへのホストアレイを使用するCUDA
答えて
デバイス機能がホストメモリに直接アクセスする方法はないと思います。たとえ可能であっても、待ち時間と帯域幅は残酷で価値がない可能性があります。
デバイス側の機能をホスト側のCPUで実行したい場合は、それが可能です。関数定義に接頭辞__host__ __device__
を付けることができ、その関数はホストとデバイスの両方でコンパイルされ、CPU上で直接使用できるようになります。唯一の捉え方は、関数がCPU上で利用できないCUDA機能(例えば、共有メモリなど)を利用できないことです。
CUDA 2.2。カーネルによって直接アクセスできるように、CUDAアドレス空間にマップされた「マップされた固定メモリ」を導入しました。メモリはcudaHostAlloc()によって割り当てられなければならず、誰がホストメモリを割り当てるのかは不明です。 CUDA 4.0では、cudaHostRegister()を使用して既存の仮想アドレス範囲をページロックする機能が追加されました.cudaHostAlloc()はオプションでホストメモリをデバイスのアドレス空間にマップできます。 – ArchaeaSoftware
興味深い...情報をありがとう! –
CUDAカーネルは、GPU(デバイス)上で実行されるコードです。 GPUはメインCPUメモリではなく、グラフィックスカード上のメモリにのみアクセスできます。 CPUはメインメモリとデバイスメモリの間でデータをコピーできます。通常のシナリオは次のとおり
- CPU:メインメモリ
- CPUに入力データを作成:メインメモリにデバイスからコピー出力:カーネル
- CPUを実行しますデバイス
- GPUへの入力データをコピーします
official documentationを読むことをお勧めします。スライドをご希望の場合は、introductory presentationからお申し込みください。
- 1. ローダコンパイラを使用したCudaソースからソースへの変換
- 2. CUDAカーネルへのパラメータ
- 3. CUDAプログラミング:レガシーGPUをCUDA 7.5ツールキットで使用するには?
- 4. 既存のC++クラスを使用するC++アプリケーションへのCUDAの統合
- 5. UbuntuでCUDAを使用する11.10
- 6. CUDAデバイスコードでstd :: vectorを使用する
- 7. cudaMalloc3Dを使用してCuda Memory 3Dを使用する方法
- 8. NVIDAカードをCUDA、ビデオ用マザーボードに使用
- 9. イベントを使用したCUDAアプリケーションのタイミングタイミング
- 10. CUDA:配列へのポインタの配列に__restrict__を適用する方法は?
- 11. 複数のCUDA GPUの使用
- 12. CUDAコードでの定数メモリの使用
- 13. CUDAのグローバルメモリへの書き込み
- 14. CUDAを使用した行列乗算
- 15. cudaカーネルレジスタの使用状況を追跡する
- 16. CUDAで未使用の変数を保持する
- 17. Cuda - デバイスのグローバルメモリからテクスチャメモリへコピー
- 18. CUDAがグローバルメモリへの一貫したアクセス
- 19. リモートデスクトップを使用してcudaコードを実行する方法は?
- 20. Qt用CUDAラッパー
- 21. CUDAでのpthreadの使用 - 設計に関する質問
- 22. フォースCUDAの推力::私は推力を使用するCUDAプログラムを持っていない並列処理
- 23. 同じ__constant__メモリを使用するCUDAホストとデバイス
- 24. CUDAでループを使用してfloat4/int4要素にアクセスする
- 25. 共有CUDAメモリでvolatileを使用する場合
- 26. .cppファイルでCudaデータ構造を使用する方法
- 27. cuda:デバイスメモリにグローバル変数を使用する
- 28. CUDA nvccでIntel C++コンパイラを使用するには?
- 29. CUDA:2次元配列のvolatileを使用しているエラー
- 30. CUDAを使用しているGPUのトップコマンド
をホストの大きさあなたはそれを読む必要があるのでしょうか、それともデバイスの機能もそれに書き込む必要がありますか? – talonmies