私はプロファイルしたいCUDAアプリケーションに取り組んでいます。今まで私が使ってきたのはコマンドラインプロファイラのnvprof
だけで、集計された統計情報が表示されます。ヘッドレスノードでCUDAコードをプロファイルする方法は?
私はGUIプロファイラNVVPの使用について考えました。問題は、アプリケーションを実行しているリモートのLinuxノードにGUI(X.orgを含む)がないことです。さらに、たとえリモートノード上でX11スタックをいくつか取得できたとしても、プロファイリングの全期間にわたって自分自身のラップトップを生き生きとした状態に保つことは、面倒です。
私は次のようにすべての必要な情報を収集してみました:
nvprof --analysis-metrics -o application.nvprof ./myapplication
その後、私は私のラップトップ上に出力ファイルをコピーして、NVVPで表示します。しかし、これには3つの問題があります。
まず、出力ファイルをNVVPに読み込むと、ファイル転送情報はありません。 NVVPウィンドウには表示されません。
第2に、コールグラフが完全に歪んでいます。カーネルの起動間隔はカーネルの継続時間の100倍以上であり、依存関係とフロー解析は不可能です。
最後に、私のアプリケーションではGPUメモリが大量に使用されています。プロファイリングの間、デバイスはメモリ不足になります。スタンドアローン実行時にはそうではありません。
ヘッドレスノードでCUDAアプリケーションの適切なプロファイルを作成するにはどうすればよいですか?
説明している方法が適切な方法です。 nvprof - > nvvpメソッドには、nvvpのみを使用するときにはない可能性のある制限があります。私はあなたが "ファイル転送情報"によって正確に何を意味するのか分かりませんが、 'nvprof'でメトリクスを取得すると、収集されない他のタイプのデータがあります。 nvprofのドキュメントを調べて、選択するモードに応じてキャプチャする内容に制限があることを理解してください。私はあなたが報告した2番目の問題は見たことがありません。第3の問題については、プロファイリングの範囲を制限する。 –
nvvpで実行できるすべてが、nvprofのnvvpへのインポートで実行できるわけではありません。たとえば、ガイド付き分析は非常に限定されています。 –