Как диагностировать ошибку запуска CUDA из-за отсутствия ресурсов? - PullRequest
5 голосов
/ 01 августа 2011

При попытке запустить ядро ​​CUDA (через PyCUDA) я получаю сообщение об ошибке нехватки ресурсов, и мне интересно, можно ли заставить систему сообщить мне, какой ресурс у меня короткий?на.Очевидно, что система знает, какой ресурс был исчерпан, я просто хочу также запросить его.

Я использовал калькулятор занятости, и все вроде бы нормально, так что либо угловой случай не охвачен, либо я 'Я использую это неправильно.Я знаю, что это не регистры (что, кажется, является обычным виновником), потому что я использую <= 63, и он все еще не работает с блоком 1x1x1 и сеткой 1x1 на устройстве CC 2.1. </p>

Спасибо за любую помощь.Я разместил ветку на платах NVidia:

http://forums.nvidia.com/index.php?showtopic=206261&st=0

Но ответов не получил.Если ответ «вы не можете запросить у системы эту информацию», это тоже было бы полезно узнать (вроде ...;).

Редактировать:

Максимальное использование регистра, которое я видел, было 63. Отредактировал вышеупомянутое, чтобы отразить это.

Ответы [ 2 ]

6 голосов
/ 01 августа 2011

Я думаю, что PyCUDA использует API драйвера CUDA, поэтому следующее может быть неправильным: CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES может произойти, если вы не укажете достаточное количество аргументов, или вы указали неправильный размер для аргументов, когда используете cuLaunch() для запуска ядер. Поскольку вы используете PyCUDA, может быть довольно несоответствующим список аргументов, необходимый для ядра, и аргументов, которые вы фактически передаете, так что вы можете проверить, как вы называете свои ядра.

Я думаю, что в этой ситуации это код ошибки со слабым названием ...

0 голосов
/ 01 августа 2011

См. Этот ответ

Максимальное количество регистров CUDA на поток: sm_12 против sm_20

Кажется, 70 регистров - это слишком много регистров.

...