我们在linux系统中使用GPU时有时遇到了坏卡的情况,我们希望能够自动不使用坏掉的卡,也就是让系统和程序自动跳过不使用GPU卡,我们需要将GPU卡标记为驱逐状态,那么今天我们就来介绍下如何标记指定的GPU卡为驱逐状态。
1.drain命令参数介绍
我们使用nvidia-smi命令中的drain参数来对卡进行驱逐
nvidia-smi drain
此命令包含以下可选参数
-p --pciid: GPU PCI地址,格式XXXX:YY.Z.a,其中XXXX是域,YY是总线,Z是设备,a是功能
-m --modify: 修改由 -p 参数指定的 GPU 设备的驱逐状态。修改此状态时持久模式必须禁用,0不驱逐,1驱逐
-q --query: 查询由 -p 参数指定的 GPU 设备的驱逐状态。
-r --remove: 如果可能, 移除由 -p 参数指定的 GPU 设备,该 GPU 必须已经使用 -m 参数设置为驱逐状态 且,该 GPU 的持久模式必须禁用.
-d --discover: 发现系统上之前被移除的所有的 GPU 设备
-h --help: 展示帮助信息
2.查看GPU卡的驱逐状态
例如我们查询GPU卡状态并记录第一块GPU卡的信息
nvidia-smi -i 0
获取到0号GPU卡的PCI地址为0000:06:00.0
可以使用如下命令查看0号GPU卡的驱逐状态
nvidia-smi drain -p 0000:06:00.0 -q
The current drain state of GPU 00000000:06:00.0 is: not draining.
可以看到0号GPU卡的驱逐状态是不驱逐
3.修改GPU卡的驱逐状态
使用-m 修改指定GPU卡的驱逐状态,1是驱逐,0是不驱逐
nvidia-smi drain -p 0000:06:00.0 -m 1
Successfully set GPU 00000000:06:00.0 drain state to: draining.
再次执行查询驱逐状态时,0号GPU卡的状态已经是驱逐状态
nvidia-smi drain -p 0000:06:00.0 -q
The current drain state of GPU 00000000:06:00.0 is: draining.
4.移除指定GPU卡
移除由-p参数指定的GPU设备,同时还需要该GPU必须已经使用-m参数设置为驱逐状态, GPU的持久模式必须禁用
首先关闭0号GPU卡的持久模式
nvidia-smi -i 0 pm 0
然后设置0号GPU卡为驱逐状态
nvidia-smi drain -p 0000:06:00.0 -m 1
最后移除0号GPU卡
nvidia-smi drain -p 0000:06:00.0 -r
GPU 00000000:06:00.0 successfully removed.
然后我们可以使用nvidia-smi命令进行验证
可以看到0号GPU卡使用nvidia-smi命令已经不显示
5.加入被移除的GPU卡
也是使用drain命令加上-d参数就能发现GPU卡并添加,这个时候可以
nvidia-smi drain -d
Discovery completed successfully. Any discovered GPUs will now appear in the enumeration list and device count.
再次使用nvidia-smi命令发现已经可以查看到0号在列表中了。
再次查询0000:06:00.0这块卡的状态
nvidia-smi drain -p 0000:06:00.0 -q
The current drain state of GPU 00000000:06:00.0 is: not draining.
发现自动去掉了之前设置的驱逐状态。
内容版权声明:除非注明,否则皆为本站原创文章。
评论列表