案例环境信息
EXSI版本:8.0.1
操作系统版本:CentOS 7.9
显卡型号:NVIDIA GeForce RTX 4090
解决方案
一 物理机BIOS配置
- 开启GPU直通 Above 4G decoding设置为Enabled Memory mapped I/O above 4GB设置为Enabled 或 PCI 64-bit resource handing above 4G设置为Enabled
- 开启虚拟化功能 Intel Virtualization Technology for Directed I/O (VT-d)设置为Enabled 或 AMD I/O Virtualization Technology (IOMMU)设置为Enabled
- 引导模式设置为UEFI (EXSI操作系统需重装)
二 ESXI配置
激活显卡直通
三 虚拟机配置
- 虚拟硬件设置
- 虚拟机选项设置UEFI引导 (CentOS 7.9操作系统需重装)
- 虚拟机选项设置高级参数
键 | 值 |
hypervisor.cpuid.v0 | FALSE |
pciPassthru.64bitMMIOSizeGB | 32 |
pciPassthru.use64bitMMIO | TRUE |
四 CentOS 7.9 配置
- 检查显卡是否被系统识别
lspci | grep -i nvidia
- 检查操作系统是否开启nouveau
lsmod | grep nouveau
- 禁用内核模块nouveau
vim /etc/modprobe.d/blacklist-nvidia-nouveau.conf
blacklist-nvidia-nouveau.conf文件内容:
blacklist nouveau
options nouveau modeset=0
- 新增显卡参数
vim /etc/modprobe.d/nvidia.conf
nvidia.conf文件内容:
options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
- 更新内核
dracut /boot/initramfs-$(uname -r).img $(uname -r) --force
- 安装依赖
yum install -y vim wget yum-util net-tools epel-release
yum install -y gcc gcc-c++ dkms "kernel-devel-uname-r == $(uname -r)"
- 重启系统
reboot
- 下载驱动及机器学习套件CUDA
wget https://cn.download.nvidia.cn/XFree86/Linux-x86_64/535.104.05/NVIDIA-Linux-x86_64-535.104.05.run
wget https://developer.download.nvidia.cn/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run
- 安装驱动 安装过程中会出现以下几个问题,选择yes 或no Would you like to register the kernel module sources with DKMS? 选yes(服务器选yes,本地选no) Install NVIDIA's 32-bit compatibility libraries? 选no,然后会弹出安装64位的,选yes
sh NVIDIA-Linux-x86_64-535.104.05.run -m=kernel-open
- 安装机器学习套件CUDA 安装过程会出现许可协议,需要输入accpet按回车 用空格键取消Driver,因为前面已经完成显卡驱动安装。 然后移动到Install按回车进行CUDA套件安装
sh cuda_12.2.2_535.104.05_linux.run
- 配置CUDA环境变量
vim /etc/bashrc
在bashrc文件最后面追加以下内容:
export CUDA_HOME=/usr/local/cuda-12.2
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH}
export PATH=${CUDA_HOME}/bin:${PATH}
- 加载CUDA环境变量
source /etc/bashrc
- 验证驱动
nvidia-smi
- 验证CUDA套件
nvcc -V
五 显卡烤鸡测试
- 创建gpu_burn目录并进入
mkdir /root/gpu_burn
cd /root/gpu_burn
- 下载gpu_burn源码并解压
wget http://www.wili.cc/blog/entries/gpu-burn/gpu_burn-1.1.tar.gz
tar -zxvf gpu_burn-1.1.tar.gz
- 修改代码 修改内容: CUDAPATH=/usr/local/cuda改为CUDAPATH=/usr/local/cuda-12.2 -arch=compute_30改为-arch=compute_60
vim Makefile
Makefile文件内容:
CUDAPATH=/usr/local/cuda-12.2
# Have this point to an old enough gcc (for nvcc)
GCCPATH=/usr
NVCC=${CUDAPATH}/bin/nvcc
CCPATH=${GCCPATH}/bin
drv:
PATH=${PATH}:.:${CCPATH}:${PATH} ${NVCC} -I${CUDAPATH}/include -arch=compute_60 -ptx compare.cu -o compare.ptx
g++ -O3 -Wno-unused-result -I${CUDAPATH}/include -c gpu_burn-drv.cpp
g++ -o gpu_burn gpu_burn-drv.o -O3 -lcuda -L${CUDAPATH}/lib64 -L${CUDAPATH}/lib -Wl,-rpath=${CUDAPATH}/lib64 -Wl,-rpath=${CUDAPATH}/lib -lcublas -lcudart -o gpu_burn
- 编译gpu_burn
make
- 执行烤鸡 600代表:程序执行600秒
./gpu_burn 600
- 开启新窗口监视显卡工作情况
watch -n 1 -d nvidia-smi