目录
bios禁用secure boot,也就是设置为disable
NVIDIA最新的GPU 3090和tensorflow-gpu目前有些不兼容(之后这些问题应该会逐渐消失),试过几个driver版本,cuda版本后,经过各种折腾后终于测试通过。推荐下面的版本:
- Ubuntu:18.04.5
- NVIDIA Driver:470.42.01
- CUDA Version:11.4
- cudnn Version:cudnn-8.2.2.26
1 显卡要满足cuda develop的支持
不是所有的NVIDIA的显卡都可以支持cuda develop,super系列都不支持,如2080s,不支持cuda develop的无法做深度学习(即不支持tf和pytorch),cuda develop支持的显卡列表:
https://developer.nvidia.com/cuda-gpus
2 安装cuda的同时装内置的driver
在https://www.nvidia.cn/geforce/drivers/网站搜索3090+linux64环境下支持的driver最低版本;
在https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#cuda-major-component-versions网站的table3 看一下cuda对driver版本的最低要求;
从https://developer.nvidia.com/cuda-toolkit-archive网站选择合适的cuda版本,不需要额外装driver,cuda含有适配的driver的最低版本。
注意:新发行的GPU不能装太低版本的driver,这要求我们要装的cuda内含有默认的driver版本不能太低,比如cuda_11.2.0_460.27.04_linux.run文件,装cuda11.2内置的driver为460.27.04,这个版本的driver不支持3090,这就导致你装cuda失败。
新版本GPU装低版本cuda解决方法:
第一种方法,可以采用cuda和driver分开装,在https://www.nvidia.cn/drivers/unix/linux-amd64-display-archive/网站找一个高版本的driver安装好,再去https://developer.nvidia.com/cuda-toolkit-archive找到你要的低版本cuda,同时在安装cuda的时候不要选中默认的driver;
第二种方法(推荐),机器直接装高版本cuda(内置的driver是支持新发行的GPU的),利用conda install cudatoolkit==x.x.x cudnn=x.x.x装低版本的cuda,这里的cudatoolkit是给tf或pytorch使用的,不可以不装高版本的cuda.run文件,只装cudatoolkit+driver会报错,因为cudatoolkit缺少很多run文件中才有的库。
RTX-3090我选的是cuda_11.4.0_470.42.01_linux.run ,即cuda11.4+driver470.42.01。
在https://developer.nvidia.com/rdp/cudnn-download网站选对应cuda版本的cudnn加速库,这里需要注册英伟达开发者账号下载,我选的是cudnn-11.4-linux-x64-v8.2.2.26.tgz,其他历史版本https://developer.nvidia.com/rdp/cudnn-archive
3 安装
删除原有的NVIDIA驱动程序
如果你没有安装过,或者已经卸载,可以忽略:
sudo apt-get remove --purge nvidia*
bios禁用secure boot,也就是设置为disable
如果没有禁用secure boot,会导致NVIDIA驱动安装失败,或者不正常。
禁用nouveau
打开编辑配置文件:sudo gedit /etc/modprobe.d/blacklist.conf
在最后一行添加:blacklist nouveau
这一条的含义是禁用nouveau第三方驱动,之后也不需要改回来。
由于nouveau是构建在内核中的,所以要执行下面命令生效:
sudo update-initramfs -u
重启reboot
重启之后,可以查看nouveau有没有运行:
lsmod | grep nouveau # 没输出代表禁用生效
停止可视化桌面:
为了安装新的Nvidia驱动程序,我们需要停止当前的显示服务器。
最简单的方法是使用telinit命令更改为运行级别3。
sudo telinit 3
之后会进入一个新的命令行会话,使用当前的用户名密码登录
安装driver
给驱动文件增加可执行权限:chmod 777 cuda_11.4.0_470.42.01_linux.run
然后执行安装:sudo bash cuda_11.4.0_470.42.01_linux.run
accept 后在 options中选 '不要装openGL'
重启
安装cudnn
tar -xvf cudnn-11.4-linux-x64-v8.2.2.26.tgz
cd cuda
sudo cp include/* /usr/local/cuda/include
sudo cp lib64/* /usr/local/cuda/lib64
直接测试高版本tensorflow-gpu==2.5.0
import tensorflow as tf; print('GPU',tf.test.is_gpu_available()) 返回True代表成功。
5 安装和测试低版本tensorflow-gpu
安装anaconda,构建conda环境
anaconda安装和使用自行百度
测试案例
低版本的tf,相应的cuda版本也要降级,采用conda安装低版本的cudatoolkit兼容高版本的cuda。
- python=3.5
- cudnn=7.6.5
- cudatoolkit=9.0
- tensorflow-gpu=1.11
配置环境
conda create -n randlanet python=3.5
conda activate randlanet
conda install cudatoolkit=9.0 cudnn -c https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
pip install tensorflow-gpu==1.11
测试
import tensorflow as tf; print('GPU',tf.test.is_gpu_available()) 返回True代表成功。