Могу ли я остановить все процессы, использующие CUDA в Linux, без перезагрузки?

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

Ответ 1

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

lsof /dev/nvidia*

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

Ответ 2

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

kill -9 <pid>

Ответ 3

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

lsof /dev/nvidia*

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

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

Вы можете использовать следующую команду, чтобы удалить их все сразу.

Осторожно! Эта команда удалит все идентификаторы PID для lsof/dev/nvidia *. Сначала запустите lsof/dev/nvidia *, чтобы подтвердить, что эти задания вы хотите удалить.

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

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