ubuntu18.04安装tensorflow2.0,cuda10.0,cudnn填坑记录
安装cuda,cudnn
安装过程网上已经有很多文章有写了,但是按照别人的过城安装下来还是各种错误,这个主要记录一些那些文章没有写的操作。附:本次安装使用ubuntu18.04系统,显卡RTX2080
具体安装过程可以参考 https://blog.csdn.net/u014754541/article/details/97108282 这篇文章的做法
但是我实测tensorflow2.0是用不了cuda10.1的,只能在电脑上再装一个cuda10.0,两个版本可以随意切换使用。一般就是使用cuda10.0
安装完成后的配置:
配置~/.bashrc文件
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
创建连接文件
sudo vim /etc/ld.so.conf.d/cuda.conf
添加内容
/usr/local/cuda-10.0/lib64
执行
sudo ldconfig
坑1:安装完成后,提示libcudnn.so.7 is not a symbolic link 不是符号连接
有一种安装cudnn的方法是下载文件后,直接复制include和lib64下面的所有文件到/usr/local/cuda对应的文件夹下面,这个会在sudo ldconfig 的时候提示这个错误。这个时候要把 libcudnn.so.7.6.4(具体看下载的cudnn版本,不同的版本这个后面的数字不一样)创建软连接到libcudnn.so.7
sudo ln -sf /usr/local/cuda-10.0/targets/x86_64-linux/lib/libcudnn.so.7.6.4 /usr/local/cuda-10.0/targets/x86_64-linux/lib/libcudnn.so.7
坑2:运行tensorflow代码时候,提示Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
解决方案:
在导入tensorflow后的代码加入就可以解决,不知道是什么原理
from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)
tensorflow成功加载gpu运行环境会有这样的打印信息
Successfully opened dynamic library libcudart.so.10.0
Successfully opened dynamic library libcublas.so.10.0
Successfully opened dynamic library libcufft.so.10.0
Successfully opened dynamic library libcurand.so.10.0
Successfully opened dynamic library libcusolver.so.10.0
Successfully opened dynamic library libcusparse.so.10.0
Successfully opened dynamic library libcudnn.so.7
在python代码中执行
import tensorflow as tf
print(tf.test.is_gpu_available())
打印结果为True即为gpu可用
切换cuda10.0和cuda10.1的方法
在ubuntu上安装了cuda10.0和cuda10.1后,可以通过如下方式实现切换(虽然现在的tensorflow2.0用不了cuda10.1,但以后肯定用的上的对吧)
1.两个版本默认路径都是安装在/usr/local下面,一个是cuda-10.0,一个是cuda-10.1,还有一个cuda是一个软连接
执行下面的语句更改cuda软链接指向文件夹
cd /usr/local
sudo rm -f cuda
sudo ln -s cuda10.0 cuda # 更改为cuda10.0
sudo ln -s cuda10.1 cuda # 更改为cuda10.1
2.修改~/.bashrc
将里面的版本修改成需要的版本,修改完成要记得source ~/.bashrc
3.修改sudo vim /etc/ld.so.conf.d/cuda.conf
将里面的版本修改成需要的版本,修改完成要记得sudo ldconfig
就这样已经完成了切换