原因
由于显卡是3090,安装cuda是11.3版本的,而tensorflow官网对应表里面,最高2.6 也不支持cuda11.3。
于是上网寻找帮助,便选择了tensorflow2.4.0+cuda11.0+cudnn8.0
这样的配置(参考博客见末尾)。但是,想不到中间踩了各种坑。。。
开始安装
基本环境
Ubuntu 16.04+Anaconda
操作
按部就班,首先创建一个新的conda环境:
conda create -n tf2.4 python=3.6
激活新环境:
conda activate tf2.4
接下来先安装cuda,在conda环境下,提供了cudatoolkit的二进制分发包,故优先考虑使用conda安装:
conda install cudatoolkit=11.0
接下来安装cudnn,按照博主所说
需要注意的是,conda默认源是找不到 cudnn8.0版本的,但是在conda-forge这一channel中是存在的,因此使用-c来指定:
conda install -c conda-forge cudnn=8.0
但在我实际操作的时候,会提示找不到该版本。所以在https://anaconda.org/里搜索关键词手动去找适合的包。找到了cudnn8.4安装命令:
conda install -c nvidia cudnn
接下来的事情就简单了,安装pip install tensorflow-gpu=2.4.0
。注意这里可能会遇见坑,报错Illegal instruction (core dumped)
原因:*
新版本(version >= 1.6.0)的Tensorflow binary release是在avx指令环境下编译的。如果你的CPU不支持该类型指令,就不能使用新版本。*
解决方法:
2.4.0的问题,可以升级2.4.1,因为官方发布是这么说的
Release 2.4.1 This release removes the AVX2 requirement from TF 2.4.0.
pip install tensorflow-gpu=2.4.0
测试
import tensorflow as tf
print(tf.__version__)
print('GPU', tf.test.is_gpu_available())
成功