アイドルのちコンピューティング

都内の平凡な情報系の大学生が日々のアイドル活動、プログラミング活動について垂れ流します

Tensorflow-gpuを導入しようとした際にlibcuda.soがないというエラーを吐かれた話

アイドルの話だけじゃなくてプログラミングについての話も投稿しましょう笑

ImportError: libcuda.so.1: cannot open shared object file: No such file or directory

サーバー上に

pip install tensorflow-gpu

でTensorflow-gpuを導入しようとした際に上記の様なエラーが出ました。 もちろんサーバー上にはCUDAもcuDNNも入っています。
エラー文を読む限りlibcuda.so.1っていうfileがないぞ!と怒っています。
こういう際にはインストールされているCUDAからlibcuda.soの入ってるpathを探してきてそれを環境変数として設定して上げる必要があるそうです。 ということで探しましょう、これは個人のマシンによってバラバラなのですが自分は

/hogehoge/cuda/8.0/lib/libcuda.so.1

のような形で入っていました。このpathさえ見つかれば後はこれを環境変数としてbashrcやbash_prtofileに書いて通してあげるだけです

export PATH=/hogehoge/cuda/8.0/bin:${PATH}
export LD_LIBRARY_PATH=/hogehoge/cuda/8.0/lib/${LD_LIBRARY_PATH}

ここまで書いたところ新しいエラーが...

RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6

Python3.6.1の環境でtensorflow-gpuを導入しようとするとこういうエラーを吐かれてしまうらしいです。 対処策としては今のところ下に書かれている中ではTensorflowのversionを1.4.0から1.3.0に落とすか、Pythonのversionを3.5に落とすか、エラー文を無視して動かすか、非公式のパッチを当てる?かの4択っぽいです。 このエラー自体吐かれていても一応動くらしいのですが自分は気持ち悪いので3.5にPythonをダウングレードさせて動かしました。
github.com

以上で無事サーバー上にTensorflow-gpuが入りました! f:id:wasabin_idol:20171210172748p:plain