在Ubuntu18.04 安装CUDA10.1、cuDNN和TensorFlow2.3.0

Ubuntu18.04+CUDA10.1+TensorFlow2.3.0

踩坑总结

!!!CUDA版本与cuDNN以及TensorFlow的版本要对应

一、安装NVIDIA驱动

首先,查看自己电脑的显卡型号

在终端输入命令 lspci | grep -i vga

但输入后返回的是4个数字,并没有发现显卡型号
在这里插入图片描述

参考下面链接后知道返回的是一个十六进制数字代码,根据这个数字代码可以找到相应的显卡类型。

Linux(Ubuntu)系统查看显卡型号

The PCI ID Repository

在这里插入图片描述
在输入框中输入终端返回的十六进制数,就能查到显卡类型,我的是Quadro P2200。

下载驱动安装包

知道自己的显卡型号后,即可登录NVIDIA官网查询对应的驱动并下载。

下图是CUDA和显卡驱动版本的对应表,看表中符号是“>=”,所以下载驱动时只需满足驱动版本高于所要下载的CUDA对应版本就可以了,通常选择官网查询给出的驱动版本。

(我的显卡驱动版本是450的,看这个表就想着下载对应的CUDA11,结果最后TensorFlow还没有支持到CUDA11,只好卸了重装T^T)
CUDA和驱动版本对应

NVIDIA驱动程序下载

输入自己的显卡型号就能给出推荐的驱动,点击下载即可。
在这里插入图片描述

安装驱动

参考链接https://blog.csdn.net/u014797226/article/details/79626693

1、禁用nouveau第三方驱动

打开编辑配置文件: sudo gedit /etc/modprobe.d/blacklist.conf

在最后一行添加:blacklist nouveau

改好后执行命令:sudo update-initramfs -u

重启使之生效:reboot

输入lsmod | grep nouveau,若无输出则代表成功。

2、验证是否安装了gcc

在这里插入图片描述
3、关闭图形界面

Ctrl+Alt+F1/F3 进入tty界面
输入下面命令关闭图形界面:

sudo service lightdm stop

或者

sudo telinit 3

给驱动run文件赋予可执行权限:sudo chmod a+x NVIDIA-Linux-x86_64-450.80.0.2.run (下载的驱动文件名)

安装:sudo ./NVIDIA-Linux-x86_64-450.80.0.2.run -no-opengl-files

开启X服务:sudo /etc/init.d/lightdm start (或者:sudo service lightdm start)

–no-opengl-files 只安装驱动文件,不安装OpenGL文件。这个参数最重要
–no-x-check 安装驱动时不检查X服务
–no-nouveau-check 安装驱动时不检查nouveau
后面两个参数可不加。

重启,输入命令:nvidia-smi

出现如下信息则安装成功。
在这里插入图片描述

二、安装CUDA10.1

1、下载CUDA10.1

CUDA工具包下载

在这里插入图片描述
选择runfile文件下载,放到主目录下。

2、安装

ctrl + alt + F1/F3 进入tty命令行界面,登录用户和密码

关闭图形界面,同上 安装NVIDIA驱动时操作

sudo service lightdm stop

或者

sudo telinit 3

给cuda可执行权限:

sudo chmod a+x cuda_10.1.105_418.39_linux.run

运行cuda文件:

sudo ./cuda_10.1.105_418.39_linux.run --no-opengl-libs

cuda主要有以下参数:

–no-opengl-libs:表示只安装驱动文件,不安装OpenGL文件。必需参数,原因同上。注意:不是-no-opengl-files。
–uninstall (deprecated):用于卸载CUDA Driver(已废弃)。
–toolkit:表示只安装CUDA Toolkit,不安装Driver和Samples
–help:查看更多高级选项。

(注:因为已安装NVIDIA驱动,故安装CUDA时有一个选项DRIVER即驱动不要勾选,否则会安装失败

安装过程结束后会有以下信息:

Toolkit :Installed in /usr/local/cuda-10.1
Samples :Installed in /home/vincent

安装完成,重启。

3、验证是否成功安装CUDA

打开终端,输入:

export PATH="/usr/local/cuda-10.1/bin:$PATH" 
export LD_LIBRARY_PATH="/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH" 

这两条命令是将cuda的bin文件和lib导出到系统环境中。

如果安装的版本不是一样的,更换路径中的cuda-10.1。

终端输入:

nvcc -V

在这里插入图片描述
出现版本信息则代表正常。

编译samples例子

编译并测试设备 deviceQuery:
cd /usr/local/cuda-9.2/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

#编译并测试带宽 bandwidthTest:
cd ../bandwidthTest
sudo make
./bandwidthTest

如果这两个测试的最后结果都是Result = PASS,说明CUDA安装成功。

将cuda的bin和lib写入系统环境

sudo gedit ~/.bashrc

打开~.bashrc文件在末尾追加:

export CUDA_HOME=/usr/local/cuda-10.1
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.1/bin:$PATH

然后在终端输入以使路径生效

. ~/.bashrc

参考链接:Linux安装CUDA的正确姿势

三、安装cuDNN

cuDNN的全称为NVIDIA CUDA® Deep Neural Network library,是NVIDIA专门针对深度神经网络(Deep Neural Networks)中的基础操作而设计基于GPU的加速库。cuDNN为深度神经网络中的标准流程提供了高度优化的实现方式,例如convolution、pooling、normalization以及activation layers的前向以及后向过程。

cuDNN下载

只要与cuda版本匹配就可以了

在这里插入图片描述

点击下载后,选择cuDNN Library for Linux

在这里插入图片描述
下载这个需要登录,直接用邮箱微信扫一扫登录就可以了

下载完成以后将其解压到Cuda的目录当中,依次执行如下命令:

tar -xzvf cudnn-10.1-linux-x64-v8.0.4.30.tgz

sudo cp cuda/include/cudnn*.h /usr/local/cuda/include

sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64

sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

网上有验证cuDNN是否安装成功的步骤,是查看cudnn.h文件,输入的是“cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2”,但是我输入后没有任何输出,后来看到了“安装成功后验证实际上显示的就是cudnn_version.h里的版本信息”,于是把cudnn.h改成cudnn_version.h。输入

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述

成功显示版本信息。

Ubuntu16.04下安装cuda和cudnn的三种方法(亲测全部有效)

另:安装多个版本的cuda并切换

安装过程不变,
将~/.bashrc 或 ~/.zshrc 下与cuda相关的路径都改为 /usr/local/cuda/ 而不使用 /usr/local/cuda-10.1/ 或/usr/local/cuda-10.1/。

#切换cuda版本
rm -rf * /usr/local/cuda          #删除之前创建的软链接

sudo cp -r /usr/local/cuda-10.1/* /usr/local/cuda/

nvcc -V                     #查看当前 cuda 版本


#cuda8.0 切换到 cuda9.0 
rm -rf * /usr/local/cuda

sudo cp -r /usr/local/cuda-10.0/* /usr/local/cuda/

nvcc -V

四、安装TensorFlow

参考:在Linux服务器上配置tensorflow-gpu版(最详细教程)

系统中要有anaconda,这里就跳过了。

首先,建立TensorFlow版本环境

输入conda create -n (环境名称) python=3.6(python必须3.5或3.6,3.6以上版本tensorflow可能会报错)

conda create -n tensorflow36 python=3.6

等待完成。

输入source activate tensorflow36(我的环境名称为tensorflow36,可自己在创建是命名),进入创建的tensorflow环境。
在这里插入图片描述
在安装之前配置清华镜像,下载速度会很快.

在~/.config/.pip目录下新建(或修改)pip.conf文件

然后在文件中输入如下信息:

[global] 
index-url =  https://pypi.tuna.tsinghua.edu.cn/simple/

安装

根据版本对应关系,我就安装了2.3.0版,输入

pip install tensorflow-gpu==2.3.0

在这里插入图片描述
官网给出的TensorFlow与cuda版本对应

测试安装是否成功

网上给出这样的测试代码

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

但我运行后出现错误“RuntimeError: The Session graph is empty. Add operations to the graph before calling run().”

经过查找,了解是TensorFlow版本的原因,调用前没有给session清空

将上述代码改为:

import tensorflow as tf

g = tf.Graph()
with g.as_default():
 hello = tf.constant('Hello, TensorFlow!')
 sess = tf.compat.v1.Session(graph=g)
 print(sess.run(hello))

参考TensorFlow(踩坑):RuntimeError: The Session graph is empty.

测试成功。

接下来就可以用cuda+TensorFlow进行机器学习相关的学习了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值