問題タブ [dynamic-parallelism]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cuda - 動的並列処理 CUDA での共有メモリの使用
質問 1: 共有メモリが子カーネルによってのみ使用される場合、親カーネルの起動時に割り当てられる動的共有メモリの量を指定する必要がありますか?
質問 2: 以下は私の子カーネルと親カーネルです
親カーネル
子カーネル
ここでは、子カーネルだけで問題なく動作します。ただし、別のカーネルから起動された場合、未指定の起動失敗エラーでホストから親カーネルが起動された後、cudaDeviceSynchronize()
エラーが発生します (エラーはカーネル内の printf から出力されません)。
親カーネルの起動構成は<<<1,(17 17)>>>
. 親からの 1 つのスレッドのみが子グリッドの起動を許可されている場合、コードは正常に機能します。1 つのブロックから起動できるグリッドの数に制限はありますか?
c - 複数の cuda ファイル (動的な並列性を持つ) と MPI コードをコンパイルする
動的並列処理 (a.cu、b.cu、c.cu..、e.cu、f.cu) を使用する .cu ファイルと、MPI を使用して関数を呼び出す main.c ファイルがあります。複数のノード上の .cu。実行可能ファイルをコンパイルするためのメイク ファイルを作成しようとしていますが、次のエラーが引き続き発生します。
これが私のメイクファイルです:
c++ - ネストされたカーネルの深さの同期
親カーネルと子カーネルがある次のコードを見てみましょう。threadIdx.x
上記の親カーネルから、並列スループットを最大化するために、異なるストリームで子カーネルを開始したいと考えています。cudaDeviceSynchronize()
次に、親カーネルがメモリに加えられた変更を確認する必要があるため、それらの子を待ちglobal
ます。
ここn
で、ストリームを使用して親カーネルを開始したいとします。また、並行して開始したい親カーネルの各セット間でn
、次を使用して結果を待つ必要があります。cudaDeviceSynchronize()
これはどのように動作しますか?
このNvidiaによる動的並列処理の公式紹介から、parent kernel[0]
ストリームがその中で開始されるのを待つだけだと思います。これは正しいです?そうでない場合、どうなりますか?
注:一度に実行できるストリームの数は非常に多い(私の場合は32)ことは承知していますが、これは占有率を最大化するためのものです
編集:小さなコードサンプル