Visual Studio2010のNsight2.2を使用して、関数__device__
内にある関数のプロファイルを作成する方法を知りたいです。どの関数が多くのリソースと時間を消費しているかを知る必要があります。__global__
CC2.0にCUDA5.0があります。
1 に答える
Nsight Visual Studio Edition 3.0 CUDA Profilerは、ソース相関実験を導入します。プロファイルCUDAアクティビティは、次のソースレベルの実験をサポートします。
命令数-実行された命令、実行されたスレッド命令、アクティブなスレッドヒストグラム、カーネル内のすべてのユーザー命令の述語スレッドヒストグラムを収集します。システムコール(printf)に関する情報は収集されません。
分岐分岐-フロー制御命令の分岐、分岐なし、および分岐カウントを収集します。
メモリトランザクション-グローバル、ローカル、および共有メモリ命令のトランザクションカウント、理想的なトランザクションカウンター、および要求されたバイトを収集します。
この情報は、SASS命令ごとに収集されます。カーネルが-lineinfo(--generate-line-info)を使用してコンパイルされている場合、情報はPTXおよび高レベルのソースコードにロールアップできます。このデータはSASSからロールアップされるため、一部の統計は高レベルのソースに対して直感的ではない場合があります。たとえば、ブランチ統計では、100%取得されたと予想したときに、100%取得されなかったことが示される場合があります。SASSコードを見ると、コンパイラーが条件を逆にしたことがわかります。
また、最適化されたビルドでは、コンパイラが行テーブル情報を維持できない場合があることにも注意してください。
現時点では、ハードウェアパフォーマンスカウンターとタイミングはカーネルレベルでのみ使用できます。
コメントに記載されているように、デバイスコードのタイミングはclock()とclock64()を使用して実行できます。これは非常に高度な手法であり、SASSを理解する能力と、SMワープスケジューラに関する結果を解釈する能力の両方が必要です。