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]
複数の本で、カードに適切なアーキテクチャを使用するとパフォーマンスが向上すると言われているので、なぜ私のものが劇的に減少しているのだろうかと思います。
ありがとう。
編集:同様の質問と回答:コンパイル機能に応じてレジスタと共有メモリ?