Назад | Перейти на главную страницу

Выполнение сценария 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 внутри контейнеров?

Похоже, в этом вопросе уже спрашивали на SuperUser, но я могу пометить его как дубликат только в том случае, если он уже существует в ServerFault. Я скопирую здесь свой ответ в надежде, что он поможет тому, кто первым наткнется на этот вопрос.

У меня была такая же проблема, о которой я подробно писал Вот.

Проблема может быть вызвана использованием шаблона LXC, который не соответствует вашему хосту. Я использую Proxmox 4.4, основанный на Debian 8.6. Мой контейнер был основан на Ubuntu 16.04. Как и вы, я видел переданные узлы в контейнере с корень как владелец и группа, а не никто: nogroup как и ожидалось.

А сообщение на форуме, на которое я наткнулся вдохновил меня на создание нового контейнера на основе шаблона, подходящего для моего хоста, Debian 8.6. Как только я это сделал, /dev узлы принадлежали nobody:nogroup и nvidia-smi правильно определил мой GPU.

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