내 GPU #0에서는 11341MiB의 GPU RAM이 사용되고 프로세스가 나열되지 않습니다 nvidia-smi
. 이것이 어떻게 가능하며 어떻게 기억을 되돌릴 수 있습니까?
Thu Aug 18 14:27:58 2016
+------------------------------------------------------+
| NVIDIA-SMI 352.63 Driver Version: 352.63 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX TIT... Off | 0000:02:00.0 Off | N/A |
| 29% 61C P2 71W / 250W | 11341MiB / 12287MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX TIT... Off | 0000:03:00.0 Off | N/A |
| 22% 42C P0 71W / 250W | 23MiB / 12287MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 2 GeForce GTX TIT... Off | 0000:82:00.0 Off | N/A |
| 22% 35C P0 69W / 250W | 23MiB / 12287MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 3 GeForce GTX TIT... Off | 0000:83:00.0 Off | N/A |
| 0% 33C P0 60W / 250W | 23MiB / 12287MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
플래그를 사용하여 Theano Python 스크립트를 시작했는데 lib.cnmem=0.9
, 이는 GPU 메모리의 11341MiB를 사용하는 이유를 설명합니다(CNMeM 라이브러리"딥 러닝 프레임워크가 CUDA 메모리를 관리하는 데 도움이 되는 간단한 라이브러리입니다." ). 하지만 스크립트를 종료하고 GPU 메모리가 해제되기를 기대합니다.
pkill -9 python
도움이 되지sudo nvidia-smi --gpu-reset -i 0
않았습니다.sudo fuser -v /dev/nvidia*
원하지 않는 프로세스는 표시되지 않습니다.
저는 GeForce GTX Titan Maxwell과 Ubuntu 14.04.4 LTS x64를 사용하고 있습니다.
답변1
프로세스를 임의로 종료하는 데 사용하는 것은 kill -9
매우 나쁜 생각 이며 상황을 망칠 수 있습니다. SIGKILL
또는 신호 9는 아무것도 완료하지 않고 프로세스 실행을 즉시 중지하고 적절하게 종료합니다. 이 경우 스크립트가 종료되면 RAM이 확보되지 않을 수 있습니다. 귀하의 경우 메모리를 회수하는 유일한 방법은 GPU를 재설정하거나 GPU nvidia-smi --gpu-reset
를 사용할 수 없는 경우 재부팅하는 것입니다.
다음에 단순히 프로그램을 중지해야 하는 경우 인수 없이 kill을 사용하면 프로그램이 실제로 이를 처리하고 종료할 수 있도록 보다 친숙한 신호인 을 SIGTERM
보낼 것입니다 . 다른 신호에 응답하지 않는 작업을 중지하고 최후의 수단으로만 사용해야 합니다.SIGTERM
SIGKILL