答え1
Unixの哲学に応じて、特定のGPUを使用してプロセスを一覧表示するツールと、プロセスを終了するツールがあります。シェル構成とテキスト処理ツールを使用して組み合わせます。
たとえば、GPU 2 を使用してすべてのプロセスを終了するには、次のコマンドを実行できます。
kill $(nvidia-smi | awk '$2=="Processes:" {p=1} p && $2 == 2 && $3 > 0 {print $3}')
または
kill $(nvidia-smi -g 2 | awk '$2=="Processes:" {p=1} p && $3 > 0 {print $3}')
答え2
lsof /dev/nvidia* | awk '{print $2}' | xargs -I {} kill {}
私のために動作します。
私の場合、プロセスはそこにリストされていませんnvidia-smi
。
答え3
たぶんこれがあなたに必要なものかもしれません:
kill -9 $(nvidia-smi | awk '$2 == "GPU" && $3 == "PID" {flag = 1} flag && $3 > 0 {print $2, $3}' | awk '$1 == 2 {print $2}')
awk
より複雑な条件の場合は、2 番目のコマンドの条件文を変更できます。たとえば、次のコマンドを使用すると、PID> 1000のGPU-0からGPU-3を使用するすべてのプロセスを終了できます。
kill -9 $(nvidia-smi | awk '$2 == "GPU" && $3 == "PID" {flag = 1} flag && $3 > 0 {print $2, $3}' | awk '$1 < 4 && $2 > 1000 {print $2}')
ご覧のとおり、kill -9 PIDs
PIDはプロセスを終了するために必要であり、awk
終了する有効なPIDを見つけるために2回使用されます。
具体的には、最初のawk
コマンドは、「GPU PIDタイププロセス名」行の後に行を選択し、各GPU IDとPIDの間にスペースがあるGPU idとPID行を印刷します。 2番目は、awk
特定のGPU IDまたはPID(この場合はGPU-2を使用するすべてのプロセス)を見つけてPIDを印刷します。最後に、kill -9 PIDs
そのPIDに基づいてプロセスが終了します。
答え4
これは私にとって効果的です。
kill $(nvidia-smi -g 2 | awk '$5=="PID" {p=1} p {print $5}')
-g
終了するプロセスのGPU IDを設定するPID$5
列。-g
すべてのGPUでプロセスを終了したい場合は、このパラメータを省略できます。
awkization は、GPU メモリ使用量を調整することでさらに向上させることができます。awk '$5==“PID” && $8>0 {p=1} p {print $5}'
ここで$8
はメモリ使用量列です。