Выполнение сценария Cuda в контейнере LXC приводит к "ошибке cuda: устройство с поддержкой CUDA не обнаружено"
Я следовал приведенным ниже инструкциям, чтобы настроить Cuda внутри контейнера LXC.
Когда я пытаюсь выполнить пример скрипта./deviceQuery внутри контейнера, возвращается следующая ошибка:
$ ./deviceQuery
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 38
-> no CUDA-capable device is detected
Result = FAIL
Cuda распознается и устанавливается внутри контейнера:
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17
Устройства nVidia монтируются внутри хоста и контейнера LXC:
$ ls -l /dev/nvidia*
crw-rw-rw- 1 root root 195, 0 Dec 20 23:31 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Dec 20 23:31 /dev/nvidiactl
crw-rw-rw- 1 root root 246, 0 Dec 20 23:31 /dev/nvidia-uvm
Когда я бегу sudo nvidia-smi
внутри контейнера я получаю следующую ошибку:
Failed to initialize NVML: Unknown Error
Как выполнять скрипты Cuda внутри контейнеров?
1 ответ
Похоже, этот вопрос уже задавался в SuperUser, но я могу отметить его как дубликат, только если он уже существует в ServerFault. Я напишу свой ответ здесь в надежде, что он поможет тому, кто споткнется по этому вопросу первым.
У меня была та же самая проблема, о которой я подробно писал здесь.
Возникшая у вас проблема может быть вызвана использованием шаблона LXC, который не соответствует вашему хосту. Я использую Proxmox 4.4, который основан на Debian 8.6. Мой контейнер был основан на Ubuntu 16.04. Как и вы, я видел пропущенные узлы в контейнере с root как владельцем и группой, а не nobody:nogroup, как и ожидалось.
Сообщение на форуме, на которое я наткнулся, вдохновило меня на создание нового контейнера на основе шаблона, соответствующего моему хосту, Debian 8.6. Однажды я сделал это /dev
узлы принадлежали nobody:nogroup
а также nvidia-smi
правильно определили мой GPU.
Если ваши не совпадают, я настоятельно рекомендую вам сделать так, чтобы они совпадали - единственный известный мне способ - это восстановить его.