4

最適化を開始する前に、プロファイルの結果が何を意味するのかを理解しようとしています。私はCUDAとプロファイリング全般に非常に慣れていないため、結果に混乱しています。

具体的には、一見空いているように見える計算のチャンクの間に何が起こっているのかを知りたいです。CPU と GPU を上から下に見ていくと、コードの大部分で何も起こっていないように見えます。Thread1これらは、と に何もない列のように見えますGeForce。これは正常ですか?ここで何が起こっているのですか?

実行は、nvprof を使用して無負荷でマルチコア マシンで実行されました。-arch=sm_20 -m32 -g -GGPU コードはCUDA 5 用にコンパイルされています。

ここに画像の説明を入力 拡大画像

4

1 に答える 1

3

ここでのエラーは、コードをデバッグ モードでプロファイリングすることでした (-Gコンパイラ フラグ: "デバイス コードのデバッグ情報を生成")。プログラムの動作は大幅に変更されているため、これを使用してコードのプロファイリングと最適化を行うべきではありません。

もう 1 つ: nvccのデバッグ モードの完全なドキュメントを見つけるのは困難です。nvccは、ホスト アクセスとデバッグを容易にするために、おそらくレジスタ/共有メモリをグローバル メモリにダンプします。これにより、共有メモリの競合状態などの問題が隠される可能性があります (ここでの議論を参照: https://stackoverflow.com/a/10726970/1043187 )。 )。したがって、 などのプログラムもcuda-memcheck --tool racecheckリリース モードで使用する必要があります。

于 2013-02-26T05:24:57.747 に答える