nenhum dispositivo compatível com CUDA é detectado dentro do contêiner LXC

4

Eu segui as instruções a seguir e li o guia oficial em detalhes para configurar o Cuda dentro de um contêiner LXC.

Quando tento executar o exemplo de script ./deviceQuery dos códigos de amostra oficiais recebo um PASS no host . No entanto, quando executo o script no contêiner, recebo o seguinte erro :

$ ./deviceQuery 
./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 38
-> no CUDA-capable device is detected
Result = FAIL

O Cuda é reconhecido e instalado dentro do contêiner :

$ 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

Os dispositivos nVidia são montados dentro do host e do contêiner 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

Quando executo sudo nvidia-smi dentro do contêiner , recebo o seguinte erro:

Failed to initialize NVML: Unknown Error

Como posso disponibilizar o dispositivo dentro do contêiner?

linux / index.html

    
por Greg 23.12.2015 / 12:44

1 resposta

1

Eu tive esse mesmo problema, sobre o qual escrevi longamente aqui .

O problema que você está tendo pode ser causado pelo uso de um modelo LXC que não corresponde ao seu host. Eu estou usando o Proxmox 4.4, que é baseado no Debian 8.6. Meu contêiner foi baseado no Ubuntu 16.04. Assim como você, vi os nós passados no contêiner com raiz como proprietário e grupo, e não como nobody: nogroup como esperado.

Uma postagem no fórum em que tropecei me inspirou a construa um novo container baseado em um template que combine com meu host, Debian 8.6. Depois disso, os /dev foram de propriedade de nobody:nogroup e nvidia-smi identificaram corretamente minha GPU.

Se o seu não for compatível, recomendo que você tente combiná-los - a única maneira que conheço é reconstruí-lo.

    
por 30.12.2016 / 05:56