Ошибка запуска истекла и была прервана с помощью Bumblebee в Linux

При запуске длинного ядра (особенно в режиме отладки с некоторой проверкой памяти) на графическом процессоре GeForce с поддержкой CUDA и Bumblebee я получаю следующую ошибку:

Ошибка 6 CUDA: время ожидания истекло и было прекращено

Похоже, это вызвано сторожевым таймером драйвера NVIDIA. Решение доступно здесь. Тем не менее, почему это происходит при использовании шмеля и optirun запустить простое ядро ​​CUDA (т.е. я не использую свой графический процессор NVIDIA для отображения)?

Команда, которую я использовал для запуска программы:

optirun [cuda-memcheck] ./my_program program_options

1 ответ

Решение

Решение (найденное здесь) заключалось в использовании --no-xorg вариант для optirunт.е.

optirun --no-xorg [cuda-memcheck or cuda-gdb] ./my_program program_options

Действительно, поведение по умолчанию optirun является создание вторичного X-сервера, который затем будет подвергаться контролю водителя. Используя --no-xorg Опция, мы можем избежать ненужных последствий этого дополнительного X-сервера. Эта новая опция доступна с версии Bumblebee 3.2.

Это также обеспечивает способ использования cuda-gdb и избежать следующей ошибки:

Неустранимый: все устройства CUDA используются для отображения и не могут использоваться во время отладки. (код ошибки = 24)

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