Могу ли я остановить все процессы, использующие CUDA в Linux, без перезагрузки? - PullRequest
13 голосов
/ 04 декабря 2010

Можно ли остановить всю запущенную обработку с использованием графического процессора через CUDA, не перезагружая машину?

Ответы [ 3 ]

13 голосов
/ 31 декабря 2010

В этом поможет утилита lsof. Вы можете получить список процессов, обращающихся к вашим картам NVIDIA:

lsof /dev/nvidia*

Затем используйте kill или pkill, чтобы завершить процессы, которые вы хотите. Обратите внимание, что вы можете не захотеть убивать X, если он работает. В моей настольной системе и X, и Kwin также получают доступ к графическому процессору.

7 голосов
/ 20 января 2016

вы можете проверить процессы с помощью nvidia-smi, а затем

kill -9 <pid>
3 голосов
/ 02 июля 2018

Краткий ответ:

lsof /dev/nvidia* | awk '{print $2}' | xargs -I {} kill {}

Завершить работу одной командой.

Длинный ответ:

lsof /dev/nvidia*

дает вам 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.

...