Выполнение сценария 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.

Если ваши не совпадают, я настоятельно рекомендую вам сделать так, чтобы они совпадали - единственный известный мне способ - это восстановить его.

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