У меня есть программа Cuda, что я бегу на 680gtx, при тестировании различных параметров компилятора я заметил, что:CUDA 1,0 быстрее, чем 3,5
компиляции моего кода для вычислительных возможностей 1.0 и см 1.0 дает время выполнения 47ms
компиляция моему коду для возможности вычислительного 3.5 (также 2.0) и 3.0 см дает время выполнения 60ms
Каковы могут быть причины для таких результатов?
Я компилирую на компилятор nsight на linux и CUDA 5.0 , а мое ядро в основном связано с памятью.
спасибо.
команды:
куб.см 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"
куб.см 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