7

カーネルによって達成される実際のスループットは、4 つのメトリックを使用して CUDA プロファイラーによって報告されます。

  • グローバル メモリ ロード スループット
  • グローバル メモリ ストアのスループット
  • DRAM 読み取りスループット
  • DRAM 書き込みスループット

CUDA C ベスト プラクティス ガイドでは、グローバル メモリのロード/ストア スループットを実際のスループットとして説明しており、DRAM の読み取り/書き込みスループットについて具体的には何も述べていません。

CUPTI ユーザー ガイドでは、次のように定義されています。

  • ((128*global_load_hit) + (l2_subp0_read_requests + l2_subp1_read_requests) * 32 - (l1_cached_local_ld_misses * 128))/(gputime)としてのグローバル メモリ ロード スループット
  • (l2_subp0_write_requests + l2_subp1_write_requests) * 32 - (l1_cached_local_ld_misses * 128))/(gputime)としてのグローバル メモリ ストア スループット
  • (fb_subp0_read + fb_subp1_read) * 32 / gputimeとしての DRAM 読み取りスループット
  • (fb_subp0_write + fb_subp1_write) * 32 / gputimeとしての DRAM 書き込みスループット

fb_subp* カウンターが多数の DRAM アクセス (32 バイト アクセスの場合は 1 ずつ増加) を報告し、すべての SM について収集されるため、DRAM の読み取り/書き込みスループットを理解しています。したがって、スループットが gputime とアクセスされたバイト数の関数として計算されることは明らかです。

グローバル メモリ スループットの定義がわかりません。global_load_hit および counter の定義はありません。どちらの場合も l1_cached_local_ld_misses が差し引かれる理由がわかりません。

このコンテキストでは、DRAM はグローバル メモリとは異なるものですか?

カーネルの実際のスループットを知りたい場合、DRAM またはグローバル メモリ スループット メトリックを使用する必要がありますか?

4

2 に答える 2

0

グローバル メモリのロード/ストアはキャッシュを経由します。それらのいくつかはヒットまたはライトバックを見つけるかもしれません. これにより、DRAM へのアクセスが回避されます。したがって、グローバル メモリのスループットは、ロード/ストア リクエストの数とキャッシュのヒット/ミスの比率に依存します。

一方、DRAM スループットは、DRAM アクセスのみに基づいて計算され、キャッシュの影響は考慮されません。

この場合のカーネル スループットを測定するには、キャッシュ効果が含まれているため、グローバル メモリ スループットを使用する必要があります。

于 2012-06-06T04:41:55.150 に答える