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 -V bash: nvcc: command not found
パスが通ってないだけかと思い、以下を~/.bashrcに追記するとエラー。
export PATH=/usr/local/cuda-8.0/bin:$PATH export 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 -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2016 NVIDIA Corporation Built on Tue_Jan_10_13:22:03_CST_2017 Cuda compilation tools, release 8.0, V8.0.61
ディスカッション
コメント一覧
まだ、コメントがありません