2

CUDA の最適化について学んでいます。このリンクでプレゼンテーションを見つけました: Paulius Micikevicius による CUDAの最適化。

このプレゼンテーションでは、

グローバルメモリ帯域幅を最大化

、彼らは、グローバルメモリの合体​​が帯域幅を改善すると言います。

私の質問は、グローバル メモリ帯域幅をどのように計算しますか。誰でも簡単なプログラムの例で説明できますか?

4

1 に答える 1

7

理論上の帯域幅は、ハードウェア仕様を使用して計算できます。

たとえば、NVIDIA GeForce GTX 280 は、1,107 MHz のメモリ クロック レートと 512 ビット幅のメモリ インターフェイスで DDR RAM を使用します。これらのデータ項目を使用すると、NVIDIA GeForce GTX 280 の理論上のピーク メモリ帯域幅は 141.6 GB/秒です。

ここに画像の説明を入力

この計算では、メモリ クロック レートが Hz に変換され、インターフェイス幅 (ビットをバイトに変換するために 8 で除算) を乗算し、ダブル データ レートのために 2 を乗算します。最後に、この積を 109 で割り、結果を GB/秒 (GBps) に変換します。

有効な帯域幅は、特定のプログラム アクティビティのタイミングを計り、プログラムがデータにアクセスする方法を知ることによって計算されます。これを行うには、次の式を使用します。

実効帯域幅 = (( Br + Bw ) / 109 ) / 時間

ここで、実効帯域幅の単位は GBps、Br はカーネルごとの読み取りバイト数、Bw はカーネルごとの書き込みバイト数、時間は秒単位です。

詳細については、CUDA ベスト プラクティス ガイドを参照してください。

于 2011-12-11T02:12:46.420 に答える