Мой вызов ядра завершается с ошибкой "недостаточно памяти". Он значительно использует фрейм стека, и мне было интересно, является ли это причиной его отказа.
При вызове nvcc с параметром --ptxas-options = -v выводится следующая информация о профиле:
150352 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Used 59 registers, 40 bytes cmem[0]
Оборудование: GTX480, sm20, 1,5 ГБ памяти устройства, 48 КБ общей памяти / мультипроцессор.
У меня вопрос, где размещен фрейм стека: в общей, глобальной памяти, постоянной памяти…?
Я пробовал с 1 потоком на блок, а также с 32 потоками на блок. То же «нехватка памяти».
Другая проблема: можно увеличить количество резидентных потоков до одного мультипроцессора, только если общее количество регистров не превышает количество доступных регистров на мультипроцессоре (32 КБ для моей карты). Применимо ли нечто подобное к размеру кадра стека?