Nvidia GPU 内存分配但没有进程?

TFd*_*doe 7 gpu mxnet

我经常重新运行相同的mxnet脚本,同时我尝试解决新脚本中的一些错误(而且我是新脚本mxnet)。当我尝试运行我的脚本时,经常会出现 GPU 内存不足的错误,当我nvidia-smi用来检查时,我看到的是:

Wed Dec  5 15:41:29 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.24.02              Driver Version: 396.24.02                 |
|-------------------------------+----------------------+----------------------+
| 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 108...  Off  | 00000000:65:00.0  On |                  N/A |
|  0%   54C    P2    68W / 300W |  10891MiB / 11144MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1446      G   /usr/lib/xorg/Xorg                            40MiB |
|    0      1481      G   /usr/bin/gnome-shell                         114MiB |
|    0     10216      G   ...-token=8422C9FC67F51AEC1893FEEBE9DB68C6    31MiB |
|    0     18221      G   /usr/lib/xorg/Xorg                           458MiB |
|    0     18347      G   /usr/bin/gnome-shell                         282MiB |
+-----------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

所以似乎大部分内存都在使用 (10891/11144) 但我没有看到列表中的任何进程占用了 GPU 的大部分,所以似乎没有任何东西可以调用。而且我的 mxnet 脚本已经退出,所以我认为它不应该是那样。如果 GPU 不立即知道脚本不再需要内存,我会理解是否有几秒甚至几十秒的延迟,但我会持续很多分钟并且仍然看到相同的显示。什么给出了,我应该做一些内存清理吗?如果是这样,如何?感谢您对新手的任何提示。

小智 7

GPU 内存使用量与进程的生命周期完全相关。如果您看到 GPU 内存已被使用,则必须有一个进程仍处于活动状态并占用内存。如果你运行,ps -a |grep python你应该会看到所有 python 进程,这会告诉你哪个进程仍然处于活动状态。