0

CUDA プログラムのメトリック/イベントを測定するために、次のようなコマンド ラインを使用してみました。

nvprof --metrics <<metric_name>>

Visual プロファイラーでも同じ指標を測定しましたnvvp。得られる値に違いはありませんでした。

のようなメトリックを選択すると、出力の違いに気付きましたachieved_occupancynvvpしかし、これは実行ごとに異なるため、またはを使用しているかどうかに関係なく、実行するたびに異なる結果が得られるのはおそらくそのためですnvprof

質問:

nvvpnvprofはまったく同じで、使いやすさのために のnvvp上に構築された GUI に過ぎないという印象を受けました。nvprofしかし、私はこのアドバイスを与えられました:

常にビジュアル プロファイラーを使用してください。コマンドラインは絶対に使用しないでください。

また、この質問は次のように述べています。

グローバルなロード/ストア効率、リプレイ、DRAM 使用率が必要なため、コマンド ライン プロファイラーは使用したくありません。これらはビジュアル プロファイラーでより明確に表示されます。

のような「動的な」指標を除けばachieved_occupancy、結果の違いに気づいたことはありません。それで、このアドバイスは有効ですか?nvprof働き方になんらかの不備があるのでしょうか。コマンド ライン フォームよりもビジュアル プロファイラーを使用する利点があれば教えてください。

より具体的には、nvprof間違った結果をもたらすメトリクスはありますか?

ノート:

これらはNsight との違いについて尋ねているため、私の質問はこれまたはこれと同じではありません。nvvp

4

1 に答える 1

4

なぜ誰かがあなたにアドバイスをするのかわかりません:

コマンドラインは絶対に使用しないでください。

「コマンドライン」で行うと仮定すると、実際にはnvprof. それは賢明ではありません。 を使用することが理にかなっている状況がありますnvprof。(実際にコマンド ライン プロファイラーを意味している場合、そのアドバイスは多少賢明かもしれませんが、それでも好みの問題です。それは別のものnvprofなので、別の学習曲線があります。私は個人的にコマンド ライン プロファイラーのnvprof代わりに使用します。)

nvvpすべての測定作業nvprofを行うために、ボンネットの下で使用します。ただし、ガイド付き分析を容易にするなど、さまざまな興味深い方法で測定されたメトリックを組み合わせることができます。nvvp

nvprof「間違った結果」を与えるべきではなく、何らかの理由でそうであった場合、そのnvvpようなエラーの影響を等しく受けやすいはずです。

nvvp対の使用は、nvprof単に好みや好みの問題かもしれません。

多くの人が GUI の便利さを気に入るはずです。また、nvvpGUI は「ガイド付き分析」モードを提供しますが、提供しnvprofません。ドキュメントを参照すれば、他の相違点の完全なリストが作成される可能性があると確信しています。しかし、何nvvpをするにしても、それは を使用して行いnvprofます。デバイスにプロファイラー データを照会する別の方法はありませんnvprof

を使用nvprofするのが不便な場合nvvp、おそらく、起動が困難または不可能な計算クラスター ノードで実行している場合に使用しますnvvp。また、ターゲットを絞ったプロファイリングを行っている場合 (たとえば、単一のメトリックを測定することは、GUI を起動してセッションを実行するよりも確実に高速です)、または一連の実行で表形式の生成用のメトリックを収集している場合にも使用shared_replay_overheadできnvprofます。

他のほとんどの場合、私は個人的に を使用しますnvvpnvprof --print-gpu-trace ...タイムライン機能自体は、出力から本質的にタイムラインと同じ情報であるシーケンスを頭の中で組み立てようとするよりもはるかに便利です。

于 2016-06-04T12:21:35.840 に答える