0

Tesla K20mでカーネルを作成していますが、-Xptas = -vを使用してソフトウェアをコンパイルすると、次の結果が得られます。

ptxas info    : 0 bytes gmem
ptxas info    : Compiling entry function '_Z9searchKMPPciPhiPiS1_' for 'sm_10'
ptxas info    : Used 8 registers, 80 bytes smem, 8 bytes cmem[1]

ご覧のとおり、8つのレジスタしか使用されていませんが、引数-arch = sm_35に言及すると、カーネルの実行時間が大幅に増加し、使用されるレジスタの数も増えます。なぜだろうと思います。

nvcc mysoftware.cu -Xptxas=-v -arch=sm_35 
ptxas info    : 0 bytes gmem
ptxas info    : Compiling entry function '_Z9searchKMPPciPhiPiS1_' for 'sm_35'
ptxas info    : Function properties for _Z9searchKMPPciPhiPiS1_
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Used 21 registers, 16 bytes smem, 368 bytes cmem[0]

複数の本で、カードに適切なアーキテクチャを使用するとパフォーマンスが向上すると言われているので、なぜ私のものが劇的に減少しているのだろうかと思います。

ありがとう。

編集:同様の質問と回答:コンパイル機能に応じてレジスタと共有メモリ?

4

1 に答える 1

3

sm_20以降でコンパイルすると、IEEE数学およびABI準拠が可能になります。これらの2つのオプションは、レジスタ数を増やし、パフォーマンスを低下させる可能性があります。これらの2つのオプションは無効にできます。

于 2013-02-24T19:05:44.770 に答える