配好了Rstudio使用OpenGL图形系统,突然想起测试一下OpenGL使用Nvidia GPU不是更快么?搜了一下,原来mesa是使用CPU的,要用Nvidia的OpenGL Driver才行。敲了一行命令:
# nvidia-smi
发觉Nvidia T4的驱动竟然不行了,查阅腾讯云的Nvidia驱动安装教程,知道驱动是在特定版本的内核上编译的,那么应该是昨天更新系统软件包时哪个命令把内核也更新了。查看内核版本:
root@VM-0-14-ubuntu:~# uname -r
4.15.0-196-generic
查看原来映像的内核:
root@VM-0-14-ubuntu:~# dpkg -l | grep -i linux-headers
ii linux-headers-4.15.0-180 4.15.0-180.189 all Header files related to Linux kernel version 4.15.0
ii linux-headers-4.15.0-180-generic 4.15.0-180.189 amd64 Linux kernel headers for version 4.15.0 on 64 bit x86 SMP
从4.15.0-180更新到4.15.0-196了,重新编译安装Nvidia T4的驱动即可。
1、下载驱动程序安装包。tesla 460.106.00驱动下载网址。
2、安装包给予执行权限
# chmod +x NVIDIA-Linux-x86_64-460.106.00.run
3、执行安装。
# sudo sh NVIDIA-Linux-x86_64-460.106.00.run --ui=none --disable-nouveau --no-install-libglvnd --dkms -s
出错,查看log,提示有正在运行的X Window服务器,kill掉Xvfb,删除它在/tmp下的lock文件。这里知道了T4是数据中心用的定制产品,该命令编译的驱动程序是AI专用,no display,不驱动显示,取消了测试GPU跑OpenGL的打算,修复驱动就好了。
再执行,还是出错,按提示看
root@VM-0-14-ubuntu:~# vi /var/lib/dkms/nvidia/460.106.00/build/make.log
是没有安装该版本内核的headers。
参考该帖子安装内核头文件。
root@VM-0-14-ubuntu:~# apt search linux-headers-$(uname -r)
root@VM-0-14-ubuntu:~# apt install linux-headers-$(uname -r)
root@VM-0-14-ubuntu:~# dpkg -l | grep -i linux-headers
ii linux-headers-4.15.0-180 4.15.0-180.189 all Header files related to Linux kernel version 4.15.0
ii linux-headers-4.15.0-180-generic 4.15.0-180.189 amd64 Linux kernel headers for version 4.15.0 on 64 bit x86 SMP
ii linux-headers-4.15.0-196 4.15.0-196.207 all Header files related to Linux kernel version 4.15.0
ii linux-headers-4.15.0-196-generic 4.15.0-196.207 amd64 Linux kernel headers for version 4.15.0 on 64 bit x86 SMP
再执行,还是出错,这次是提示编译器版本不对,原来是用gcc 7.5编译的,现在前面设置了默认编译器是gcc 11,参考该帖子,暂时把默认编译器改回7.5:
# update-alternatives --config gcc
# update-alternatives --config g++
再执行驱动安装程序,顺利装完。
root@VM-0-14-ubuntu:~# nvidia-smi
Sun Nov 13 09:08:43 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.106.00 Driver Version: 460.106.00 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 Off | 00000000:00:08.0 Off | 0 |
| N/A 47C P0 27W / 70W | 14670MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 26758 C ...onda3/envs/gpu/bin/python 14667MiB |
+-----------------------------------------------------------------------------+
编译器的版本改回去。
# update-alternatives --config gcc
# update-alternatives --config g++
搞定,重启系统。记录一下,下次踩坑了方便修复,否则重装系统工程就大了。