2

ATI FirePro 8750 で PCIe 帯域幅を測定しようとしています。SDK の amd アプリ サンプル PCIeBandwidth は、以下からの転送の帯域幅を測定します。

  1. ホストからデバイスへ、clEnqueueReadBuffer() を使用。
  2. デバイスからホストへ、clEnqueueWriteBuffer() を使用。

私のシステム (Windows 7、Intel Core2Duo 32 ビット) では、出力は次のようになります。

Selected Platform Vendor : Advanced Micro Devices, Inc.
Device 0 : ATI RV770
Host to device : 0.412435 GB/s
Device to host : 0.792844 GB/s

この特定のカードには 2 GB の DRAM があり、最大クロック周波数は 750 Mhz です。

1- 帯域幅が各方向で異なるのはなぜですか?

2- 帯域幅が小さいのはなぜですか?

また、この通信は DMA 経由で行われるため、帯域幅は CPU の影響を受けない可能性があることも理解しています。

4

1 に答える 1

0

Microsoft Research labs のこの論文では、GPU と CPU の間に非対称の PCIe データ転送帯域幅が存在する理由について、いくつかのヒントを提供しています。このホワイト ペーパーでは、FPGA のパフォーマンス メトリックについて説明します。PCIe を介した GPU データ転送帯域幅です。CPU からのメトリックも含まれます - PCIe 経由の GPU データ転送帯域幅。

関連セクションを引用するには

また、GPU-CPU 転送自体もある程度の非対称動作を示すことにも注意してください。GPU がバス マスター書き込みを開始する GPU から CPU への転送の場合、GPU は最大 6.18 GB/秒に達します。CPU から GPU への反対方向では、GPU がバス マスターの読み取りを開始し、結果として帯域幅が 5.61 GByte/Sec に低下します。私たちの観察では、プロトコルのオーバーヘッドと実装の相対的な複雑さのために、バス マスター書き込みは、PCIe 実装のバス マスター読み取りよりも効率的であることが一般的です。この非対称性に対する可能な解決策は、CPU が開始するバス マスター書き込みを使用して CPU から GPU への方向を処理することですが、そのハードウェア機能は一般に PC アーキテクチャでは利用できません。'

帯域幅に関する 2 番目の質問に対する答えは、データ転送サイズの単位である可能性があります。図 2、3、4、および 5 を参照してください。私は、第 1 回 AMD Fusion Conference でこのようなグラフも見ました。説明は、データの PCIe 転送には、プロトコルとデバイスのレイテンシーによるオーバーヘッドがあるということです。オーバーヘッドは転送サイズが小さいほど大きくなり、サイズが大きいほど大きくなります。

パフォーマンスを制御または改善するために必要なレバーは何ですか?

チップ/マザーボードと GPU を適切に組み合わせることは、H/W レバーです。最大数の PCIe レーンを持つチップが優れています。より高い仕様の PCIe プロトコルを使用するため、PCIe 3.0 は PCIe 2.0 よりも優れています。すべてのコンポーネントは、より高い標準をサポートする必要があります。

データ転送サイズを制御するプログラマーとして、これは非常に重要な手段です。

128K ~ 256K バイトの転送サイズは、最大帯域幅の約 50% を取得します。1M ~ 2M バイトの転送は、最大帯域幅の 90% 以上を取得します。

于 2013-08-02T19:22:06.883 に答える