设置PYTORCH_NO_CUDA_MEMORY_CACHING=1时torch.cuda.memory_allocated()返回0是否为Bug?
问题解答
这不是Bug,是PyTorch的设计行为,原因如下:
- 当设置
PYTORCH_NO_CUDA_MEMORY_CACHING=1时,PyTorch会禁用自身的CUDA内存缓存机制,直接调用CUDA原生的内存分配/释放接口管理显存。 torch.cuda.memory_allocated()这个API的作用是统计PyTorch内存缓存系统中已分配给张量的内存,当缓存被禁用后,PyTorch不再追踪这部分内存的分配情况,所以返回0。- 但实际GPU显存确实被张量占用了,你可以通过
nvidia-smi这类系统级工具查看真实的显存使用量。
简单说:这个API只负责统计PyTorch自己缓存池里的内存,关掉缓存后,显存直接由CUDA接管,PyTorch就不统计这部分了,所以返回0是正常的设计结果,并非Bug。
内容的提问来源于stack exchange,提问作者harsanyidani
相关产品推荐
相关产品推荐

