centos7.5安装1050Ti NVIDIA Driver 和 CUDA9

时间:2024-03-23 16:55:37

前言,最近来了新的需求,需要研究下GPU加速下ffmpeg解码视频的性能情况。好吧,个人虽然对于硬件上的东西不太明白,不过还是摸着石头过河,一步一坑的走着。。。:)

整个过程断断续续持续了两天左右,光是找能用的服务器就花了半天,结果发现不是不能用,只是我没装过,所以看上去1050Ti有点太大,找不到服务器有适合的PCIE插槽插入,结果在硬件组的大佬指导下才知道原来优酷的安装视频里面别人已经说过了,需要把侧面的螺丝和挡板给下掉,场面一度尴尬。。。好的,找到插槽后,直接把卡对准插入就行了,然后找个6pin的电源插口进行连接,因为这个N卡是需要独立供电的,不然负载上不去。硬件上就完事了,接下来就是驱动和软件的坑了。本文也主要将这部分内容,关于安装的步骤以及出现的问题和解决的措施。

整个流程如下图:(https://developer.nvidia.com/ffmpeg)centos7.5安装1050Ti NVIDIA Driver 和 CUDA9

驱动的下载

检测服务器是否存在N卡

命令:
lspci | grep -i nvidia
如果都没有 那就没必要看下去了:)
之后你可以根据你的N卡的型号去选择相应的驱动下载 要是还不确定要下哪个版本的驱动
那么只能安装个nvidia_detect工具检测下了

安装nvidia_detect

添加ELPepo源

$ sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

安装NVIDIA驱动检测

$ sudo yum install nvidia-detect
$ nvidia-detect -v

根据结果登录NVIDIA官网http://www.geforce.cn/drivers设置驱动检索条件(注意尽量设置语言英文)
  
参考 https://blog.csdn.net/fanhenghui/article/details/80090864

驱动的安装

N卡的驱动有两种:一种是开源的nouveau,一种是官方的驱动。因为大部分linux发行版都默认支持开源版本的驱动,而现在必须安装官方的驱动(追求某些特性,木的办法)。而这默认的驱动会在之后的cuda安装过程中有干扰,所以必须将其加入到blacklist黑名单中。
根据cuda不同的版本,可能需要设置不同位置的黑名单列表。具体的可以去百度搜
“cuda <版本号,比如9.0>”,第一个应该就是官网的地址,可以进去查看相应的安装说明,我看了1小时的10.0和9.0的英文安装说明,有点烦,不过条理还是挺清楚的。
废话少说,看步骤

检测nouveau的使用

lsmod | grep nouveau
查看是否运行 如果没有 那这一步可以省略了 不过还是小心下是否有安装其他的开源驱动

加入黑名单

echo -e “blacklist nouveau\noptions nouveau modeset=0” > /etc/modprobe.d/blacklist.conf

重新建立initramfs image文件

mv /boot/initramfs-$(uname -r).img  /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r) --force

安装NVIDIA GPU驱动

我用的是.run file文件进行安装的,如果用其他的安装包管理器的方式安装也行。不过我喜欢用前者罢了。
简单的两条命令:

chmod 644 NVIDIA-Linux-x86_64-*.run
./NVIDIA-Linux-x86_64-*.run

之后的里面的设置我都是选的yes

安装完成检测

#先进行重启进入多用户模式 
init 3
nvidia-smi #可以显示出你的N卡的运行情况,如果没有这个命令说明安装失败

X Server问题

我在安装过程中遇到 "X Sever"的问题,网上搜了下发现基本就是把之前的桌面程序关掉以及残留的文件锁删除。
· 对于Ubuntu

sudo service lightdm stop

· 对于centos

rm -rf /tmp/.X*

之后再重新安装就可以了

CUDA9.0的安装

好了上面的安装完成后,就需要之后的安装了
我本来是安装的最新版的CUDA10.0的,结果安装后,测试代码deviceQuery检测时发现版本好像有问题?!黑人脸,我看了系统支持的内核和gcc等要求,发现是可以的,莫名其妙!不过时间紧,就没去仔细看了,直接下了下面一个大版本9.0的。
这里注意下需要下载相应内核版本的开发包以及头文件

CUDA的下载

直接百度搜cuda加版本号的第一个结果基本就可以直接到官网下载地址了,根据系统需求以及安装方式选择相应的安装文件

升级系统和编译工具

yum update
yum install kernel-devel kernel-headers gcc make
yum -y upgrade kernel kernel-devel 

我这里遇到的问题是桌面版的内核有四个版本,而终端版的内核默认设置了一个,结果退出桌面进入字符终端模式时内核版本不一样,结果为了统一起来,我桌面版直接进入相同版本的内核去了,可能很少人遇到吧。

安装

这个安装就直接accept后一路yes或者默认下去就行了
如果不乱改动,那么/usr/local/cuda就是安装的软连接的路径了

设置环境变量

vim /etc/bashrc
...
CUDA_HOME=/usr/local/cuda
export CUDA_HOME
PATH=$PATH:$CUDA_HOME/bin
export PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib
export LD_LIBRARY_PATH

安装成功后进入不了桌面

输入startx发现报错,然后cat了一下/var/log/Xorg.0.log日志,显示

........
 Fatal server error:
no screens found

Please consult the The X.Org Foundation support 
         at http://wiki.x.org
 for help. 
Please also check the log file at "/var/log/Xorg.0.log" for additional information.

 ddxSigGiveUp: Closing log
giving up.
xinit: No such file or directory (errno 2): unable to connect to X server
xinit: No such process (errno 3): Server error.

报“no screens found”,怀疑是之前nvidia安装驱动的桌面配置被换掉了,结果恢复了一下,重新startx发现正常启动桌面了。网上也搜到说secure boot的解决方法,但我看了下我的bios设置,并无卵用。
思路参考自:https://blog.csdn.net/keiths7/article/details/7822424