[解決済み] このCUDAカーネルの起動パラメータを理解する
質問事項
ネットで見つけたコードを解析しようとしているのですが、自分自身を追い詰めるようなことばかり考えてしまいます。私は、以下のパラメータで起動したヒストグラムカーネルを見ています。
histogram<<<2500, numBins, numBins * sizeof(unsigned int)>>>(...);
パラメータは、グリッド、ブロック、共有メモリサイズということは分かっています。
ということは、2500ブロックの
numBins
スレッドがあり、各ブロックには
numBins * sizeof(unsigned int)
は、そのスレッドで利用可能な共有メモリのチャンク?
また、カーネル自体の中にも
__syncthreads()
のセットは2500個あるのでしょうか?
numBins
を呼び出す。
__syncthreads()
カーネルの呼び出しの間に?
どのように解決するのですか?
<ブロッククオートつまり、numBins個のスレッドが2500個ずつあるブロックがあるということでしょうか。 各ブロックは、numBins * sizeof(unsigned int)のチャンクも持っています。 共有メモリは、そのスレッドで利用できますか?
より CUDAツールキットのドキュメント :
グローバル関数呼び出しの)実行構成は、以下の形式の式を挿入することで指定します。
<<<Dg,Db,Ns,S>>>
, ここで
- Dg ( ディムスリー ) は、グリッドの寸法と大きさを指定します。
- Db ( ディムスリー ) は、各ブロックの寸法と大きさを指定します。
- Ns ( size_t ) は、動的に割り当てられる共有メモリのバイト数を指定します。 ブロックあたり は、静的に割り当てられたメモリに加えて、この呼び出しのために。
- S ( cudaStream_t ) は,関連するストリームを指定します。オプションのパラメータで,デフォルトは 0 です。
というわけで、@Fazar さんのご指摘の通り、答えはイエスです。このメモリはブロックごとに割り当てられます。
<ブロッククオートまた、カーネル自体の中で __syncthreads() を呼び出すことがありますが、これは 2500セットのnumBinsが__syncthreads()を呼び出すことになります。 カーネルコールのコース?
__syncthreads()
は、スレッドブロック内のすべてのスレッドがこのポイントに到達するまで待ちます。同じブロック内のスレッド間の通信を調整するために使用されます。
そのため
__syncthread()
をブロックごとに呼び出す。
関連
-
[解決済み】NVIDIA NVML Driver/library version mismatch [終了しました。]
-
[解決済み] ジョブを実行するGPUはどのように選択するのですか?
-
[解決済み] Cudamemcpy関数の使用法
-
[解決済み] CUDAコンテキストとは何ですか?
-
[解決済み] CUDAドライバのバージョンがCUDAランタイムのバージョンに対して不足しています。
-
[解決済み] nvcc fatal : Visual Studio 12.0 が PATH に追加されているが、コンパイラ 'cl.exe' が PATH に見つからない。
-
[解決済み] OSXでNVIDIA Cudaエラー「すべてのCUDA対応デバイスはビジー状態か使用不可」発生
-
[解決済み] AMD GPU上でCUDAを動作させることは可能ですか?
-
[解決済み] CUDAバージョンの取得方法を教えてください。
-
[解決済み】CUDAランタイムAPIを使用してエラーをチェックする標準的な方法は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】CUDAドライバのバージョンがCUDAランタイムのバージョンに対して不足しています。
-
[解決済み】コマンドプロンプトからCUDAをコンパイルするとエラーになる。
-
[解決済み] Cudamemcpy関数の使用法
-
[解決済み] cuda atomicAdd のサンプルで正しい出力が得られない
-
[解決済み] CUDAコンテキストとは何ですか?
-
[解決済み] ファンネルシフトとは?
-
[解決済み] cudaMemcpyToSymbolとcudaMemcpyの比較 なぜまだ残っているのか (cudaMemcpyToSymbol)
-
[解決済み] バンクコンフリクトとは何ですか?(Cuda/OpenCLのプログラミングをする)
-
[解決済み] GPU上のCUDAアクティビティを監視するためのtopライクなユーティリティ
-
[解決済み】CuDNNのインストールを確認する方法は?