首先说明一下服务器对应的cuda和cudnn版本。
cuda一般安装在 /usr/local/cuda/ 路径下,该路径下有一个version.txt文档,里面记录了cuda的版本信息
$ cat /usr/local/cuda/version.txt
同理,cudnn的信息在其头文件里
$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
所以这里是CUDA9和cudnn7。
最近跑一个项目,安装了tensorflow_gpu==1.3.0的版本,但是运行的时候总是报错误。
内容如:ImportError: libcusolver.so.8.0: cannot open shared object file: No such file or directory
最初我想到的是可能在我的环境变量当中没有做出相应的配置,因此我做出了如下的配置。
$ vim ~/.bashrc
$ export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/cuda/lib64” #添加该行
$ export CUDA_HOME=/usr/local/cuda #添加该行
$ source ~/.bashrc #添加结束后执行,使得配置生效
接着我依然尝试了下虚拟环境下tensorflow的导入,依然是上面的错误,既然找不到libcusolver.so.8.0,我们就去看看到底有没有。
所以执行命令:
$ ls /usr/local/cuda/lib64/
是真的就没有该文件,这个时候我想到两种办法,第一种是在cuda和cudnn上改动,第二种办法就是更换tensorflow的版本。
实际上,2017.12的时候,tensorflow 1.4及以下的不支持cuda9.0,且tensorflow1.0版本以上是不支持cuda8.0以下的。tensorflow-gpu1.5以后不支持使用CUDA8.0。cuda8.0对应的cuDNN必须是6.0版的。由于前面我安装的tensorflow是1.3.0,所以很明显就不能用啦。
第一种变动很容易入坑,所以优先选择第二种。
还是要进入该项目的虚拟环境中执行操作,卸载tensorflow_gpu==1.3.0并安装tensorflow_gpu==1.5.0
$ pip uninstall tensorflow-gpu==1.3.0
$ pip install tensorflow-gpu==1.5.0
接着当我们在虚拟环境中使用tensorflow就正常了。