Centos7安装GPU显卡驱动、CUDA、CUDNN以及更新gcc
服务器安装系统为Centos7.7,这个可以根据自己算法的环境需求来选择,目前使用的深度学习算法使用Centos7.7是可以满足的,但是其自身带的gcc是4.8.5,还不能满足需要,因此,要么后期提升gcc的版本,本台服务器的gcc提升到5.5,或者安装高配置的Centos版本。在启动服务器时一定要进入bost环境将取消启动项以UEFI启动,因为这样子后面安装GPU显卡驱动会报错,报无法安装keras-mudle包,这样导致GPU驱动无法安装,这个还不是最麻烦的,最麻烦的是有可能还需要把装上的包给卸载点,当然也不是一定的,只能看运气了,所以建议是修改bost的启动项。下载的安装包放在/usr/local/目录下
- 安装GPU显卡驱动
这里提供两个版本安装,一个是命令行安装,一个是以.run包来安装,但是都有其优势,如果你喜欢偷懒,那我建议你使用命令行安装,但是就是慢了点,当然如果你的宽带速度快,下载源也很牛逼,那完全可以使用命令行安装,使用命令不仅方便,而且后面不需要自己啥事了,该干嘛干嘛去;如果网速宽带不行而且还没有一个下载非常快的源,那就老老实实的使用.run安装吧,废话不多说了,来看看安装步骤吧,这些都是本人在自己的服务器上安装过的。
不管哪种安装都一些共同的
1.1屏蔽系统自带的 Nouveau 显卡驱动
# vim /lib/modprobe.d/dist-blacklist.conf
blacklist nouveau #添加此行
options nouveau modeset=0 #添加此行
# blacklist nvidiafb #将nvidiafb的此行注释掉
重建 initramfs image
# 备份
# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
# 重建
# dracut /boot/initramfs-$(uname -r).img $(uname -r)
# 重启系统
# reboot
# 查看nouveau是否已经禁用,如果没有输出相关的内容则说明已经禁用
# lsmod | grep nouveau
1.2安装依赖
#yum -y install gcc gcc-c++ wget
1.3添加ELRpo源
//1. 导入公钥
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
//2. To install ELRepo for RHEL-7, SL-7 or CentOS-7:
# rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
1.4查找合适驱动
//1. 安装显卡检查程序
# yum install nvidia-detect
//2. 查找合适驱动
# nvidia-detect
可以看到kmod-nvidia版本,我的服务器上显示430.40(如果不显示,最好现在第二种安装方式)
命令行安装
1、安装驱动
/1. 安装合适版本驱动
# yum install $(nvidia-detect)
//也可以查找软件源中驱动程序
# yum search kmod-nvidia
2、reboot(必须)
3、验证 nvidia-smi
这样整个过程结束,是不是很简单。
.run安装
下载 NVIDIA 驱动程序
根据驱动检测结果,在NVIDIA 官网上下载对应的Linux驱动程序。
重启系统
# 修改运行级别为纯文本模式
# systemctl set-default multi-user.target
# 重启系统
# reboot
# 重启后在纯文本模式下使用root用户登录
安装驱动链接
yum install -y "kernel-devel-uname-r == $(uname -r)"
yum install gcc gcc-c++ 安装gcc、g++编译器
安装 NVIDIA 显卡驱动(纯文本模式下)
# 文件授权
# chmod +x NVIDIA-Linux-x86_64-384.59.run
# 执行安装
# ./NVIDIA-Linux-x86_64-384.59.run
# 安装过程中,选择accept;如果提示是否编译DKMS模块,选择yes(方便以后升级系统内核);如果提示要修改xorg.conf,选择yes;
# 查看显卡驱动的安装状态,若输出相关内容则说明nvidia显卡驱动安装成功
# nvidia-smi
# 修改运行级别为图形模式
# systemctl set-default graphical.target
# 重启系统
# reboot
- 安装CUDA
在 NVIDIA (https://developer.nvidia.com/cuda-toolkit-archive)官网下载对应的安装文件,建议选择 *.run 文件,用本地安装的方式,本服务器安装的是CUDA9.0,目前有10.1版本,但是现在很多的深度学习算法还用不到那个高的CUDA,安装高版本了,会提醒各种warning,然后要进入一个个包里去修改,挺麻烦的,还有的模型压缩优化方法也不一定适合,我安装了CUDA10.1的版本,后来根据需要没办法卸载了,从新安装了CUDA9.0版本。我使用的是cuda_9.0.176_384.81_linux.run安装
# ./cuda_9.0.176_384.81_linux.run
报错:
./cuda_9.0.176_384.81_linux.run: 权限不够
运行:chmod +x cuda_9.0.176_384.81_linux.run
...
Install NVIDIA Accelerated Graphics Driver ... -no ; 不需要再安装显卡驱动
Install OpenGL ... -no ; 这个组件一定不要安装,如果出现选择,选 No
Install CUDA 9.0 Toolkit ... -yes
Toolkit location /usr/local/cuda-9.0 ... [Enter] ; 默认安装位置即可
Install a symbolic link at ... -yes
Install CUDA 9.0 Samples ... -yes ; 安装一些例程
Enter CUDA Samples Location ... [Enter] ; 默认安装位置
...
Finished
Driver : Not Selected
Toolkit : Installed in /usr/local/cuda-9.0
Samples : Installed in /root, but missing recommended libraries
***WARNING: Incomplete installation!
然后,配置环境
# vim ~/.bashrc
...
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
# source ~/.bashrc,使环境变量立即生效
查看版本
cuda 版本
cat /usr/local/cuda/version.txt
- 安装CUDNN
去官网下载对于的CUDNN版本,我现在的7.5版本,个人认为现在是够用了https://developer.nvidia.com/rdp/cudnn-archive,而且下载了不用安装,解压然后配置环境就OK了
先解压
$ tar -xzvf cudnn-9.0-linux-x64-v7.5.1.10.tgz
复制相关文件到cuda特定目录下(我的cuda安装目录为/usr/local/cuda/)
$ 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版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
- 更新gcc版本
安装开发必备环境:
$ yum groupinstall "Development Tools"
$ yum install glibc-static libstdc++-static
GCC源码地址为http://ftp.gnu.org/gnu/gcc,里面有GCC的各个版本,请根据各自的需要下载。我当时也没有想好下载那个版本号,就下载了gcc-8.3
$ wget http://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz
$ tar -zxvf gcc-8.3.0.tar.gz
$ cd gcc-8.3.0
$ ./contrib/download_prerequisites
mkdir build
$ cd build
生成Makefile:
$ ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
$ make
等着吧,要几个小时呢,该干嘛干嘛去吧。
编译后
$ make install
检测是否安装成功
$ gcc -v
自己安装服务器都安装了多少次,自己总结起来的,方便自己后面使用。