前面写了一篇ubuntu上cuda11.1的安装
后来要用tensorflow时傻了。。
这个里面的版本对应真的搞死人。
TF要对应不同版本的cuda和cudnn,而不版本的cuda对应不同版本的Nvidia驱动。
不同版本的cudnn需要对应版本的cuda
不同版本的cuda又以来于相应版本的gcc和g++。
想要让这几个都能完美适配,真的有点难。
而且还有一点,是ubuntu和Nvidia都在向前跑,ubuntu18.04每天都提醒你更新20.04
Nvidia的cuda更新到11.1了都,cudnn也都主推8.0+了。
pytorch都是跟的很紧,但是TF还只能用cuda10.1
0、为什么这么搭配
Tensorflow2.1+都只能使用Cuda10.1,对应的gcc/g++版本也都是7.x
所以如果要使用Tensorflow2.1+,就只能选择cuda10.1,cudnn只能选择7.6.5
1、gcc和g++
ubuntu20.04默认是gcc g++ 9.x版本的
TF(Tensorflow)2.1+要求gcc7.3.1,坑爹的是,在nvidia官网查cuda10.1的依赖要求时,只有10.1update2的。gcc要求7.4.0
更坑爹的是,在ubuntu20.04上,apt-get 安装gcc7.3.1或者安装7.4.0都是找不到这个包的。。。
经过几次重装系统后,亲测直接装7.5就好。
1.1、 卸载旧的gcc/g++
cd /usr/bin
sudo rm gcc
sudo rm g++
1.2、 安装gcc/g++ 7.5
sudo apt-get install gcc-7
sudo apt-get install g++-7
1.3、重建软连接
cd /usr/bin
sudo ln -s gcc-7 gcc
sudo ln -s g++-7 g++
1.4、验证版本
gcc --version
g++ --version
2、 安装驱动+cuda+cudnn
参照之前的博客:https://blog.csdn.net/Raink_LH/article/details/109595717
cudnn7.6.5需要在历史版本中找:https://developer.nvidia.com/rdp/cudnn-archive
安装驱动,安装cuda和cudnn之后。使用如下验证
nvidia-smi
nvcc -V
nvcc -V可能会报错提示执行apt-get install nvidia-cuda-toolkit安装
按照提示再装一遍(什么鬼啊!)
3、安装TF
安装Anaconda
创建python3.7虚拟环境
安装tensorflow
使用如下方式进行测试是否一切正常。
import tensorflow as tftf.test.is_gpu_available()
4、其他参考与踩坑
4.1、tensorflow与gcc、cuda、cudnn的对照关系
查看官方文档:https://tensorflow.google.cn/install/source?hl=zh-cn#linux
4.2、旧版本cuda的安装手册(对应gcc版本说明)
1、10.0:https://docs.nvidia.com/cuda/archive/10.0/cuda-installation-guide-linux/index.html
2、10.1 update2: https://docs.nvidia.com/cuda/archive/10.1/cuda-installation-guide-linux/index.html
3、9.0 :https://docs.nvidia.com/cuda/archive/9.0/cuda-installation-guide-linux/index.html
4、8.0:https://docs.nvidia.com/cuda/archive/9.0/cuda-installation-guide-linux/index.html
4.3、 旧版本cudnn下载
https://developer.nvidia.com/rdp/cudnn-archive
4.4、出现 ***is not a symbolic link
例如:/sbin/ldconfig.real: /usr/local/cuda-10.1/targets/x86_64-linux/lib/libcudnn.so.7 is not a symbolic link
按照该路劲找到文件夹,查看确切的文件后缀,例如是libcudnn.so.7.6.5
然后执行
sudo ln -sf /usr/······/libcudnn.so.7.6.5 /usr/······/libcudnn.so.7
4.5、查看所有软连接
sudo ldconfig -v