Nvidia GPU内存已分配,但没有任何进程使用?

15

我在尝试解决新脚本中的一些错误时经常重新运行相同的 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 |
+-----------------------------------------------------------------------------+

目前似乎大部分内存已被使用(10891/11144),但列表中没有看到任何进程占用GPU的大量内存,因此似乎没有什么需要调用的。同时我的mxnet脚本已经退出,所以我认为不应该是它的问题。如果GPU不能立即知道脚本不再需要内存,那么出现几秒甚至几十秒的延迟也是可以理解的,但是我已经等了好几分钟,仍然看到相同的显示。这是怎么回事?我是否需要进行一些内存清理?如果需要,应该如何操作?谢谢新手的任何提示。


https://dev59.com/1GUp5IYBdhLWcg3wj4Hu 可能会有所帮助。 - Chih-Hsuan Yen
1个回答

7

GPU内存使用完全绑定到进程的生命周期。如果您看到GPU内存被使用,那么一定有一个仍然在运行且保留内存的进程。如果您运行ps -a |grep python命令,您将看到所有Python进程,并且这将告诉您哪个进程仍然在运行。


我该如何在Windows中使用这个命令? - ProgrX
1
使用 ps -a | grep python 命令,我找到并杀掉了一些占用 GPU 内存的进程。然而,在杀掉所有 ps -a | grep python 返回的进程后,nvidia-smi 仍然显示有一些 GPU 内存正在被使用。我正在使用 detectron2,我想知道这是否与 multiprocessing 有关。 - user3731622

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接