Вопрос или проблема
Итак, как говорится в заголовке, каждый раз, когда я пробуждаю свой ноутбук из режима ожидания, CUDA перестает работать, просто не работает. Я должен перезагрузить свою систему, чтобы вернуть его. Чтобы вернуть его после ожидания, мне нужно выполнить ‘sudo rmmod nvidia_uvm’, а затем ‘sudo modprobe nvidia_uvm’, и, конечно, это работает, но, как вы можете себе представить, это быстро надоедает. Так как мне вернуть это навсегда? Если это имеет значение, у меня ноутбук PRIME, на котором всегда выбрана моя видеокарта Nvidia (940MX) с драйверами 440.
Похоже, что модуль nvidia_uvm
плохо работает с режимом ожидания. CUDA можно использовать снова, если модуль перезагрузить:
sudo rmmod nvidia_uvm
sudo modprobe nvidia_uvm
К сожалению, это не работает, когда есть активные приложения CUDA.
Я подал отчет об ошибке: https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-460/+bug/1921477
У меня была такая же проблема на ubuntu. Недавно я перешел на Archlinux. Я следовал этому совету на вики, и это решило эту проблему на моем ноутбуке с gtx1650.
Таким образом, можно активировать новый инструмент управления энергопотреблением. См. документацию nvidia.
Мои шаги:
- Создайте
/etc/modprobe.d/nvidia-power-management.conf
сoptions nvidia NVreg_PreserveVideoMemoryAllocations=1 NVreg_TemporaryFilePath=/tmp
. - Обновите
initramfs
. В ubuntu это делается черезupdate-initramfs -u
systemctl enable nvidia-suspend.service
. Я думаю, вам сначала нужно вручную установить файлы службы systemd в Ubuntu. См. этот пост- Перезагрузите
Эта проблема тесно связана с вопросом, который я открыл ошибки GPU не найдены.
nvidia-driver-550
с cuda-12.4
работает с решением cccplex. Но нет необходимости включать службу ожидания в последних драйверах.
Что вам нужно скопировать и вставить в файл /etc/modprobe.d/nvidia-power-management.conf
, это
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/tmp
Если вы попробуете включить службы ожидания и возобновления, вы обнаружите, что это замаскировано, НЕ снимайте маску, иначе она будет удалена. Как можно ожидать, служба используется только при ожидании и возобновлении.
У меня недостаточно очков, чтобы добавить комментарий к ответу cccplex, но он также работает с ubuntu 24.04 и geforce 4090 с драйвером 550.
Ответ или решение
Как исправить ошибку CUDA после перехода в спящий режим
Если вы столкнулись с проблемой, когда CUDA перестает работать после выхода из спящего режима, и вам приходится переустанавливать модуль nvidia_uvm
, это распространенная ситуация для пользователей ноутбуков с графическими процессорами NVIDIA. В этом руководстве мы рассмотрим шаги, которые помогут вам избавиться от этой проблемы и восстановить функциональность CUDA без необходимости постоянной перезагрузки системы.
Проблема
При выходе из спящего режима модуль nvidia_uvm
может не корректно инициализироваться, что приводит к сбоям в работе CUDA. Ваша текущая команда для ручного восстановления:
sudo rmmod nvidia_uvm
sudo modprobe nvidia_uvm
Однако этот процесс может быть утомительным, поэтому важно найти устойчивое решение.
Решение
Шаг 1: Настройка конфигурационного файла
Первым делом создайте файл конфигурации для управления параметрами модуля NVIDIA. Выполните следующую команду:
sudo nano /etc/modprobe.d/nvidia-power-management.conf
Добавьте в файл следующие строки:
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/tmp
Эти параметры помогут сохранить выделенную видеопамять и избежать ее сброса при переходе в спящий режим.
Шаг 2: Обновление initramfs
Чтобы ваши изменения вступили в силу, необходимо обновить initramfs:
sudo update-initramfs -u
Этот шаг гарантирует, что все изменения применяются при следующей загрузке системы.
Шаг 3: Включение сервисов suspend/resume
Если вы используете систему с systemd, вам нужно будет активировать сервис для управления suspend и resume. Для этого выполните:
sudo systemctl enable nvidia-suspend.service
Имейте в виду, что в некоторых случаях может потребоваться установка дополнительных файлов сервисов. Для Ubuntu обратитесь к документации или сообществу, чтобы узнать, как это сделать.
Шаг 4: Перезагрузка
После выполнения всех вышеуказанных шагов перезагрузите систему, чтобы убедиться, что все изменения были применены корректно.
Заключение
Теперь вы должны избавиться от необходимости вручную перезагружать модули после выхода из спящего режима. Каждый из приведенных шагов был разработан для того, чтобы улучшить взаимодействие между драйверами NVIDIA и вашей ОС при переходе в спящий режим, сохраняя возможность использования CUDA. Если проблема не исчезла, обратитесь к сообществу разработчиков или технической поддержке для дополнительной помощи.
Эти рекомендации должны помочь вам стабилизировать работу CUDA на вашей системе после перехода в спящий режим, улучшив ваш опыт работы с графическими приложениями и вычислениями.
Дополнительные советы
- Обязательно следите за обновлениями драйверов NVIDIA, так как новые версии могут содержать исправления для подобных проблем.
- Рассмотрите возможность перехода на другие дистрибутивы Linux, такие как Arch Linux, которые могут предложить более высокую совместимость с современными графическими технологиями.
Если у вас есть дополнительные вопросы или вы столкнулись с проблемами на этапе настройки, не стесняйтесь обращаться за помощью!