情况描述

服务器使用docker启动容器。启动以后一切正常也能跑程序。但是,在运行一段时间(2天左右不等),会发现gpu掉了。输入nvidia-smi提示

Failed to initialize NVML: Unknown Error

主要发生条件是,docker启动的时候指定的部分卡。譬如4卡,指定2卡在容器中使用。

当前发现情况基本都是,代码运行完,准备下一次跑的时候,提示这个问题。

解决方案记录

1、如果是容器使用本机所有卡,在启动容器时候添加“--privileged”参数,能够避免上述问题。但是,如果只使用部分卡,则不能添加此参数。

2、【测试完毕】根据链接所述,发生原因如下,详情见链接。https://github.com/NVIDIA/nvidia-container-toolkit/issues/48

主要首先要确定docker是否使用systemd cgroup进行管理,如果不是这问题导致,大概率后续解决方案无效。运行docker info| grep Cgroup。确认一下。

 $ docker info  
 ...  
 Cgroup Driver: systemd  
 Cgroup Version: 1

如果如上图所示,在/etc/docker/daemon.json里面添加参数,重启docker。

"exec-opts": ["native.cgroupdriver=systemd"]  【systemd不行】

"exec-opts": ["native.cgroupdriver=cgroupfs"]  【测试通过】

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐