英伟达GPU异常问题常见处理方法

日常在一些程序中进行GPU调用,这些cuda程序异常崩溃的时候,有时会遇到掉卡掉驱动、没有进程但是显存被占用的情况,这个时候我们可以通过以下命令来尝试进行处理。

如果是掉卡的话可以使用lspci查看下主板上还能否检测到GPU卡


lspci | grep -i nvidia
00:03.0 VGA compatible controller: NVIDIA Corporation Device 1f03 (rev a1)
00:03.1 Audio device: NVIDIA Corporation TU106 High Definition Audio Controller (rev a1)

如果不是掉卡,掉驱动和显存被占用可以查看以下几种方式进行对应处理

1.重启GPU卡

nvidia-smi --gpu-reset # 指定卡添加参数-i <index>

上述命令如果是在多卡的机器上,会重启所有GPU卡,如果需要指定GPU卡则需要添加参数-i,后面跟GPU的的index

如果是重启所有GPU卡,可以使用简化命令

nvidia-smi -r

2.重载内核驱动模块

先使用lsmod命令查看当前内核是否加载nvidia相关驱动模块

lsmod | grep -i nvidia

微信截图_20240531114106.png

也可以使用modprobe命令重载内核驱动

modprobe nvidia

也可以删除nvidia驱动内核模块,进行重新加载,可以尝试以下命令进行内核驱动模块的加载

rmmod nvidia
lsmod nvidia

一般在使用rmmod的情况下会返回以下报错

rmmod: ERROR: Module nvidia is in use by: nvidia_modeset nvidia_uvm

rmmod和modprobe命令都会退出GPU卡上的任何调用,在节点执行这些命令实际和重启gpu卡没有区别。

3.杀掉占用设备的进程

如果没有查看到GPU进程,但是显存被占用,可以使用fuser命令查看当前GPU设备是否还在占用中

fuser -uv /dev/nvidia*

微信截图_20240531114541.png

可以尝试kill掉占用的进程

4.重启操作系统

这个也是终极大法。


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/989.html