前記事(https://qiita.com/takeajioka/items/429451db33051da83e54 ) では、UbuntuでのDeep Learning環境の構築方法について書きましたが、CUDAは使いたいソフトに応じてバージョンが違います。
使い分けたい場面として、例えばtensorflowのバージョンが違うと対応するCUDAが違うことがあります。
そうなると、複数のソフトを使用する場合には複数のCUDAが必要になります。
もちろんDockerを使用する方法がありますが、いちいち仮想環境を設定・管理するのは面倒です。
もっと単純な方法は無いのでしょうか。
#解決方法
やり方は単純で複数のバージョンのCUDAそれぞれをインストールして、それぞれにパスを通しただけです。
インストールするときは、シンボリックリンクは作成しません。
パスを通すのは.bashrcの最初の部分に以下のように追加します。
export PATH="/usr/local/cuda-8.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH"
export PATH="/usr/local/cuda-9.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH"
export PATH="/usr/local/cuda-10.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH"
こうすることで使い分けて、使用することができました。
複数のバージョンのtensorflow-gpuを使っても特にエラーになりませんでした。
tensorflowが勝手に対応したCUDAを使用するようです。
#cuDNNの複数バージョンの使用方法
cuDNNの場合は、CUDAのバージョンが違う場合は違うフォルダに入るため複数のインストールができるようです。
またcuDNN7と6など、メジャーバージョン違う場合も複数の使い分けができるようです。
使い分けられない例として、同じCUDAバージョンでcuDNNのメジャーバージョンも同じ場合です。
例えばCUDA9.0のcuDNN7.3.1と7.1.4です。
この場合は、逐次使いたい方のcuDNNをインストールして上書きすれば使えるようになります。
そのため、そこまで手間ではありません。