A execução do script Cuda no contêiner LXC resulta em “erro cuda: nenhum dispositivo compatível com CUDA é detectado”

2

Eu segui as seguintes instruções para configurar o Cuda dentro de um contêiner LXC.

Quando tento executar a amostra, o script ./deviceQuery dentro do contêiner após o erro é retornado:

$ ./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 executar scripts Cuda dentro de contêineres?

    
por Greg 22.12.2015 / 15:50

1 resposta

1

Parece que essa pergunta já tem foi perguntado sobre SuperUser , mas eu só posso sinalizá-lo como duplicado, se já existir no ServerFault. Vou copiar minha resposta aqui na esperança de que ajude alguém que se depara com essa questão primeiro.

Eu tive este 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 / 06:00