問題タブ [nvvp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cuda - プロファイラーで CUDA ライブラリ関数呼び出しを表示するには?
cuFFT ライブラリを使用しています。NVIDIA Visual Profiler NVVP でこのライブラリ (またはその他の CUDA ライブラリ) からの関数呼び出しを確認するには、コードを変更するにはどうすればよいですか? Windows と Visual Studio 2013 を使用しています。
以下は私のコードです。画像とフィルターをフーリエ ドメインに変換し、作成したカスタム CUDA カーネルで点単位の複素行列乗算を実行し、フィルター処理された画像スペクトルに対して単純に逆 DFT を実行します。結果は正確ですが、プロファイラーで cuFFT 関数を表示する方法がわかりません。
cuda - OpenACC カーネルを C ソース コード レベルでプロファイリングできますか?
PGI 15.7 コンパイラで openacc を使用してコードを高速化しようとしています。
コードを C ソース レベルでプロファイリングしたいと考えています。CUDA 7.0 の「nvvp」プロファイラーを使用しています。nvvp を実行すると、「分析タップ」を使用して、どのレイテンシーがコードの速度低下の原因であるかを取得できます。(データの依存関係、条件分岐、帯域幅など)
しかし、行ベースの分析は得られず、「カーネル」レベルの分析しか得られませんでした。(例: main_300_gpu カーネルは 10 秒使用) . そのため、コードをどこで修正する必要があるかを知るのに苦労しています。
ソースレベルでコードをプロファイリングする方法はありますか?
私は使用しています
PGI 15.7 (pgcc を使用)
CUDA7.0
NVIDIA GTX 960
Ubuntu 14.04 LTS x86_64
cuda - 実行可能ファイルのサブセクションの CUDA イベントとメトリクスを観察する方法 (例: カーネル実行時のみ)?
nvprof を使用してベンチマークのイベントとメトリックにアクセスすることに慣れています。
の
コマンドは、開始時刻、カーネル終了時刻、電力、温度のタイムスタンプを提供し、情報を nvvp ファイルに保存して、ビジュアル プロファイラーで表示できるようにします。これにより、特に特定のカーネルが実行されているときに、コードの任意のセクションで何が起こっているかを確認できます。私の質問はこれです--
カーネルの実行中など、ベンチマーク実行のセクションのみでカウントされるイベントを分離する方法はありますか? 上記のコマンドでは、
実行可能ファイル全体について集計された指示を与えるだけです。ありがとう!
profiling - nvvp を使用して pyCUDA プログラムをプロファイリングするために、イベント、メトリック、およびソースレベルの結果を関連付ける方法
nvvp を使用して pyCUDA アプリケーションをプロファイリングしようとすると、ほとんどの場合うまくいきます。[GPU 使用率の調査] をクリックすると、「低コンピューティング / Memcpy 効率」など、コードの分析結果や提案が多数表示されます。
ただし、nvvp がプログラムを実行して分析を実行するたびに、次の警告が表示されます。
収集されたイベント、メトリック、またはソース レベルの結果の一部をセッション タイムラインに関連付けることができませんでした。これにより、イベント、メトリック、およびソース レベルの結果が一部のカーネルに割り当てられなくなる場合があります。
これを修正すれば、より詳細な分析ができるようです。「収集されたイベント、メトリック、またはソースレベルの結果をセッションタイムラインに関連付ける」方法を知っている人はいますか?
cuda - CUDA nvprof 出力をビジュアル プロファイラーにエクスポートする
GPU アプリケーションの制限を確認するために、GPU アプリケーションからデータを抽出したいと考えています。アプリケーションはリモート サーバー上で実行されるため、 nvprofを使用する必要があるため、 Visual Profilerでローカルにインポートするファイルを作成する必要があります。を使用してファイルを作成しようとしましたnvprof -o file_name <app> <params>
がnvprof --analysis-metrics --output-profile file_name <app> <params>
、Visual Profiler でこれらのファイルをインポートすると、[分析] セクションでいくつかのフィールドが空になります: 「不十分なグローバル メモリ ロード データ」、「不十分なグローバル メモリ ストア データ」、「不十分なカーネル」 SMデータ」……。分析セクションのすべての情報を取得するために、ファイル (またはそれ以上) を生成するにはどうすればよいですか? flagsを指定してnvccでcuda コードをコンパイルします-lineinfo -arch compute_20 -code sm_20 --ptxas-options=-v
。空のフィールドの例を次に示します。
cuda - nvvp (ビジュアル) と nvprof (コマンドライン) の出力に違いはありますか?
CUDA プログラムのメトリック/イベントを測定するために、次のようなコマンド ラインを使用してみました。
Visual プロファイラーでも同じ指標を測定しましたnvvp
。得られる値に違いはありませんでした。
のようなメトリックを選択すると、出力の違いに気付きましたachieved_occupancy
。nvvp
しかし、これは実行ごとに異なるため、またはを使用しているかどうかに関係なく、実行するたびに異なる結果が得られるのはおそらくそのためですnvprof
。
質問:
nvvp
とnvprof
はまったく同じで、使いやすさのために のnvvp
上に構築された GUI に過ぎないという印象を受けました。nvprof
しかし、私はこのアドバイスを与えられました:
常にビジュアル プロファイラーを使用してください。コマンドラインは絶対に使用しないでください。
また、この質問は次のように述べています。
グローバルなロード/ストア効率、リプレイ、DRAM 使用率が必要なため、コマンド ライン プロファイラーは使用したくありません。これらはビジュアル プロファイラーでより明確に表示されます。
のような「動的な」指標を除けばachieved_occupancy
、結果の違いに気づいたことはありません。それで、このアドバイスは有効ですか?nvprof
働き方になんらかの不備があるのでしょうか。コマンド ライン フォームよりもビジュアル プロファイラーを使用する利点があれば教えてください。
より具体的には、nvprof
間違った結果をもたらすメトリクスはありますか?
ノート: