如何使用关键字在 nvidia-smi 中使用 PID 终止 GPU 上的进程?

How to kill process on GPUs with PID in nvidia-smi using keyword?

如何在终端中为特定程序(例如 python)终止 GPU 上的 运行 进程? 例如两个进程在上面的图片中是 运行 python 并杀死它们以查看 nvidia-smi

中的底部图片

你可以在nvidia-smi中grep python然后传PID给 kill -9 命令,例如

sudo kill -9 $( nvidia-smi | grep 'python' | sed -n 's/|\s*[0-9]\s([0-9])\s.*//p' | sed '/^$/d')

接受的答案对我不起作用,可能是因为 nvidia-smi 在不同的 versions/hardware 中有不同的格式。

我正在使用更简洁的命令:

nvidia-smi | grep 'python' | awk '{ print  }' | xargs -n1 kill -9

您可以替换 awk 表达式中的 </code> 以适合您的 <code>nvidia-smi 输出。这是 PID 出现的第 n 列。

使用 nvidia-smi 或 top 命令查看进程 运行 并终止命令:

sudo kill -9 PID

我想当 nvidia-smi 显示占用 GPU 内存的进程时,问题已经得到解答。对我来说,即使 nvidia-smi 没有显示任何进程,GPU 内存正在被使用,我想杀死它们。

在这种情况下,方法是使用 fuser 命令找出使用特定 GPU 设备的进程。在我的例子中,我想杀死所有使用 GPU 设备 3 的进程。 这可以使用命令完成:

sudo fuser -k /dev/nvidia3

您可以使用 -ki 以交互方式终止进程。

作为其他答案之一建议您可以使用:(将 5 替换为存在进程 ID 的列号)

nvidia-smi | grep 'python' | awk '{ print  }' | xargs -n1 kill -9

如果您可能不得不经常使用它,您可以为该命令创建一个别名:为此,您应该编辑 ~/.bash_aliases 文件:

nano ~/.bash_aliases

并向其中添加以下行并保存文件:

alias killgpuprocess="nvidia-smi | grep 'python' | awk '{ print  }' | xargs -n1 kill -9"

然后(这次正好需要):

source ~/.bashrc

那么如果你运行

killgpuprocess

它将终止 GPU 上的现有进程。