安装NVIDIA CUDA¶
备注
我规划采用 NVIDIA Virtual GPU (vGPU) 在虚拟机内部构建完整的机器学习环境,所以会在VM内部来实现NVIDIA CUDA安装,而在物理主机上仅 安装NVIDIA Linux驱动 。
然后在此基础上构建 GPU Kubernetes ,实现分布式的机器学习部署
对于底层物理主机,仅需要 安装NVIDIA Linux驱动
说明¶
安装CUDA准备¶
验证硬件是否支持 CUDA
lspci | grep -i nvidia
根据输出的信息,查询 CUDA GPUs - Compute Capability 网站信息确认
备注
NVIDIA的计算图形卡需要BIOS支持 64-bit IO
,不过对于不同服务器厂商可能会使用不同的技术术语,例如 HP DL360 Gen9 Large Bar Memory(Tesla P10)
验证是否是支持的Linux版本:
uname -m && cat /etc/*release
确保采用了 x86_64
版本Linux (或者是 aarch64
的64位ARM版本,需要下载对应架构的驱动)
验证系统已经安装了gcc,以及对应版本:
gcc --version
验证系统已经安装了正确的内核头文件和开发工具包:
CUDA驱动需要内核头文件以及开发工具包来完成内核相关的驱动安装,因为内核驱动需要根据内核进行编译。
对于 RHEL 7 /CentOS 7执行以下安装命令:
sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
对于 Fedora / RHEL 8 / Rocky Linux 8 执行以下安装命令:
sudo dnf install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
对于OpenSUSE/SELES 执行以下安装命令:
sudo zypper install -y kernel-default-devel=$(uname -r | sed 's/\-default//')
对于Ubuntu执行以下安装命令:
sudo apt-get install linux-headers-$(uname -r)
如果要支持 NVIDIA GPUDirect Storage技术 (GDS),需要同时安装CUDA软件包和 MLNX_OFED软件包 (需要使用NVMe硬件) ,这样可以在直接内存访问(DMA)方式在GPU内存和存储之间传输数据,不需要经过CPU缓存: 这种直接访问路径可以增加系统带宽和降低延迟以及降低CPU负载
这步跳过,后续在 NVIDIA GPUDirect Storage技术 实践
安装CUDA¶
有两种安装方式:
发行版无关run文件包( NVIDIA官方提供的 P40 驱动 )
采用官方提供针对不同发行版的软件仓库方式(见下文实践)
CUDA软件仓库¶
从NVIDIA官方提供 NVIDIA CUDA Toolkit repo 下载
Ubuntu¶
升级Ubuntu 22.04 LTS到22.04 LTS 的 私有云架构 底层物理主机操作系统(Ubuntu 22.04),我采用官方仓库网络安装模式(参考下图选择自己对应的发行版,并选择网络安装):
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
安装:
sudo apt -y install cuda
RHEL7/CentOS7¶
RHEL/CentOS 7采用如下方式准备软件仓库:
# CentOS7可能需要安装编译工具链, RHEL7通常已经安装
sudo dnf install -y tar bzip2 make automake gcc gcc-c++ pciutils elfutils-libelf-devel libglvnd-devel iptables firewalld vim bind-utils wget
# 安装EPEL仓库
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# 对于RHEL7还需要激活一些可选仓库(CentOS7无需此操作)
sudo subscription-manager repos --enable="rhel-*-optional-rpms" --enable="rhel-*-extras-rpms" --enable="rhel-ha-for-rhel-*-server-rpms"
# 安装CUDA仓库公钥
distribution=$(. /etc/os-release;echo $ID`rpm -E "%{?rhel}%{?fedora}"`)
# 设置仓库
ARCH=$( /bin/arch )
sudo yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/$distribution/${ARCH}/cuda-$distribution.repo
# 安装Kernel头文件
sudo yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)
# 清理缓存
sudo yum clean expire-cache
安装:
sudo yum -y install cuda
安装CUDA完成后操作¶
强制性操作¶
在安装完CUDA Toolkit 和 Driver之后,必须完成以下操作:
环境变量设置¶
安装了 CUDA Toolkit 则设置环境变量
/etc/profile
添加:export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}} # 使用runfile安装方式需要添加 LD_LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
有关POWER9设置是适配IBM服务器的,个人恐怕不会接触到,忽略
建议操作¶
安装持久化服务(NVIDIA Persistence Daemon)
安装Writable Samples: CUDA Samples 位于 https://github.com/nvidia/cuda-samples ,然后编译和运行一些sample程序来验证CUDA安装是否成功
验证驱动版本:
cat /proc/driver/nvidia/version