問題タブ [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.
python - numba.typeinfer.TypingError: NVIDIA GPU 上の Python (Anaconda) で CUDA 動的並列処理を使用すると、型指定されていないグローバル名 'child_launch' が表示される
私のコードはここにあります:
実行結果は次のとおりです。
子カーネルを起動できない理由がわかりません。私を助けてください。どうもありがとうございました。
sorting - CUDA - カーネル内のスレッドがその子を待つようにする方法
CUDA 再帰 (cm > 35 の場合) テクノロジを使用して非常に単純なマージソートを実装しようとしていますが、親スレッドに子を同時に起動し、子の計算を待つように指示する方法が見つかりません。 cudaEventSynchronize( ) と cudaStreamSynchronize() はホストのみです。親の次の行は、その子がすべての計算を完了した後にのみ実行する必要があるため、__syncthread() は目的の効果をアーカイブしません。
目的の効果を得るには、コードをどのように変更すればよいですか?
読んでくれてありがとう。
recursion - CUDA 再帰の深さ
CUDAで動的並列処理を使用すると、 mergeSortなどの再帰アルゴリズムを実装できます。私はそれを実装しましたが、私のプログラムはblahより大きい入力に対しては機能しません。
私の質問は、実装が再帰ツリーでどれくらいの深さまで進むことができるかということです. 制限はありますか?(私のプログラムは、小さな入力には問題ありません。)
cuda - Driver API を使用した CUDA 動的並列処理
動的カーネルをコンパイルしてリンクし、それをGK110のCUDA ドライバー APIで使用しようとしています。
再配置可能なデバイスコードフラグとcompute_35、sm_35を使用してVisual Studioで.cuソースファイルをコンパイルし、CUDAリンカーがcudadevrt.libを追加します(少なくともリンカーの呼び出しに従って試みました)。ptx .obj で cuModuleLoad を実行すると、サポートされていないデバイス コードと表示されます。非現実的なほど小さく見える.device-link.objもあり、ドライバ API 関数のどれもそれを有効なイメージとして認識していないようです。ptx ファイルを調べると、CUDA のドキュメント (PTX セクションからの動的並列処理) に従って、カーネル起動関数の呼び出しが生成されていることがわかります。
動的なカーネル呼び出しが機能するように、適切なデバイス コードをリンクするにはどうすればよいですか?
(これは、VC2013 を使用した Win64 上の CUDA 6.5 です)
cuda - デバイス関数から cublas 関数を呼び出すことはできますか?
ここでRobert Crovella は、デバイスコードから cublas ルーチンを呼び出すことができると述べました。動的並列処理を使用し、計算機能 3.5 でコンパイルしていますが、デバイス関数から Cublas ルーチンを呼び出すことができません。「デバイス/グローバル関数からホスト関数を呼び出すことは許可されていません」というエラーが常に表示cublsAlloc
されますcublasGetVector
cublasSetVector
cublasDgemm
私のコンパイルとリンクのコマンド:
cuda - カーネルによって起動された子カーネルは、ホストによって起動されたカーネルと同じワープ サイズを持ちますか?
カーネル ブロックがホストから起動されると、ワープ サイズは 32 になります。動的並列処理によって起動される子カーネルも同じですか? 私の推測ではイエスですが、ドキュメントでは見たことがありません。
もちろん、より大きな問題は、それだけの価値があるかということです。
わかりました、この例は一種の不自然です。ただし、重要なのは、スレッドごとに異なる長さのループがある場合、それを動的に並列化しようとする誘惑に駆られるということです。ただし、ワープがまだ 32 の場合、不均一なサイズのワープで多くのプロセッサを浪費することになります。この特定の例では、最初にデータをソートしてから、動的に並列化可能なインデックスを 1 つのカーネルにディスパッチし、不適切な形状のインデックスを別のカーネルにディスパッチすることができます。