[解決済み] バンクコンフリクトとは何ですか?(Cuda/OpenCLのプログラミングをする)
質問
CUDAやOpenCLのプログラミングガイドを読んでいるのですが、バンクコンフリクトが何なのかがわかりません。この問題自体について詳しく説明することなく、ただ問題を解決する方法に飛び込んでいるような感じです。どなたか理解を助けていただけませんか?CUDA/OpenCLの文脈でのヘルプなのか、コンピュータサイエンスにおける一般的なバンクコンフリクトなのか、好みはありません。
どのように解決するのですか?
nvidia (amdも同様) gpusでは、ローカルメモリはメモリバンクに分割されています。各バンクは一度に1つのデータセットしかアドレスできないので、もしハーフワープが同じバンクから/へデータをロード/ストアしようとすると、アクセスを直列化しなければなりません(これはバンクコンフリクトです)。gt200の場合は16バンク(fermiは32バンク)、AMDの場合は16または32バンク(57xx以降は32、それ以下は16)で、これらは32ビットの粒度でインターリーブされています(つまり0-3バイトはバンク1、4-7はバンク2、...、64-69はバンク1、というようになります)。わかりやすくするために、基本的にはこのような構成になっています。
Bank | 1 | 2 | 3 |...
Address | 0 1 2 3 | 4 5 6 7 | 8 9 10 11 |...
Address | 64 65 66 67 | 68 69 70 71 | 72 73 74 75 |...
...
そのため、ハーフワープ内の各スレッドが連続した32bitの値にアクセスする場合、バンクの競合は発生しません。このルール(すべてのスレッドが自分のバンクにアクセスしなければならない)の例外は、ブロードキャストです。 すべてのスレッドが同じアドレスにアクセスする場合、値は一度だけ読み込まれ、すべてのスレッドにブロードキャストされます(GT200では、ハーフワープのすべてのスレッドが同じアドレスにアクセスしなければなりませんが、フェルミとAMD GPUでは、同じ値にアクセスするスレッドの数にかかわらず、これを行うことができます)。
関連
-
[解決済み] Cudamemcpy関数の使用法
-
[解決済み] このCUDAカーネルの起動パラメータを理解する
-
[解決済み] ファンネルシフトとは?
-
[解決済み] CUDAドライバのバージョンがCUDAランタイムのバージョンに対して不足しています。
-
[解決済み] nvcc fatal : Visual Studio 12.0 が PATH に追加されているが、コンパイラ 'cl.exe' が PATH に見つからない。
-
[解決済み] OSXでNVIDIA Cudaエラー「すべてのCUDA対応デバイスはビジー状態か使用不可」発生
-
[解決済み] X サーバーを特定の GPU で実行するように xorg.conf ファイルを変更するにはどうすればよいですか?(複数のGPUを使用しています) [クローズド].
-
[解決済み] GPU上のCUDAアクティビティを監視するためのtopライクなユーティリティ
-
[解決済み] AMD GPU上で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をコンパイルするとエラーになる。
-
[解決済み] Cudamemcpy関数の使用法
-
[解決済み] cuda atomicAdd のサンプルで正しい出力が得られない
-
[解決済み] CUDAコンテキストとは何ですか?
-
[解決済み] nvcc fatal : Visual Studio 12.0 が PATH に追加されているが、コンパイラ 'cl.exe' が PATH に見つからない。
-
[解決済み] ハードウェアなしでCUDAプログラミングができるGPUエミュレータ【終了しました
-
[解決済み] バンクコンフリクトとは何ですか?(Cuda/OpenCLのプログラミングをする)
-
[解決済み] X サーバーを特定の GPU で実行するように xorg.conf ファイルを変更するにはどうすればよいですか?(複数のGPUを使用しています) [クローズド].
-
[解決済み] AMD GPU上でCUDAを動作させることは可能ですか?
-
[解決済み】CUDAランタイムAPIを使用してエラーをチェックする標準的な方法は何ですか?