通常の状況では、プロセスが停止するとビデオメモリが解放されます
ただし、異常な状況でプロセスが閉じられた場合、プロセスが解放されない可能性があります。このとき、次の状況が発生します。
Mon Oct 19 16:00:00 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104 Driver Version: 410.104 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla P100-PCIE... Off | 00000000:00:0D.0 Off | 0 |
| N/A 38C P0 35W / 250W | 16239MiB / 16280MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
もちろん、解決策は、通常はビデオメモリを使用するプロセスを強制終了することです。
プロセスをリリースするには、もちろん、プロセスを見つける必要があります
fuser -v /dev/nvidia*
USER PID ACCESS COMMAND
/dev/nvidia0: root 26031 F...m python
root 26035 F...m python
root 26041 F...m python
root 26050 F...m python
root 32512 F...m ZMQbg/1
/dev/nvidiactl: root 26031 F...m python
root 26035 F...m python
root 26041 F...m python
root 26050 F...m python
root 32512 F.... ZMQbg/1
/dev/nvidia-uvm: root 26031 F.... python
root 26035 F.... python
root 26041 F.... python
root 26050 F.... python
root 32512 F.... ZMQbg/1
次に、kill -9 26031を使用してプロセスを強制終了すると、プロセスはリソースを解放します。上記でクエリされたプロセスを一度に1つずつ強制終了する必要があります。
それは偶然のない正常です: