pytorch 如何通过删除Tensor释放gpu内存?

y3bcpkx1  于 2023-10-20  发布在  其他
关注(0)|答案(2)|浏览(299)

假设我创建了一个Tensor并将其放在GPU上,以后不需要它,并希望释放分配给它的GPU内存;我该怎么做?

import torch
a=torch.randn(3,4).cuda() # nvidia-smi shows that some mem has been allocated.
# do something
# a does not exist and nvidia-smi shows that mem has been freed.

我试过:

  1. del a
  2. del a; torch.cuda.empty_cache()
    但都不管用。
deyfvvtc

deyfvvtc1#

运行del tensor会从GPU释放内存,但不会将其返回到设备,这就是为什么内存仍然显示为在nvidia-smi上使用。你可以创建一个新的Tensor,这将重用内存。

来源

https://discuss.pytorch.org/t/how-to-delete-pytorch-objects-correctly-from-memory/947https://discuss.pytorch.org/t/about-torch-cuda-empty-cache/34232

2sbarzqh

2sbarzqh2#

您可以使用tensor执行以下操作:

tensor.detach()
tensor.grad = None
tensor.storage().resize_(0)

相关问题