Сообщения компилятора nvcc

Подскажите пожалуйста, как понять сообщение компилятора о выделении разделяемой памяти. При включении опции --ptxas-options=-v nvcc выдает сообщения типа:
Used 21 registers, 836+260 bytes smem, 44 bytes cmem[1], 4 bytes cmem[14]

Что означает это 836+260 и сколько реально памяти расходуется на блок (или поток) ?

Forums: 

Used 21 registers, - каждый

Used 21 registers,
- каждый мультипроцессор имеет локальную память под "регистры" - вот их используется 21 ячейка. Ячейки 32ух-битные, значит по 84 байт на мультипроцессор.
836+260 bytes smem,
Это использование shared memory на мультипроцессор (по спецификации 1.х её там всего 16к на мультипроцессор)
44 bytes cmem[1], 4 bytes cmem[14]
это судя по всему constant memory. её всего 64к на устройство.
> сколько реально памяти расходуется на блок (или поток) ?
в CUDA память не принадлежит блокам или потокам. она принадлежит мультипроцессорам или устройствам. на одном мультипроцессоре сидит 2 (для 1.х) - 3 (для 2.0) блока выполнения, каждый блок располагает 8мью простыми процессорами (core) и одним усложнённым (supercore).

Ну вобще-то я про знак плюса

Ну вобще-то я про знак плюса спрашивал (что это за слагаемые?)

А касательно вопроса для чего эта память выделяется - думаю пишется в расчете на блок, а не на мультипроцессор. Ведь заранее число запущенных на одном мультипроцессоре блоков не известно, а память выделяется отдельно каждому блоку.

А после плюса - не может быть

А после плюса - не может быть та память, которая тратится на передачу параметров (много, конечно, но вдруг вы какую табличку небольшую передаете или строку?)

Для параметров действительно

Для параметров действительно слишком большая циферка. Все массивы я пишу в глобальную память.
А что, переданные аргументы размещаются в разделяемой памяти? (как-то логичнее их было бы помещать в локальную)

Да, через shared. Через

Да, через shared. Через локальную - это же лишняя трата регистров.

про знак плюса

вероятнее всего это показано сколько памяти тратится на выравнивание (align).

Из документации

Из документации The CUDA compiler driver:
"The first number represents the total size of all variables
declared in local or shared memory, respectively. The second number represents the amount of system- allocated data in these memory segments: device function parameter block (in shared memory) and thread/grid index information (in local memory)."

Из документации

Из документации the CUDA compiler driver:
"The first number represents the total size of all variables declared in local or shared memory, respectively. The second number represents the amount of system- allocated data in these memory segments: device function
parameter block (in shared memory) and thread/grid index information (in local memory)."