2017-11-07 13 views
0

私はプロファイルしたい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アプリケーションの適切なプロファイルを作成するにはどうすればよいですか?

+0

説明している方法が適切な方法です。 nvprof - > nvvpメソッドには、nvvpのみを使用するときにはない可能性のある制限があります。私はあなたが "ファイル転送情報"によって正確に何を意味するのか分かりませんが、 'nvprof'でメトリクスを取得すると、収集されない他のタイプのデータがあります。 nvprofのドキュメントを調べて、選択するモードに応じてキャプチャする内容に制限があることを理解してください。私はあなたが報告した2番目の問題は見たことがありません。第3の問題については、プロファイリングの範囲を制限する。 –

+1

nvvpで実行できるすべてが、nvprofのnvvpへのインポートで実行できるわけではありません。たとえば、ガイド付き分析は非常に限定されています。 –

答えて

3

NVVPは、ヘッドレスノードをファーストクラスの市民としてサポートしています。リモートプロファイリングは、NVVPの主要な機能です。

NVVPがローカルのGUI対応ホストマシンで実行され、ヘッドレスマシンでnvprofを起動し、そこに必要なファイルを生成し、ファイルをコピーして開きます。このすべては透過的かつ自動的に行われます。いつものようにNVVPからさらに分析を実行することができ、これらの手順を繰り返します。

リモートプロファイリングを使用するには、NVVPを開いてからFile->New Sessionを開きます。 Localを使用せずに接続を追加し、ヘッドレスマシンの詳細を入力します。 Manage...をクリックして、NVVPをリモートマシンのツールキットパスに指定します。この一回限りの設定が完了したら、実行ファイルへのパスを入力し、通常どおりに実行します。

relevant documentationでリモートプロファイリングについて読むことができます。

関連する問題