Переполнение стека на графическом процессоре Fermi ничем не отличается от переполнения стека на любом другом устройстве. Каждый поток получает статический стек и выделение кучи из глобальной памяти при запуске. Если вы исчерпали стек из-за чрезмерной рекурсии, выделите больше доступной памяти кучи или попробуете работать вне границ для любой переменной, хранящейся в памяти кучи, будет сгенерирован сбой защиты, и вы получите сообщение об ошибке переполнения стека. Из вашего вопроса я бы предположил, что вы исчерпываете доступное пространство кучи для потока через вызовы malloc на стороне устройства.
API времени выполнения CUDA включает функции для управления стеком и кучей памяти cudaDeviceSetLimit и cudaDeviceGetLimit . С их помощью вы можете проверить, сколько стека, кучи и printf
FIFO каждому потоку дается средой выполнения, и попробовать увеличить кучу и размер стека, чтобы увидеть, исчезнет ли ваша проблема.