バンク競合とは何ですか? (クーダ/ OpenCLのプログラミングを行います)

StackOverflow https://stackoverflow.com/questions/3841877

質問

私はCUDAやOpenCLのためのプログラミングガイドを読んでいる、と私はバンク競合が何であるかを把握することはできません。ちょうどソートダイビングの主題自体に起草することなく、問題を解決する方法に彼ら。誰の助けが私はそれを理解することはできますか?ヘルプがCUDA / OpenCLのか、コンピュータサイエンスの一般的なだけでバンク競合の関係にある場合、私は特にない。

役に立ちましたか?

解決

は、NVIDIAのために(およびAMDそのことについては)のGPUのローカルメモリがmemorybanksに分割されています。各バンクは、アクセス(これはバンクコンフリクト)とシリアル化されなければならないので、同じバンクへ/からロード/ストア・データにhalfwarpのしようとした場合、一度に一つのデータセットに対処することができます。バイト0-3にある32ビットのgranuityとインターリーブされている)、(SO(16:32、以下のすべて57XX以上)GT200 GPU向けの16の銀行(フェルミ用32banks)、AMDのGPUのための16のまたは32の銀行がありますバンク1、バンク2で4-7、...、バンク1で64-69など)。より見やすくするために、それは基本的に次のようになります:

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 |...
...

だから、halfwarp内の各スレッドは、連続する32ビットの値にアクセスすると何のバンク競合はありません。このルールの例外(自身の銀行にアクセスしなければならないすべてのスレッド)が放送されています。 すべてのスレッドが同じアドレスにアクセスする場合、値は一度だけ読んで、それは同じアドレスにアクセスhalfwarp内のすべてのスレッドでなければならGT200のためのすべてのスレッド(に放送され、IIRCフェルミとAMDのGPUは、アクセスするスレッド任意の数のためにこれを行うことができます同じ値)。

他のヒント

は並列にアクセス可能な共有メモリモジュール(別名バンク)に分割されています。 2つのメモリ位置(アドレス)が同じバンク内で発生した場合は、のバンク競合を取得するアクセスは、並列アクセスの利点を失って、シリアルに行われているの、その間ます。

は簡単な言葉では、バンク競合は、任意のメモリアクセスパターンがメモリシステムで利用可能な銀行間でIOを配布するために失敗した場合です。次の例の概念を詳しく説明: -

私たちは2次元の512×512の整数の配列と私たちのDRAMまたはメモリシステム、その中に512件の銀行を持っているを持っているとしましょう。 ....デフォルト配列データは、ARR [0] [0]は、バンク0になるような方法でレイアウト、ARR [0] [1]バンク1になるであろうバンク2に[0] [2] ARR ARR [0] [511] [X] [Y]は、バンク番号yを占めるARR一般にはバンク511に進みます。現在、いくつかのコード(下図のように)欄の主要な方法でデータすなわちへのアクセスを開始。 Yを一定に保ちながら、Xを変更し、最終的な結果は、すべての連続したメモリアクセスが同じバンクヒットすることになります - 。したがって、バンクコンフリクトを

int arr[512][512];
  for ( j = 0; j < 512; j++ ) // outer loop
    for ( i = 0; i < 512; i++ ) // inner loop
       arr[i][j] = 2 * arr[i][j]; // column major processing

このような問題は、通常、アレイをバッファまたはアレイ内の要素の素数を使用して、コンパイラによって回避される。

(CUDA銀行コンフリクト) 私は、この意志の助けを願っています。.. これは非常に良い、について説明です...

http://www.youtube.com/watch?v=CZgM3DEBplEする

http://en.wikipedia.org/wiki/Memory_bank
そして http://mprc.pku.cn/mentors /training/ISCAreading/1989/p380-weiss/p380-weiss.pdfする

は、このページから、あなたはメモリバンクについての詳細を見つけることができます。 それは@Grizzlyで言われているものとは少し異なっています。 このページでは、銀行はこの

のようなものです

バンク1 2 3

住所| 0、3、6 ... | | 1、4、7 ... | | 2、5,8 ... |

これは役立つだろう願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top