runtimeではnvccが使えないので注意[nvidia-docker2]
教訓
nvidia-dockerで環境を立てるときには、develを選ぶのが吉
説明
さて、nvidia-docker2を使ってコンテナを作成しようとしたのだが
$ docker run -it --runtime=nvidia nvidia/cuda:8.0-cudnn5-runtime-ubuntu16.04いざ、コンテナ内でCUDAのバージョンを確認しようnvccコマンドを打つも見つからないと言われる。
$ nvcc -Vbash: nvcc: command not foundパスが通ってないだけかと思い、以下を~/.bashrcに追記するとエラー。
export PATH=/usr/local/cuda-8.0/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATHその後、色々と試すうちに、そもそも /usr/local/cuda-8.0/bin のフォルダが無いということに気がついた。
で、調べてみると以下の記述に辿り着いた。
- base: starting from CUDA 9.0, contains the bare minimum (libcudart) to deploy a pre-built CUDA application. Use this image if you want to manually select which CUDA packages you want to install.
- runtime: extends the base image by adding all the shared libraries from the CUDA toolkit. Use this image if you have a pre-built application using multiple CUDA libraries.
- devel: extends the runtime image by adding the compiler toolchain, the debugging tools, the headers and the static libraries. Use this image to compile a CUDA application from sources.どうやら、3つのフレーバーに分かれているようだ。 そして、私が先ほどインストールしたイメージはruntimeで、複数のCUDAライブラリを使う為のイメージだったことが判明した。
そうか、複数のCUDAライブラリの使用が前提だったから、nvccの設定はされていなかったのか。そもそも、複数のCUDAライブラリの使用が前提のイメージって誰が使うのって思い、runtimeとかややこしいの作るなよって、文句がでてしまった。
が、文句を言っても仕方ないので、上3つのフレーバーの中で1番拡張されているdevelをインストールし、nvccコマンドを確認。
$ docker run -it --runtime=nvidia nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04$ nvcc -Vnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2016 NVIDIA CorporationBuilt on Tue_Jan_10_13:22:03_CST_2017Cuda compilation tools, release 8.0, V8.0.61