nvidia-dockerで特定のバージョンが動作しない
Nvidia-docker2で特定のバージョン以降が動作しない
例えばCUDA9.0のイメージは
1$ docker run --runtime=nvidia --rm nvidia/cuda:9.0-devel-ubuntu16.04 nvidia-smi
2Sun Apr 8 03:27:41 2018
3+-----------------------------------------------------------------------------+
4| NVIDIA-SMI 384.111 Driver Version: 384.111 |
5|-------------------------------+----------------------+----------------------+
6| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
7| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
8|===============================+======================+======================|
9| 0 GeForce GTX 980 Ti Off | 00000000:01:00.0 On | N/A |
10| 0% 36C P8 14W / 250W | 32MiB / 6075MiB | 1% Default |
11+-------------------------------+----------------------+----------------------+
12| 1 GeForce GTX 980 Ti Off | 00000000:02:00.0 Off | N/A |
13| 0% 36C P8 15W / 250W | 2MiB / 6078MiB | 1% Default |
14+-------------------------------+----------------------+----------------------+
のようにコンテナの起動とGPUの情報の取得ができるが
1$ docker run --runtime=nvidia --rm nvidia/cuda:9.1-devel-ubuntu16.04 nvidia-smi nvidia-smi
2docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \"process_linux.go:385: running prestart hook 1 caused \\\"error running hook: exit status 1, stdout: , stderr: exec command: [/usr/bin/nvidia-container-cli --load-kmods configure --ldconfig=@/sbin/ldconfig.real --device=all --compute --utility --require=cuda>=9.1 --pid=11413 /var/lib/docker/overlay2/028a6f3b9995b2357c899949cda07047f8858364ca666c7047f652e338b108f2/merged]\\\\nnvidia-container-cli: requirement error: unsatisfied condition: cuda >= 9.1\\\\n\\\"\"": unknown.
このような表示になって起動することができない
Nvidia-Dockerの動作要件にはGPUドライバのバージョンが絡んでいるようで当該マシンでのNvidiaのドライバのバージョンによって動かないことがある
1$ dpkg -l | grep nvidia
2~関係のない表示は省略~
3ii nvidia-384 384.111-0ubuntu0.16.04.1 amd64 NVIDIA binary driver - version 384.111
のように当該マシンではver384がインストールされていることがわかる
GPUドライバとバージョンの関係性はレポジトリのwikiにまとまっている
384ではCUDA9.0までしか対応していないため9.1は動作させることができない
ので何らかの方法でバージョンを上げる必要がある
Ubuntuならレポジトリが提供されているのでそこから入れるのが楽
1$ sudo add-apt-repository ppa:graphics-drivers/ppa
2$ sudo apt-get update
3$ sudo apt-get install nvidia-387
もちろん公式サイトからGPUドライバを落としてきてビルドしても良い
ちょっと面倒ではあるが基本的なビルドツールが入ってればそんなに手こずらずに入るはず