当前位置: 代码迷 >> 综合 >> tensorflow2.x+ubuntu20.04+CUDA10.1+cudnn7.6踩坑日记
  详细解决方案

tensorflow2.x+ubuntu20.04+CUDA10.1+cudnn7.6踩坑日记

热度:25   发布时间:2023-12-07 05:30:05.0

前面写了一篇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

 

  相关解决方案