44

How to kill running processes on GPUs for a specific program (e.g. python) in terminal? For example two processes are running with python in the top picture and kill them to see the bottom picture in nvidia-smi

For example two processes are running with python in the top picture and kill them to see the bottom picture in nvidia-smi

salehinejad
  • 7,258
  • 3
  • 18
  • 26

6 Answers6

64

The accepted answer doesn't work for me, probably because nvidia-smi has different formats across different versions/hardware.

I'm using a much cleaner command:

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

You can replace $3 in the awk expression to fit your nvidia-smi output. It is the n-th column in which the PIDs occur.

Ainz Titor
  • 1,497
  • 1
  • 15
  • 22
14

Use nvidia-smi or top command to see processes running and to kill command:

sudo kill -9 PID
MD Mushfirat Mohaimin
  • 1,966
  • 3
  • 10
  • 22
Snehal Rajput
  • 335
  • 3
  • 6
11

You can grep "python" in the nvidia-smi and then pass the PID to the kill -9 command, e.g.

sudo kill -9 $( nvidia-smi | grep 'python' | sed -n 's/|\s*[0-9]*\s*\([0-9]*\)\s*.*/\1/p' |  sed '/^$/d')
doneforaiur
  • 1,308
  • 7
  • 14
  • 21
salehinejad
  • 7,258
  • 3
  • 18
  • 26
9

I guess the question is already answered when nvidia-smi shows processes occupying GPU mem. For me, even though nvidia-smi wasnt showing any processes, GPU memory was being used and I wanted to kill them.

The way to go in this case was to use the fuser command to find out the processes using the particular GPU device. In my case I wanted to kill all the processes using the GPU device 3. This can be done using the command :

sudo fuser -k /dev/nvidia3

You can use -ki to kill the processes interactively.

Soma Siddhartha
  • 191
  • 1
  • 5
6

As one of other answers suggest you can use: (replace 5 with the column number where process id exists)

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

If you might have to use this a lot you can create an alias for the command: to do that do this you should edit ~/.bash_aliases file:

nano ~/.bash_aliases

and add the following line to it and save the file:

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

then (just needed this time):

source ~/.bashrc

Then if you run

killgpuprocess

it will kill the existing processes on GPU(s).

Sadra
  • 2,480
  • 2
  • 20
  • 32
0

Keeping here as a reference. In case one wants to kill all running processes on the gpu, following command would work:

nvidia-smi --query-compute-apps=pid --format=csv,noheader | xargs -n1 kill -9
Bitswazsky
  • 4,242
  • 3
  • 29
  • 58