2

Visual Studio2010のNsight2.2を使用して、関数__device__内にある関数のプロファイルを作成する方法を知りたいです。どの関数が多くのリソースと時間を消費しているかを知る必要があります。__global__CC2.0にCUDA5.0があります。

4

1 に答える 1

4

Nsight Visual Studio Edition 3.0 CUDA Profilerは、ソース相関実験を導入します。プロファイルCUDAアクティビティは、次のソースレベルの実験をサポートします。

  • 命令数-実行された命令、実行されたスレッド命令、アクティブなスレッドヒストグラム、カーネル内のすべてのユーザー命令の述語スレッドヒストグラムを収集します。システムコール(printf)に関する情報は収集されません。

  • 分岐分岐-フロー制御命令の分岐、分岐なし、および分岐カウントを収集します。

  • メモリトランザクション-グローバル、ローカル、および共有メモリ命令のトランザクションカウント、理想的なトランザクションカウンター、および要求されたバイトを収集します。

この情報は、SASS命令ごとに収集されます。カーネルが-lineinfo(--generate-line-info)を使用してコンパイルされている場合、情報はPTXおよび高レベルのソースコードにロールアップできます。このデータはSASSからロールアップされるため、一部の統計は高レベルのソースに対して直感的ではない場合があります。たとえば、ブランチ統計では、100%取得されたと予想したときに、100%取得されなかったことが示される場合があります。SASSコードを見ると、コンパイラーが条件を逆にしたことがわかります。

また、最適化されたビルドでは、コンパイラが行テーブル情報を維持できない場合があることにも注意してください。

ここに画像の説明を入力してください

現時点では、ハードウェアパフォーマンスカウンターとタイミングはカーネルレベルでのみ使用できます。

コメントに記載されているように、デバイスコードのタイミングはclock()とclock64()を使用して実行できます。これは非常に高度な手法であり、SASSを理解する能力と、SMワープスケジューラに関する結果を解釈する能力の両方が必要です。

于 2013-02-27T20:36:43.857 に答える