6

前文:CUDAでNVIDIAGTX480カードを使用していると仮定します。このカードの理論上のピークグローバルメモリ帯域幅は177.4GB/ sです:384 * 2 * 1848/8 * 1E9 = 177.4 GB / s

384はメモリインターフェイスの幅に由来し、2はメモリのDDRの性質を形成し、1848はメモリクロック周波数(MHz)であり、8はバイト単位で答えを取得したいという事実に由来します。

共有メモリについても同様の計算が可能です。バンクあたり4バイト*32バンク*サイクルあたり0.5バンク*1400MHz* 15 SM = 1,344 GB / s

上記の数は、SMの数、つまり15を考慮に入れています。したがって、この最大共有メモリ帯域幅に到達するには、15個のSMすべてに共有メモリを読み取らせる必要があります。

私の質問:グローバルメモリの最大帯域幅に到達するには、グローバルメモリから1つのSMのみを読み取るだけで十分ですか、それともすべてのSMが同時にグローバルメモリからの読み取りを試みる必要がありますか?具体的には、32スレッドの1ブロックでカーネルを起動するとします。次に、SM-0で唯一のワープがあり、カーネルで行うすべての処理がグローバルメモリから合体してノンストップで読み取られる場合、177.4 GB / sに達しますか?または、SM-0からSM-14の15個のワープが同時に読み取ろうとするように、それぞれ32個のスレッドを持つ少なくとも15個のブロックを起動する必要がありますか?

すぐにやるべきことは、おそらくこれを理解するためにベンチマークテストを実行することでしょう。なぜ何が起こるのかを理解したいと思います。

4

1 に答える 1

2

私の知る限り、GPU のネットワーク オン チップは TPC とメモリ コントローラーのクロスバーです。したがって、理論的には、1 つの SM が異なるメモリ コントローラ間でメモリ アクセスをインターリーブして、完全なグローバル帯域幅を実現できます。ただし、各クロスバー インターフェイスにはバッファがあり、このバッファが十分に大きくない場合、アクティブな SM のメモリ命令が停止する可能性があることに注意してください。さらに、各 SM は未処理のメモリ アクセスを保持するための容量が限られています。これらの問題により、各 SM が使用できるメモリ帯域幅が制限される場合があります。したがって、あなたの質問への回答にはマイクロベンチマークが必要だと思います.1つのSMはグローバルメモリ帯域幅全体を利用できないと思います.

于 2012-09-11T06:47:03.410 に答える