我有我在680gtx運行, 在測試我注意到,不同的編譯器選項的CUDA程序:CUDA計算能力1.0的速度比3.5
編譯我的計算能力1.0和SM 1.0的代碼給出的47ms
一個 運行時編譯的我的代碼爲計算能力3.5(還2.0)和SM 3.0給出了60ms的
這可能是什麼原因導致的?
我正在編譯linux和CUDA 5.0上的nsight編譯器,我的內核主要是內存綁定。
謝謝。
的命令:
CC 1.0
nvcc --compile -O0 -Xptxas -v -gencode arch=compute_10,code=compute_10 -gencode arch=compute_10,code=sm_10 -keep -keep-dir /tmp/debug -lineinfo -pg -v -x cu -o "BenOlaCuda/src/main.o" "../BenOlaCuda/src/main.cu"
CC 3.0
nvcc -lineinfo -pg -O0 -v -keep -keep-dir /tmp/debug -Xptxas -v -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -odir "BenOlaCuda/src" -M -o "BenOlaCuda/src/main.d" "../BenOlaCuda/src/main.cu"
上編譯我的內核一些更多的信息:
立方厘米1.0
ptxas info : Compiling entry function '_Z15optimizePixelZ3tfPfS_S_S_tttttt' for 'sm_10'
ptxas info : Used 40 registers, 68 bytes smem, 64 bytes cmem[1], 68 bytes lmem
立方厘米3.0
ptxas info : Compiling entry function '_Z15optimizePixelZ3tfPfS_S_S_tttttt' for 'sm_30'
ptxas info : Function properties for _Z15optimizePixelZ3tfPfS_S_S_tttttt
128 bytes stack frame, 100 bytes spill stores, 108 bytes spill loads
ptxas info : Used 63 registers, 380 bytes cmem[0], 20 bytes cmem[2]
'sm 1.0' vs'sm 3.5'的問題放在一邊,它可能是一個好主意,以避免溢出堆棧幀。也許刪除一些循環展開或類似的東西? – solvingPuzzles 2013-05-12 05:23:50