公司一台完全离线环境的服务器刚装了Nvidia Tesla A100 40G显卡,自己摸索着将显卡驱动在完全离线环境下安装成功,这里记录一下。
一、下载Centos7适配的Nvidia Tesla A100 40G显卡驱动
在Nvidia官网下载Centos7适配的显卡驱动,CUDA Toolkit选择的11.7,没有选择最新的,下载下来的显卡驱动为:nvidia-driver-local-repo-rhel7-515.105.01-1.0-1.x86_64.rpm
下面介绍具体的环境准备。
二、操作系统环境
操作系统为Centos7.9.2009,下载下来的ISO名称为:CentOS-7-x86_64-DVD-2207-02.iso
安装时选择的GNOME桌面服务器,并安装了相应的开发程序,默认安装了gcc等软件包。操作系统安装完成后将CentOS-7-x86_64-DVD-2207-02.iso映像文件拷贝到了Centos7操作系统中,以作为本地镜像源。
下面的绝大部分步骤都需要root权限,所以切换到root用户进行下列操作:
三、安装驱动依赖
(一)安装光盘中自带的软件依赖
- 创建一个光盘挂载目录
mkdir /media/cdrom
- 挂载iso映像文件
切换到CentOS-7-x86_64-DVD-2207-02.iso所的目录
mount CentOS-7-x86_64-DVD-2207-02.iso /media/cdrom
会提示已只读方式挂载了光盘。可以进到/media/cdrom看一下有没有挂载成功。
3. 设置光盘为本地yum源
cd /etc/yum.repo.d/
mkdir bak
将目前系统中所有的yum源文件备份一下,全部拷贝到bak目录中
mv * bak
将其中的CentOS-Media.repo拷贝一份出来并修改如下
cp bak/CentOS-Media.repo ./
vi CentOS-Media.repo
只修改其中的一行,将enabled=0
修改为enabled=1
即可,然后保存退出。
- 更新yum源缓存:
yum clean all
yum makecache
这里没问题的话就可以使用yum install安装相关的软件了。
5. 安装光盘中自带的依赖
yum install gcc kernel-headers kernel-devel
应该是只需要这几个吧,具体的我也忘记了,这里的比较简单,需要啥用yum装就可以了。
(二)安装其它软件依赖
这里需要具体情况具体分析。我的环境缺的软件比较多,另外因为我是离线环境,所以需要把相关的依赖包下载下来再拷贝到服务器上。使用下面的命令可以实现只下载软件包而不安装:
yum install --downloadonly --downloaddir=/home/xxx/yumsofts <software-name>
主要是要下载epel-release,dkms,ocl-icd,opencl-filesystem,vulkan-filesystem,egl-wayland,libvdpau
在下载时会将各个软件的依赖包一起下载下来。
在安装dkms时有个依赖是zlib,下载的是zlib-1.2.7-21.el7_9.x86_64.rpm,但系统中已经默认有了zlib-1.2.7-20,二者冲突,直接使用rpm -Uvh zlib-1.2.7-21.el7_9.x86_64
升级一下就可以了。
四、安装显卡驱动
以上都安装好后就可以安装显卡驱动了。这个地方根据Nvidia官网提示安装就可以了
i) rpm -i nvidia-driver-local-repo-rhel7-515.105.01-1.0-1.x86_64.rpm
ii) yum clean all
iii) yum install cuda-drivers
iv) reboot
如果在安装的过程中还提示缺少依赖,按照上面的方式继续下载安装就可以了。
安装完成后,检查命令:
nvidia-smi
五、安装Anaconda3试一下pytorch能否使用GPU
(一)安装Anaconda3
下载Linux版本的Anaconda3安装。
(二)在其它联网的centos7计算机上也安装Anaconda3
创建虚拟环境:
conda create -n gpu-torch python=3.10
conda activate gpu-torch
然后安装GPU版的pytorch,安装完成后将gpu-torch虚拟环境所在目录envs下的gpu-torch文件夹整个打包,然后拷贝到离线服务器中envs目录下,在此外解包就可以直接用了。可以使用下面的命令检查能否使用gpu
python3
import torch
print(torch.cuda.is_available())
print(torch.rand(3,3).cuda())
此时再使用nvidia-smi
查看gpu使用情况就会看到python程序了。