Этот вопрос является продолжением Интерпретация подробного вывода ptxas, часть I .
Когда мы компилируем файл ядра .ptx
с помощью ptxas -v
или скомпилируем его из файла .cu
с -ptxas-options=-v
, мы получаем несколько строк вывода, таких как:
ptxas info : Compiling entry function 'searchkernel(octree, int*, double, int, double*, double*, double*)' for 'sm_20'
ptxas info : Function properties for searchkernel(octree, int*, double, int, double*, double*, double*)
72 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Used 46 registers, 176 bytes cmem[0], 16 bytes cmem[14]
(тот же пример, что и в связанном вопросе; но с именем demangling)
Этот вопрос касается последней строки. Еще несколько примеров из других ядер:
ptxas info : Used 19 registers, 336 bytes cmem[0], 4 bytes cmem[2]
...
ptxas info : Used 19 registers, 336 bytes cmem[0]
...
ptxas info : Used 6 registers, 16 bytes smem, 328 bytes cmem[0]
Как мы интерпретируем информацию в этой строке, кроме количества используемых регистров? В частности:
- Является ли
cmem
сокращенным для постоянной памяти?
- Почему существуют разные категории
cmem
, т.е. cmem[0]
, cmem[2]
, cmem[14]
?
smem
вероятно означает shared memory
; это только статическая общая память?
- При каких условиях каждый вид записи появляется в этой строке?