centos 7 安装cuda和cuDNN
一 简述
1) CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
简单地说,CUDA就是一个软件编程的框架,将很多底层通用的代码集成了,有了这个框架我们就可以减少编程的工作量,非常方便我们调用GPU,所以CUDA是一个方便我们编写代码调用GPU的框架。
2) cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。cuDNN可以集成到更高级别的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的流行caffe软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。
二 安装
1 下载cuda
前往下载链接 下载最新的cuda,注意Installer Type选择runfile(local)
根据网页提示,在终端中输入指令,下载
2 检查硬件环境
1) 检测系统是否已安装 GPU
$ lspci | grep -i nvidia
输出类似如下信息表明已安装 GPU :
03:00.0 VGA compatible controller: NVIDIA Corporation Device 1b06 (rev a1)
03:00.1 Audio device: NVIDIA Corporation Device 10ef (rev a1)
2) 检查内核版本
$ uname -r
# 如果内核版本小于3.10.0-957,则升级至3.10.0-957:
$ yum install kernel
3 检查软件环境
1)安装内核头文件
$ yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
2)安装 GCC 、EPEL 源 和 DKMS
$ yum install gcc gcc-c++
$ yum install epel-release
$ yum install --enablerepo=epel dkms
4 禁用 Nouveau 驱动
$ vi /etc/modprobe.d/blacklist-nouveau.conf
1) 编辑内容
blacklist nouveau
options nouveau modeset=0
2) 保存文件执行
$ dracut --force
3) 查看是否禁用成功
$ lsmod | grep nouveau
5 安装
1) 进入文字模式
$ init 3
2) 前往文件所在路径,执行安装脚本
$ sh cuda_10.0.130_410.48_linux.run
6 查是否安装成功
$ nvidia-smi
有输出相应的cuda内容说明安装成功
7 搭配环境
$ echo 'export PATH=/usr/local/cuda-7.5/bin:$PATH' >> ~/.bashrc
$ echo 'export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
$ source ~/.bashrc
$ reboot
8 检查cuda是否安装成功
1) 检查路径 ~/dev 下 有无存在名为 nvidia* (以nvidia开头)的多个文件(device files)
2) 检查 CUDA Toolkit是否安装成功
$ nvcc -V
会输出CUDA的版本信息(V要大写)
3) 编译samples例子(必须root用户)
$ cd /root/cuda/NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery
$ make
$./deviceQuery
重点关注最后一行,Pass表示通过测试
9 安装 cuDNN 库
1) 前往下载链接 下载对应文件,注意跟安装的cuda版本相匹配
2) 切换到压缩包所在位置,解压
$ tar -xzvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
3) 复制相关文件到cuda特定目录下(我的cuda安装目录为/usr/local/cuda/)
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
4) 修改文件权限
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*