Nvidia-smi не работает после установки драйвера в контейнере сингулярности

Я использую сингулярность, и мне нужно установить драйвер nvidia в мой контейнер сингулярности, чтобы выполнить глубокое обучение с gtx 1080. Этот образ сингулярности создан из докера nvidia отсюда: https://ngc.nvidia.com/catalog/containers/nvidia:калди и преобразован в контейнер сингулярности. Я думаю, что не было драйверов nvidia, потому что nvidia-smi не был найден до того, как я установил драйвер.

Я сделал следующие команды:

    add-apt-repository ppa:graphics-drivers/ppa
    sudo apt update
    apt install nvidia-418

после этого я хотел посмотреть, правильно ли установлен драйвер, я сделал команду:

nvidia-smi

которые возвращают: Не удалось инициализировать NVML: несоответствие версии драйвера/библиотеки

Я искал о том, как решить эту ошибку и нашел эту тему: Несоответствие версии драйвера/библиотеки NVIDIA NVML

Один ответ говорит, чтобы сделать команду:

lsmod | grep nvidia

а затем rmmod на каждом, кроме nvidia, и, наконец, rmmod nvidia.

rmmod drm

Но когда я делаю это, поскольку тема исключает это, у меня возникает ошибка: rmmod: ОШИБКА: модуль nvidia используется.

В теме сказано нажать lsof /dev/nvidia* и убить процесс, использующий модуль, но я ничего не вижу с написанным drm, и мне кажется, что это очень плохая идея убить процесс (Xorg, gnome-she) .

Вот ответ на команду lsof /dev/nvidia*, за которой следует команда lsmod | grep nvidia, а затем rmmod drm Nvidia-smi не работает после установки драйвера в контейнере сингулярности Перезагрузка компьютера также не помогла.

что я должен сделать, чтобы управлять с помощью nvidia-smi и иметь возможность использовать свой графический процессор из контейнера сингулярности?

Спасибо

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
4 084
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Возможно, вам придется выполнить описанные выше шаги в хост-ОС, а не в самом контейнере. /dev монтируется в контейнер как есть и по-прежнему может использоваться хостом, хотя процессы запускаются в другом пользовательском пространстве.

Ответ принят как подходящий

Спасибо за ваш ответ. Я хотел установить драйвер графического процессора в контейнере сингулярности, потому что внутри контейнера я не мог использовать графический процессор (команда nvidia-smi : не найдена), а вне контейнера я мог использовать nvidia-smi.

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

Теперь я нашел решение: чтобы использовать GPU из контейнера сингулярности, вы должны добавить --nv при вызове контейнера. пример :

singularity exec --nv singularity_container.simg ~/test_gpu.sh 

или

singularity shell --nv singularity_container.simg

Когда вы добавите --nv, контейнер получит доступ к драйверу nvidia, и nvidia-smi будет работать. Без этого вы не сможете использовать GPU, nvidia-smi не будет работать.

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