Почему -g -G приводит к ошибке 7 Cuda: слишком много ресурсов запрошено для запуска? - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть приложение C ++ Cuda toolkit v9.2, которое прекрасно работает с -O, но если я собираю с -g -G, я получаю ошибку cuda 7 во время выполнения:

слишком много ресурсов запрошено для запуска

Я понимаю отсюда , что это значит:

превышено количество регистров, доступных на мультипроцессоре. Уменьшите количество потоков на блок для решения проблемы.

Я бы не стал сокращать количество потоков в блоке, поскольку он оптимизирован. Что я могу сделать, чтобы для отладочных сборок я использовал меньше регистров, больше в соответствии с оптимизированными? Как я могу отследить, откуда взялась дополнительная регистрация в моем приложении?

1 Ответ

1 голос
/ 05 апреля 2019

Как также упоминалось в комментариях выше, для отладочных сборок обычно требуется больше ресурсов по разным причинам.

Вы можете использовать опцию --maxrregcount или __launch_bounds__ квалификатор , чтобы установить ограничение на количество регистров, которые разрешено использовать компилятору. Обратите внимание, что поворот этой ручки действительно означает обмен одного ресурса на другой. Принудительное использование компилятором меньшего количества регистров, как правило, означает, что он должен проливать больше. Большее количество разливов обычно означает увеличение требований к локальной памяти. В крайнем случае, вы можете столкнуться с другим пределом там & hellip;

...