9

私はCUDAプロジェクトを持っています。これは、アプリケーション ロジックを含むいくつかの .cpp ファイルと、複数のカーネルと__host__それらを呼び出す関数を含む 1 つの .cu ファイルで構成されています。

ここで、カーネルが使用するレジスタの数を特定したいと考えています。私の通常のコンパイラ呼び出しは次のようになります。

nvcc -arch compute_20 -link src/kernel.cu obj/..obj obj/..obj .. -o bin/..exe -l glew32 ...

残念ながら、この呼び出しに "-Xptxas –v" コンパイラ フラグを追加しても効果はありません。コンパイラは、以前と同じテキスト出力を引き続き生成します。コンパイルされた .exe も以前と同じように動作しますが、例外が 1 つあります。私のフレームレートは 80 fps から 1800 fps に跳ね上がります。

4

6 に答える 6

10

私は同じ問題を抱えていました、ここに私の解決策があります:

  1. *cu ファイルをデバイスのみの *ptx ファイルにコンパイルします。これにより、ホスト コードが破棄されます。

    nvcc -ptx *.cu

  2. *ptx ファイルをコンパイルします。

    ptxas -v *.ptx

2 番目のステップでは、カーネルごとに使用されているレジスタの数と、使用されている共有メモリの量が表示されます。

于 2011-03-01T11:22:23.580 に答える
3

「-Xptxas-v」、「-arch」を併用すると、詳細な情報(レジスタ番号など)を取得できません。GPUアーキテクチャ(-arch、-code)を先に割り当てる機会を失うことなく詳細を確認したい場合は、次の手順を実行でき nvcc -arch compute_XX *.cu -keep ますptxas -v *.ptx。ただし、多くの処理ファイルを取得します。確かに、kogutの答えは要点です。

于 2012-04-16T10:13:44.277 に答える
2

when you compile

nvcc --ptxas-options=-v

于 2010-09-15T17:05:13.510 に答える
0

コンパイラの冗長オプションのデフォルトを制御したい場合があります。

たとえば、VStudio goto : Tools->Options->ProjectsAndSolutions->BuildAndRun で、詳細出力を Normal に設定します。

于 2011-06-29T15:13:04.723 に答える
-1

まさにあなたが探していたものではありませんが、nvidia GPU コンピューティング SDK に同梱されている CUDA ビジュアル プロファイラーを使用できます。他の多くの有用な情報に加えて、アプリケーションの各カーネルで使用されるレジスタの数が表示されます。

于 2010-09-19T10:48:04.463 に答える