CUDA カーネルがメモリ帯域幅の使用率に関してどの程度優れているかを知りたいです。ECCをオンにしたTesla K40cでそれらを実行します。ユーティリティによって得られた結果はbandwidthTest
、達成可能なピークの適切な近似値ですか? そうでなければ、ピーク帯域幅を見つけるために同様のテストを作成するにはどうすればよいでしょうか?
デバイスのメモリ帯域幅を意味します。
CUDA カーネルがメモリ帯域幅の使用率に関してどの程度優れているかを知りたいです。ECCをオンにしたTesla K40cでそれらを実行します。ユーティリティによって得られた結果はbandwidthTest
、達成可能なピークの適切な近似値ですか? そうでなければ、ピーク帯域幅を見つけるために同様のテストを作成するにはどうすればよいでしょうか?
デバイスのメモリ帯域幅を意味します。
帯域幅テストのソース コードは CUDA SDK に含まれているため、直接確認できます。bandwidthTest の例では、デバイスとホスト、ホストとデバイス、およびデバイスとデバイス (カード上のメモリを転送する) の間の転送時間のテストを実行します。
これはメモリ転送の実際の実行ですが、いくつかの利点があります。
メモリ転送の実行中にカーネルで実際の作業を行うと、パフォーマンスが低下する可能性があります。ただし、帯域幅テスト コードを参照して、転送を改善するためのガイドとして使用できます。固定メモリ、非同期転送、またはデータの明示的な転送を必要としない新しい共有メモリ メソッドを検討してください。また、bandwidthTest はメモリ上のバルク転送のみをカウントしており、共有メモリなどを実際に測定しているわけではないことに注意してください。
最終的なパフォーマンスは、カーネルと、実行しているメモリ転送の数とサイズに大きく依存します。