Eu construo um docker
container FROM nvidia/cuda:8.0-devel-ubuntu16.04
no meu Dockerfile para ter o CUDA Toolkit
instalado.
Minha arquitetura é a descrita no repositório nvidia-docker oficial
Apósacriaçãoeexecução,obtenho
$nvidia-smibash:nvidia-smi:commandnotfound
EutenhoumDOCKER_HOST
queapontaparaocontêinerDockerNvidiaemexecução(amáquinaGPUs)como
exportDOCKER_HOST=tcp://x.x.x.x:2376exportDOCKER_TLS_VERIFY=1setNVIDIA_VER=367.57
eeumeconectoàinstânciadockerligandoasportasaofazerotúnelparaamáquina:
$ssh-i"$DOCKER_CERT" docker@$IP -g -R 10250:localhost:10250 -L 0.0.0.0:3000:127.0.0.1:3000 -L 0.0.0.0:8181:127.0.0.1:8181 -L 5858:127.0.0.1:5858 -L 4567:127.0.0.1:4567
Minha instância do Docker é iniciada normalmente
$ docker run --rm -it --name $CONTAINER_NAME -p 3000:3000 $CONTAINER_IMG:$CONTAINER_VERSION $CMD
Eu posso me conectar à instância docker nvidia do host do docker:
loreto@nvidia-docker:~$ sudo nvidia-docker run --rm nvidia/cuda nvidia-smi
Fri Mar 17 09:08:03 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57 Driver Version: 367.57 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GRID K520 Off | 0000:00:03.0 Off | N/A |
| N/A 35C P8 17W / 125W | 0MiB / 4036MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
e até mesmo
loreto@nvidia-docker:~$ nvidia-smi
Fri Mar 17 09:12:59 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57 Driver Version: 367.57 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GRID K520 Off | 0000:00:03.0 Off | N/A |
| N/A 35C P8 17W / 125W | 0MiB / 4036MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
enquanto do meu contêiner $CONTAINER_NAME
quando estou em execução não consigo ver
$ docker exec -it $CONTAINER_NAME bash
$ nvidia-smi
nvidia-smi: command not found
O $CONTAINER_NAME
foi criado em FROM nvidia/cuda:8.0-devel-ubuntu16.04
Eu fiz esta pergunta como um problema para o repositório github nvidia-docker aqui .
[UPDATE] Eu resolvi o problema, conectando os dispositivos e configurando o driver no contêiner ao executá-lo da seguinte forma:
docker run --rm -it --device=/dev/nvidiactl --device=/dev/nvidia-uvm --device=/dev/nvidia0 -v nvidia_driver_367.57:/usr/local/nvidia:ro --name $CONTAINER_NAME -p 3000:3000 $CONTAINER_IMG:$CONTAINER_VERSION $CMD
É claro que o DOCKER_HOST
deve ser definido e o túnel deve estar aberto.