tim*_*dim 35 cuda gpgpu remote-access
在刷新内存之前,我的CUDA程序在执行期间崩溃了.结果,设备内存仍然被占用.
我正在运行GTX 580,但nvidia-smi --gpu-reset
不支持.
放置cudaDeviceReset()
在程序的开头只会影响进程创建的当前上下文,并且不会刷新在它之前分配的内存.
我正在远程访问具有该GPU的Fedora服务器,因此物理重置非常复杂.
所以,问题是 - 在这种情况下有没有办法刷新设备内存?
kso*_*all 62
检查使用GPU内存的是什么
sudo fuser -v /dev/nvidia*
Run Code Online (Sandbox Code Playgroud)
您的输出将如下所示:
USER PID ACCESS COMMAND
/dev/nvidia0: root 1256 F...m Xorg
username 2057 F...m compiz
username 2759 F...m chrome
username 2777 F...m chrome
username 20450 F...m python
username 20699 F...m python
Run Code Online (Sandbox Code Playgroud)
然后杀了,你不再需要在PID htop
或
sudo kill -9 PID.
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,Pycharm吃了大量的内存,所以我杀了20450和20699.
Ash*_*ran 13
First type
nvidia-smi
Run Code Online (Sandbox Code Playgroud)
then select the PID that you want to kill
sudo kill -9 PID
Run Code Online (Sandbox Code Playgroud)
Ant*_*lon 11
还可以使用nvtop
,它提供的界面与 非常相似htop
,但用漂亮的图表显示您的 GPU 使用情况。您还可以直接从此处终止进程。
这是其 Github 的链接: https: //github.com/Syllo/nvtop
虽然除了特殊情况之外的其他任何操作都应该是必要的,但在linux主机上执行此操作的建议方法是通过执行操作来卸载nvidia驱动程序
$ rmmod nvidia
Run Code Online (Sandbox Code Playgroud)
具有合适的root权限,然后重新加载
$ modprobe nvidia
Run Code Online (Sandbox Code Playgroud)
如果机器正在运行X11,您需要事先手动停止,然后重新启动它.驱动程序初始化过程应该消除设备上的任何先前状态.
这个答案已经从评论中汇总并作为社区维基发布,以便将这个问题从CUDA标签的未答复列表中删除
小智 8
我也遇到了同样的问题,我在quora中看到了一个很好的解决方案
sudo kill -9 PID.
Run Code Online (Sandbox Code Playgroud)
请参阅https://www.quora.com/How-do-I-kill-all-the-computer-processes-shown-in-nvidia-smi
小智 6
对于使用python的人:
import torch, gc
gc.collect()
torch.cuda.empty_cache()
Run Code Online (Sandbox Code Playgroud)
在macOS (/ OS X) 上,如果其他人在操作系统上遇到明显泄漏内存的问题:
归档时间: |
|
查看次数: |
81469 次 |
最近记录: |