为什么带有10x10x3的单个Conv2d占用850mb gpu

ch

在Pytorch中,我正在优化模型。如果运行以下代码,则nvidia-smi表示我在gpu上使用的内存为850MiB / 7979MiB。为什么会这样呢?

与torch.no_grad():A = nn.Conv2d(10,10,3).cuda()

我想象在某处指定了一些开销或默认分配大小,但是找不到此类文档。我确实记得tensorflow有一个设置来限制分配的内存量。

相关的Git问题

迈克尔·容格

卷积不会占用太多内存。您可以使用进行验证torch.cuda.memory_allocated,它显示所有张量所占用的内存(以字节为单位):

torch.cuda.memory_allocated() # => 0

A = nn.Conv2d(10,10,3).cuda()

torch.cuda.memory_allocated() # => 4608

卷积仅使用4608字节。

nvidia-smi 显示内存使用率较高的原因有两个。

缓存内存分配器

PyTorch使用了缓存内存分配器,这意味着它保留了比避免设备同步所需的更多内存。

来自PyTorch CUDA语义-内存管理

PyTorch使用缓存内存分配器来加速内存分配。这允许快速的内存重新分配而无需设备同步。但是,分配器管理的未使用内存仍将显示为nvidia-smi您可以使用memory_allocated()max_memory_allocated()监视张量占用的内存,并使用memory_reserved()max_memory_reserved()监视由缓存分配器管理的内存总量。

CUDA上下文

首次初始化CUDA时,它将创建一个用于管理设备控制的上下文。最值得注意的是,上下文包含所有不同CUDA内核的代码,其中PyTorch拥有很多。上下文的大小在不同的GPU架构中也有所不同。Issue#20532中讨论了一些详细信息-仅初始化cuda就占用了数百MB

您正在观察的内存几乎全部归因于CUDA上下文。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么是GPU驱动的渲染?

来自分类Dev

为什么我的GPU过热?

来自分类Dev

为什么在专用GPU上JOGL比集成GPU慢?

来自分类Dev

为什么在专用GPU上JOGL会比集成GPU慢?

来自分类Dev

“科学GPU”和“游戏GPU”之间有什么区别?

来自分类Dev

什么时候使用GPU?

来自分类Dev

什么是GPU上的相干内存?

来自分类Dev

具有多个GPU的TensorFlow XLA不能同时使用GPU

来自分类Dev

杀死所有 GPU 进程

来自分类Dev

基于GPU的N ^ 2比较

来自分类Dev

Windows 10改进了我的GPU

来自分类Dev

Navi10 Gpu 无显示

来自分类Dev

在带有gpu的docker内部使用tensorflow

来自分类Dev

为什么GPU的运行温度比CPU高?

来自分类Dev

为什么传统的RAMDisk比GPU RAMDisk快?

来自分类Dev

为什么cpu和gpu的结果不同?

来自分类Dev

运行 python 代码消耗 GPU。为什么?

来自分类Dev

如何让 X 忽略我的主要 GPU?

来自分类Dev

我的GPU有什么问题?

来自分类Dev

CUDA映射的内存是否占用GPU RAM?

来自分类Dev

CUDA映射的内存是否占用GPU RAM?

来自分类Dev

2D 游戏需要 GPU 吗?

来自分类Dev

Cudf仅使用单个GPU加载数据

来自分类Dev

什么是BIOS中的nvidia gpu性能标度?

来自分类Dev

我如何告诉Windows使用什么GPU

来自分类Dev

专用GPU的非游戏优势是什么?

来自分类Dev

安装了什么GPU驱动程序?

来自分类Dev

亚马逊 GPU 实例背后的硬件是什么?

来自分类Dev

Caffe / pyCaffe:设置所有GPU