cuda-gdb не входит в ядра

Я пытаюсь получить следы памяти от CUDA-GDB. Однако я не могу войти в код ядра. Я использую флаги nvcc -g -G и -keep, но безрезультатно. Я могу поставить точку останова на функцию ядра, но когда я пытаюсь получить доступ к следующей инструкции, она переходит к концу функции ядра. Я пробовал это на примерах SDK, и я наблюдаю такое же поведение. Я работаю над Cuda 5 Инструментарий. Какие-либо предложения? Спасибо!

1 ответ

Решение

Такое поведение типично для ошибки запуска ядра. Убедитесь, что вы проверяете коды возврата вызовов CUDA. Обратите внимание, что для отладки вы можете добавить дополнительный вызов cudaDeviceSynchronize сразу после вызова ядра и проверки кода возврата из этого вызова - это наиболее точный способ выяснить причину ошибки запуска асинхронного ядра.

Обновление: код, работающий вне отладчика, но не в cuda-gdb, чаще всего вызывается попыткой отладки в системе с одним графическим процессором из графической среды. cuda-gdb не может использовать GPU совместно с Xwindows, так как это приведет к зависанию ОС.

Вам нужно выйти из графического окружения (например, выйти из окна X) и отладить с консоли, если ваша система имеет только один графический процессор.

Если у вас система с несколькими графическими процессорами, вам следует проверить конфигурацию Xwindow (Xorg.conf), чтобы она не использовала графический процессор, оставленный вами для отладки.

Другие вопросы по тегам