我一直在寫我的特斯拉K20m,內核,當我編譯-Xptas = -v軟件我得到如下結果:改變CUDA拱的論點讓我用更多的寄存器
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]
自有人提到多本書,使用正確的架構爲卡爲了提高性能,我想知道爲什麼我的顯着減少。
謝謝。
編輯: 類似的問題和答案:Registers and shared memory depending on compiling compute capability?
它看起來像編譯器正在做出不同的優化決策。你能提供一個你可以看到的簡短的可編輯複製器嗎?我對資源使用方面的變化沒有那麼感興趣,因爲我正處於您所報告的急劇放緩階段。 – 2013-02-24 15:42:31
所以基本上,當我使用'sm_10'代碼需要2.000235毫秒來執行,但是當使用'sm_35'代碼需要2.538336到3.xxxxxx毫秒,這在這個內核的情況下是令人印象深刻的 – Anoracx 2013-02-24 15:45:15
我實際上不能給這個代碼現在使用了一部分代碼,它不是我的。 – Anoracx 2013-02-24 15:54:41