GPU服务器的时代已经来临,GPU取代CPU来执行非图形任务,如模拟、数据挖掘、金融分析、图像识别和医疗数据生成。这些GPU的通用计算应用被称为 “GP(General-Purpose)GPU “或 “GPU计算”。
一般来讲GPU计算是使用显卡完成的,是使用显卡的一种应用。另一方面,GPU服务器是专门为GPU计算而设计的,而不是为图形。与普通显卡不同,它们没有图形输出,专门用于非图形应用。未来,GPU服务器可能成为高端GPU计算的主流。
在这里介绍Redhat系统上安装NVIDIA驱动的方法,环境如下。
- 系统:RedHat7.6
- 内核版本:3.10.0-957
- GPU:NVIDIA Tesla V100 PCIE 32GB x3
- CUDA Toolkit:10.1(版本:418.226.00)
确认系统是否支持GPU
确认系统是否已连接nvida设备。
# lspci | grep -i nvidia
88:00.0 3D controller: NVIDIA Corporation GV100GL [Tesla V100 PCIe 32GB] (rev a1)
89:00.0 3D controller: NVIDIA Corporation GV100GL [Tesla V100 PCIe 32GB] (rev a1)
b2:00.0 3D controller: NVIDIA Corporation GV100GL [Tesla V100 PCIe 32GB] (rev a1)
确认系统版本
确认准备安装NVIDIA驱动的系统版本。
# uname -m && cat /etc/*release
x86_64
NAME="Red Hat Enterprise Linux Server"
VERSION="7.6 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.6"
PRETTY_NAME="Red Hat Enterprise Linux"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.6:GA:server"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
REDHAT_BUGZILLA_PRODUCT_VERSION=7.6
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="7.6"
Red Hat Enterprise Linux Server release 7.6 (Maipo)
Red Hat Enterprise Linux Server release 7.6 (Maipo)
确认安装GCC版本
一般来讲Linux上安装gcc版本支持CUDA Toolkit,在这里主要是确认gcc是否已安装。
# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
系统安装kernel相关package
安装和内核版本一致的kernel-devel及kernel-headers。
# yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
确认安装的kernel-devel和kernel-headers和内核版本 3.10.0-957 一致。
# rpm -qa | grep kernel
kernel-headers-3.10.0-957.el7.x86_64
abrt-addon-kerneloops-2.1.11-52.el7.x86_64
kernel-devel-3.10.0-957.el7.x86_64
kernel-3.10.0-957.el7.x86_64
如果已安装新版的kernel-headers或者kernel-devel的话,可使用 rpm -Uvh –oldpackage命令进行降级。
# rpm -Uvh --oldpackage kernel-headers-3.10.0-957.el7.x86_64.rpm
Redhat版本对应内核版本可在 Red Hat Enterprise Linux Release Dates 进行确认。
下载NVIDIA CUDA Toolkit
访问NVIDIA官网下载CUDA Toolkit。
产品类型,产品系列,产品家族根据服务器上的可使用的GPU进行选择。
操作系统选择安装NVIDIA驱动的服务器,语言没有特殊需求的话,选择English(UK)。
CUDA Toolkit的选择非常重要,应该咨询开发调用GPU的程序的开发人员。
在这里可以确认到CUDA Toolkit对应版本为 418.226.00,确认版本无误后点击「DOWNLOAD」进行下载。
把下载本地PC的rpm上传至服务器后使用rpm命令进行安装。
# rpm -ivh nvidia-driver-local-repo-rhel7-418.226.00-1.0-1.x86_64.rpm
设定Repository
NVIDIA驱动程序依赖于第3方RPM包(例如libvdpau等),在这里安装epel的yum源,并激活rhel-7-server-optional-rpms源。
# yum install https://dl.fedoraproject.org/pub/epel/epel-releaselatest-7.noarch.rpm
# subscription-manager repos --enable=rhel-7-server-optional-rpms
安装Package
yum安装之前清除yum源cache。
# yum clean expire-cache
安装vulkan-filesystem
vulkan-filesystem为第3方提供的package,并非Redhat提供的package,因此直接centos的网站上下载rpm包,进行安装。
# yum install wget
# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/vulkan-filesystem-1.1.97.0-1.el7.noarch.rpm
# yum localinstall vulkan-filesystem-1.1.97.0-1.el7.noarch.rpm
安装nvidia-driver-latest-dkms
# yum install nvidia-driver-latest-dkms
安装cuda-drivers
yum命令安装cuda-drivers,在这里使用本地的nvidia-driver-local-rhel7-418.226.00.repo,因此指定–disablerepo=rhel-7-server-rpms。
# yum --disablerepo=rhel-7-server-rpms install cuda-drivers
Nouveau无效化
在/etc/modprobe.d目录下,创建blacklist-nouveau.conf文件并进行修改。
# vi /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
重新编译内核initramfs。
# dracut --force
reboot命令重启系统。
# reboot
nvidia-persistenced开机自动启动
使用systemctl命令启动nvidia-persistenced并设定为开机自动启动。
# systemctl status nvidia-persistenced -> 确认状态为disabled
# systemctl start nvidia-persistenced -> 启动服务
# systemctl enable nvidia-persistenced -> 设定为开机自动启动
# systemctl is-enabled nvidia-persistenced -> 显示enabled
确认安装结果
确认/dev目录下生成的nvidia相关设备文件。
# ls -l /dev/nvi*
crw-rw-rw- 1 root root 195, 254 11 Nov 23 16:12 /dev/nvidia-modeset
crw-rw-rw- 1 root root 235, 0 11 Nov 23 16:12 /dev/nvidia-uvm
crw-rw-rw- 1 root root 235, 1 11 Nov 23 16:12 /dev/nvidia-uvm-tools
crw-rw-rw- 1 root root 195, 0 11 Nov 23 16:12 /dev/nvidia0
crw-rw-rw- 1 root root 195, 1 11 Nov 23 16:12 /dev/nvidia1
crw-rw-rw- 1 root root 195, 2 11 Nov 23 16:12 /dev/nvidia2
crw-rw-rw- 1 root root 195, 255 11 Nov 23 16:12 /dev/nvidiactl
使用nvidia-smi命令确认。
# nvidia-smi
Tue Nov 23 16:14:57 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.226.00 Driver Version: 418.226.00 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla V100-PCIE... Off | 00000000:88:00.0 Off | 0 |
| N/A 34C P0 25W / 250W | 0MiB / 32480MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 Tesla V100-PCIE... Off | 00000000:89:00.0 Off | 0 |
| N/A 35C P0 26W / 250W | 0MiB / 32480MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 2 Tesla V100-PCIE... Off | 00000000:B2:00.0 Off | 0 |
| N/A 36C P0 24W / 250W | 0MiB / 32480MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
小结
参照NVIDIA提供的手册,一步一步执行即可成功安装。但推荐安装之前理解一下yum及rpm相关命令。
NVIDIA CUDA Installation Guide for Linux