nvccコマンドが使えるコンテナを用意する
yoloをビルドする際にnvccを利用するのですが,それの環境を一度環境構築した後にメモらないでいたら全部頭から記憶喪失していたのでメモ.
イメージの選び方
https://hub.docker.com/r/nvidia/cuda/
↑のイメージをとりあえず使っておけば無難です.
しかしながら,latestとか使ったりとかするとnvcc使えなったり,タグの選択を間違えると大変なことになります.
でも↑みたいな感じで大量にバージョンがあってどれかわからん....
環境構築してる人の中には機械学習マンもいると思いますけど,そうじゃない人もいると思います.僕は後者です.
正直cudaとかcudnnの違いとかわからないので,僕みたいな人は最初にcudnn使う?とコンテナを利用する人に聞きましょう.
環境構築進めてからcudnn入れるのは結構面倒です.
cudnn使うし,開発環境にするって人たちはnvidia/cuda:9.0-cudnn7-devel-ubuntu16.04
を使っておけばいいと思います.間違ってもruntimeを選ばないようにしときましょう.
困るかもしれないこと
コンテナを立ち上げて作業するぶんにはnvcc使えるけど,sshして使うとするとnvccが使えないなんてことがあると思います.
それは,sshした際には通ってる環境変数が違くて実行パスが微妙に違うのが原因らしいので,↓みたいな感じでシンボリックリンクを貼って対応しましょう.
ln -s /usr/local/cuda/bin/nvcc /usr/local/bin/
まぁ↑は根本的な解決にならないので環境変数通したいよって人は↓みたいな感じで環境変数通してください.正直こっちをやるべきですね.
export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
TODO
機械学習系のイメージ馬鹿でかいので,docker imageを保持するのをいい感じに外部に持っていかないと容量やばい.