共有メモリに関するいくつかの優れた記事を読みました。しかし、バンク競合に関して最初の質問があります。スレッド 1 とスレッド 2 がバンク 0 からワード 0 にアクセスする場合、バンク競合はありませんが、異なるワードにアクセスするとバンク競合が発生すると言われています。しかし、私の質問は、単一の銀行にどのように異なる単語が存在できるかということです? バンク 0 のサイズは 32 ビットで、ワード サイズは 32 ビットです。最大 1 ワード/バンクが可能です。
質問する
872 次
1 に答える
8
コンピューティング機能2.*または3.*のGPUを使用すると、32個の共有メモリバンクがあります。ただし、共有メモリには32ワード(= 128B)を超えるデータがある可能性があります。各銀行b
は、住所のすべてのデータに責任があります(たとえば)A % nbanks == b
:
+--------+---------+---------+-
Bank 0 | word 0 | word 32 | word 64 |...
+--------+---------+---------+-
Bank 1 | word 1 | word 33 | word 65 |...
+--------+---------+---------+-
Bank 2 | word 2 | word 34 | word 66 |...
+--------+---------+---------+-
... | ..... | | |
+--------+---------+---------+-
Bank 30 | word 30| word 62 | word 94 |...
+--------+---------+---------+-
Bank 31 | word 31| word 63 | word 95 |...
+--------+---------+---------+-
全員がワード0にアクセスしている場合、そのための「ブロードキャスト」機能があります。ただし、スレッド0がワード0にアクセスしている場合、スレッド1がワード32にアクセスしている場合など、これらのアクセスはシリアル化されます。
于 2012-11-23T19:27:21.023 に答える