安装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

  • 有两种安装方式:

CUDA软件仓库

从NVIDIA官方提供 NVIDIA CUDA Toolkit repo 下载

Ubuntu

../../_images/cuda_toolkit_ubuntu_repo_install.png
在Ubuntu 22.04操作系统添加NVIDIA官方软件仓库配置
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
  • 安装:

Ubuntu 使用NVIDIA官方软件仓库安装CUDA
sudo apt -y install cuda

RHEL7/CentOS7

  • RHEL/CentOS 7采用如下方式准备软件仓库:

在RHEL/CentOS 7操作系统添加NVIDIA官方软件仓库配置
# 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
  • 安装:

RHEL/CentOS 7 使用NVIDIA官方软件仓库安装CUDA
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
    

参考