nvidia-dockerでコンテナからGPUアクセス環境構築
(作業中。ローカルにGPU環境を作らずに、Docker上で作れば、すんなり行くのかもしれないが、未確認)
前提
以下のサイトの通り、一通り、CUDA, cuDNNが使える状態になっていること
Ubuntu 14.04 にChainer1.7.0環境構築 - pandazx's blog
目標
Dockerコンテナ上からGPUを使える環境を構築する。
そのために、nvidia-dockerで環境構築し、Chainerで動作確認する。
作業ログ
- Docker, nvidia-dockerをインストール
- コンテナ起動
- sudo nvidia-docker run -v local_dir:mount_dir:ro --device /dev/nvidia0:/dev/nvidia0 --device /dev/nvidiactl:/dev/nvidiactl --device /dev/nvidia-uvm:/dev/nvidia-uvm -i -t nvidia/cuda /bin/bash
- -v optionはホストとコンテナの共有ディレクトリ設定
- -v の :ro は read only 設定
- local_dirには、CUDAインストール時に作成しているcudaのsampleがあるディレクトリを指定
- --device はローカルのGPU deviceを指定. 通常、同じパスで問題ないはず
- 動作確認(以下はコンテナ上での操作)
- cuDNNインストール
- インストーラは共有したディレクトリに置いておく
- あとは、ローカルでやったのと同じようにcuDNNをインストール
- Chainerインストール
- train_mnist.py を実行したところ、以下のエラーが発生
RuntimeError: CUDA environment is not correctly set up (see https://github.com/pfnet/chainer#installation).cannot import name core
調査中
- Chainerインストール時にパスを指定してもダメだった
- cudnn 単体の動作確認はOK
- cudnn-sample-v4.tgz を解凍して、makeして、mnistCUDNN を実行して動いた