25

是否可以通过 CUDA 使用 GPU 停止所有正在运行的处理,而无需重新启动机器?

4

4 回答 4

23

lsof 实用程序将对此有所帮助。您可以通过以下方式获取访问 NVIDIA 卡的进程列表:

lsof /dev/nvidia*

然后使用 kill 或 pkill 终止您想要的进程。请注意,如果 X 正在运行,您可能不想杀死它。在我的桌面系统上,X 和 kwin 都在访问 GPU。

于 2010-12-31T16:53:58.427 回答
14

长答案:

lsof /dev/nvidia*

为您提供在 GPU 卡上运行的 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 {}

通过一个命令完成工作。

于 2018-07-02T20:23:34.607 回答
12

你可以检查进程nvidia-smi然后

kill -9 <pid>
于 2016-01-20T17:24:38.377 回答
0

您可以使用 fuser 命令获取所有使用 CUDA 的进程,然后将它们杀死。还有一个很好的单一命令可以杀死它们。

sudo fuser -k /dev/nvidia*
于 2021-09-24T06:24:51.227 回答