我目前正在制作自己的自定义GPU报告,并使用torch.cuda.max_memory_allocated(device_id)
来获取每个GPU使用的最大内存。但是,我注意到这个数字与我在此过程中运行nvidia-smi
时的数字不同。
根据torch.cuda.max_memory_allocated
的文档,输出的整数是以字节为单位的。从我在网上搜索到的将字节数转换为千兆字节数的方法来看,应该用1024 ** 3
除它。我目前正在做round(max_mem / (1024 ** 3), 2)
是我计算错了,还是我完全误解了torch.cuda.max_memory_allocated
的工作原理?我观察到在整个过程中从一个GPU分配的内存大约是32GB,但torch.cuda.max_memory_allocated(0) / (1024 ** 3)
返回的内存大约是13.5GB。
1条答案
按热度按时间gtlvzcf81#
在PyTorch. TL的论坛上发布一个问题的链接; DR torch.cuda.max_memory_allocated不应该与nvidia-smi的输出精确地相似,因为nvidia-smi实际上保留了比实际使用的内存更多的内存。因此,torch.cuda.max_memory_reserved将与实际输出非常相似(尽管仍然不完全精确)。
https://discuss.pytorch.org/t/pytorchs-torch-cuda-max-memory-allocated-showing-different-results-from-nvidia-smi/165706/2