2012-11-25 27 views
6

我々はCUDAプロファイラnvvpを使用する場合は、例えば命令に対応付け「オーバーヘッド」のいくつかあります。CUDAプロファイラnvvpでは、「共有/グローバルメモリ再生オーバーヘッド」とは何ですか?どのように計算されますか?

  • 支店発散のオーバーヘッドが、
  • 共有/グローバルメモリ再生オーバーヘッド。および
  • ローカル/グローバルキャッシュ再生オーバーヘッド。

私の質問は以下のとおりです。

  1. 何の原因(複数可)これらのオーバーヘッドそして、彼らがどのように計算されるか
  2. 同様に、グローバルロード/ストア効率はどのように計算されますか?

添付ファイル:これらのオーバーヘッドを計算するすべての数式は、CUDA5ツールキットにパックされた「CUDAプロファイラユーザーガイド」で見つかりました。

答えて

2

あなたがここにあなたの質問への回答の一部を見つけることができます。

Why does CUDA Profiler indicate replayed instructions: 82% != global replay + local replay + shared replay?

リプレイ取扱説明書(%)をこれはカーネル実行中に再生さ 命令の割合を示します。リプレイされた命令 は、 のカーネルによって実行される命令の数に実際にハードウェアによって発行された命令の数の差です。理想的には、これはゼロでなければなりません。/ 命令発行

グローバルメモリリプレイ(%)によるグローバルメモリアクセスに起因する再生指示 のパーセント - これは、100 *(命令実行発行された命令)として 算出されます。これは、命令が

を発行/ 100 *(L1 グローバルロード・ミス)のように計算されたローカルメモリリプレイ(%)は、再生指示の割合によるメモリアクセスをローカルに を引き起こしました。これは、100 *(L1ローカル ロード・ミス+ L1ローカルストアミス)として計算される/

共有バンク競合のリプレイ(%)共有メモリバンク競合に起因する再生 命令の割合を発行した命令。これはあなたの答えを

+1

感謝を発行した100 *(L1共有コンフリクト)/命令として 計算され、BenCは、私が「リプレイ命令」と「共有バンク競合リプレイ」の割合を考え出しました。しかし、「グローバル/ローカルメモリ」のリプレイの式を考えると、グローバル/ローカルキャッシュミスが命令リプレイを引き起こす理由を把握することはできません。キャッシュミスが発生した場合、必要なものをフェッチするためにグローバルメモリに移動するだけで済みます。 – troore

+1

あなたの質問に対する答えは[これらのスライド](http://developer.download.nvidia.com/CUDA/training/bandwidthlimitedkernels_webinar.pdf)で見つけることができると思います。他のすべての命令と同様に、ワープごとにメモリ操作が発行されます。ワープが次のワードを要求すると、不良メモリ合体は複数のl1ロードミスを招き、命令リプレイを引き起こします。私はCUDAの専門家ではないので、私の理解は正しくないかもしれません:-) – BenC

+1

この[other link](http://www.freepatentsonline.com/8266383.html)は、あなたが探していたものかもしれませんが、技術的な詳細本当の動機を必要とします。 – BenC

関連する問題