Я последовал за следующие инструкции чтобы установить 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.
Если ваши не совпадают, я настоятельно рекомендую вам попытаться совместить их - единственный способ, о котором я знаю, - это восстановить его.