是否可以通过CUDA停止使用GPU的所有运行处理,而不需要重新启动机器?
是否可以通过CUDA停止使用GPU的所有运行处理,而不需要重新启动机器?
使用lsof实用程序可以帮助解决此问题。您可以通过以下命令获取正在访问NVIDIA卡的进程列表:
lsof /dev/nvidia*
然后使用kill或pkill终止您想要终止的进程。请注意,如果正在运行X,则可能不希望终止它。在我的桌面系统上,X和kwin都访问GPU。
长答案:
lsof /dev/nvidia*
给你正在你的GPU卡上运行的进程ID(PID),看起来类似于: lsof: 对PID的状态错误:没有这样的文件或目录
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python 7215 ******* mem CHR 195,255 434 /dev/nvidiactl
python 7215 ******* mem CHR 195,0 435 /dev/nvidia0
以及
awk '{print $2}'
选择PID列(在我的情况下是第二列)并且
xargs -I {} kill {}
杀死这些PID作业。
简短回答:
您可以使用以下命令一次性删除它们所有。
注意!此命令将删除出现在lsof /dev/nvidia*中的所有PID。请先运行lsof /dev/nvidia*确认这些作业是否是您要删除的。
lsof /dev/nvidia* | awk '{print $2}' | xargs -I {} kill {}
通过单个命令完成工作。
kill -KILL
命令将它们彻底终止的内容,如果它们无法理解提示。 - einpoklum你可以使用nvidia-smi
检查进程,然后进行操作。
kill -9 <pid>
sudo fuser -k /dev/nvidia*
kill
等某些其他命令不同,默认情况下,fuser -k
发送的信号是SIGKILL
而不是SIGTERM
。 - ebk