问题描述:
用户在平台申请的GPU虚拟机,默认是不安装驱动的。这是因为NVIDIA的显卡类型非常多,各种显卡对驱动版本的要求也不一样,所以需要用户自行选择合适的版本进行安装。平台提供了一些常用 nvidia、cuda、cudnn安装包,供用户选择安装。
问题现象:
用户在登陆虚拟机实例后,执行命令:lspci -nnk |grep -i nvidia -A 2
,可以看到显卡设备,但是执行命令:whereis nvidia-smi
却无法找到nvidia驱动程序。
处理方法:
1.查找安装包
用户登陆GPU虚拟机后,可以在如下目录看到平台提供的nvidia常用的安装包:
/webdav/ProjectGroup\(public_cluster\)/share/nvidia-tools
2.拷贝安装包到本地目录
由于安装包是在虚拟机的网盘目录,权限和网速有限制。所以要先在 /webdav 目录中找到合适的版本,并将它们拷贝到虚拟机的本地目录,最后修改安装文件的权限。
cd /opt
cp /webdav/ProjectGroup\(public_cluster\)/share/nvidia-tools/nvidia/NVIDIA-Linux-x86_64-525.89.02.run /opt/
cp /webdav/ProjectGroup\(public_cluster\)/share/nvidia-tools/cuda/cuda_11.8.0_520.61.05_linux.run /opt/
cp /webdav/ProjectGroup\(public_cluster\)/share/nvidia-tools/cudnn/cudnn-linux-x86_64-8.9.0.131_cuda12-archive.tar.xz /opt/
chmod 755 *
3.安装软件
3.1 安装build-essential工具包
apt update
apt install -y build-essential
3.2 安装NVIDIA驱动
安装nvidia显卡驱动,首先需要禁用系统自带的nouveau驱动,不然会碰到冲突的问题,导致无法安装nvidia显卡驱动。禁用的方法是在/etc/modprobe.d/blacklist.conf
文件的最后添加下面两行:
blacklist nouveau
options nouveau modeset=0
并执行命令更新系统:update-initramfs -u
,最后通过平台页面的按钮重启虚拟机。
再次登录虚拟机后执行如下命令,开始静默安装NVIDIA驱动:
/opt/NVIDIA-Linux-x86_64-525.89.02.run --silent
安装完成后,执行 nvidia-smi命令能正常看到显卡,即表示驱动安装成功。
3.3 安装CUDA
执行如下命令静默安装CUDA,采用静默安装方式时,不会自动安装CUDA包自带的驱动。由于前面我们已经顺利安装好驱动,所以这个问题可以忽略。
/opt/cuda_11.8.0_520.61.05_linux.run --toolkit --samples --silent
安装完成后,在系统的 /usr/local/ 目录下会看到 cuda 的安装目录。
依次执行如下命令,配置CUDA环境变量。
export PATH=/usr/local/cuda/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
执行nvcc -V
命令,检查CUDA安装版本是否正确。
执行以下命令,测试CUDA Samples,验证CUDA是否安装成功。如果返回结果显示Result=PASS,则表示CUDA安装成功。
/usr/local/cuda/extras/demo_suite/deviceQuery
3.4 安装cuDNN
依次执行如下命令安装 cuDNN:
tar Jxvf cudnn-linux-x86_64-8.9.0.131_cuda12-archive.tar.xz
cd cudnn-linux-x86_64-8.9.0.131_cuda12-archive/
cp include/cudnn*.h /usr/local/cuda/include
cp lib/libcudnn* /usr/local/cuda/lib64
chmod a+r /usr/local/cuda/include/cudnn*.h
chmod a+r /usr/local/cuda/lib64/libcudnn*
执行如下命令验证cuDNN是否安装完成:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
输出如下图所示,则表示cuDNN安装成功。