在内存空间充足的情况下出现“RuntimeError: CUDA error: out of memory”错误

3

我正在尝试在远程机器的GPU上运行测试代码,代码如下:

import torch

foo = torch.tensor([1,2,3])
foo = foo.to('cuda')

我遇到了以下错误

Traceback (most recent call last):
  File "/remote/blade/test.py", line 3, in <module>
    foo = foo.to('cuda')
RuntimeError: CUDA error: out of memory
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.

这个讨论中,cuda和pytorch版本之间的冲突可能是错误的原因。我运行了以下内容

print('python v. : ', sys.version)
print('pytorch v. :', torch.__version__)
print('cuda v. :', torch.version.cuda)

获取版本信息:

python v. : 3.9.7 (default, Sep 16 2021, 13:09:58)
[GCC 7.5.0]
pytorch v. : 1.11.0.dev20211206
cuda v. : 10.2

这里有什么不对劲的地方吗?


您正在使用的Pytorch版本需要CUDA 10.2。 - talonmies
@talonmies 这是一个问题还是陈述?因为你看到我已经尝试了10.2,但没有成功。如果这是一个问题,我对CUDA版本没有偏好。另外,为什么你认为这个问题不应该有CUDA标签? - Blade
1
这是一个语句。torch.version.cuda 是由 PyTorch 构建时生成的硬编码字符串。它必须与默认库搜索路径中可访问的一组运行时库相匹配。而你的 PyTorch 问题并不涉及 CUDA 编程,因此我已经移除了该标签。 - talonmies
谢谢您的澄清。因此,我已经删除了“EDIT:”部分。但是,问题仍然存在于pytorch v. : 1.11.0.dev20211206和cuda v. : 10.2中。还有其他我可以检查的吗? - Blade
@Blade 你解决了吗? - Minions
@Minions 我为你添加了一个答案。希望这能帮到你。 - Blade
1个回答

0

回答那些问我是否能解决问题的评论:

我在两个不同的场合遇到了这个问题,

  1. 第一次,我尝试使用 conda 库,同时我也在另一个目录中安装了 Python 包(可能是使用 pip 安装的)。最终我手动删除了其他库。

  2. 第二次问题出现在僵尸进程上:实际上,我过早地终止了代码,因此 GPU 内存没有被清空。解决方法是运行

    ps -elf | grep python
    

    然后使用

    kill -9 [pid]
    

    杀死进程,其中 [pid] 是第一个命令返回的进程 ID。


谢谢@Blade!所以你刚才杀掉了所有的Python进程? - Minions
@Minions 是的。基本上,我没有运行任何东西,但它显示了Python进程,这就是为什么它们被称为僵尸进程。它们只占用内存。 - Blade
1
啊,好的。在我的情况下,我没有任何正在运行的进程,但还是谢谢你的回答 :) - Minions

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