マシンを再起動せずに、CUDA経由でGPUを使用して実行中のすべての処理を停止することは可能ですか?
4 に答える
lsofユーティリティはこれに役立ちます。NVIDIAカードにアクセスするプロセスのリストは次の方法で入手できます。
lsof /dev/nvidia*
次に、killまたはpkillを使用して、必要なプロセスを終了します。Xが実行されている場合は、Xを強制終了したくない場合があることに注意してください。私のデスクトップシステムでは、Xとkwinの両方がGPUにもアクセスしています。
長い答え:
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列(私の場合は2番目の列)を選択し、
xargs -I {} kill {}
それらのPIDジョブを強制終了します。
短い答え:
次のコマンドを使用して、それらを一度にすべて削除できます。
気を付けて!このコマンドは、lsof / dev /nvidia*に表示されるすべてのPIDを削除します。最初にlsof/dev / nvidia *を実行して、これらのジョブが削除するジョブであることを確認してください。
lsof /dev/nvidia* | awk '{print $2}' | xargs -I {} kill {}
1つのコマンドでジョブを終了します。
でプロセスを確認してnvidia-smi
から
kill -9 <pid>
フューザーコマンドを使用して、CUDAを使用するすべてのプロセスを取得し、それらを強制終了できます。それらすべてを殺すための素晴らしい単一のコマンドもあります。
sudo fuser -k /dev/nvidia*