tensorflow内存分配器剖析

tensorflow基于Doug Lea的malloc实现了自己的一套内存分配器.(简易版本的dlmalloc)通过合并的方式减少内存碎片.前提是假设使用这个分配器的进程拥有很大的内存,并且所有的内存分配请求都是通过这个接口.
代码路径:
core/common_runtime/bfc_allocator.h

关键数据结构以及变量含义:
Chunk:指向一块内存,prev/next指针组成了一个双向链表,按照地址排序并且基地址保持连续.包含当前块是否在使用或者空闲的信息,并且还包括一个指针指向所属的bin.
Bin:一个集合,包含相似大小的空闲Chunk.所有在bin中的Chunk大小均应该大于等于bin_size.按照大小排序(大小首先按照大小,其次按照首地址)
AllocationRegion:映射一个指针,指向ChunkHandles(一段连续的内存区域).
RegionManager:管理一个或多个AllocationRegions.提供一个指针与ChunkHandle之间的中间层,支持跨多个不连续的memory region分配.

同样存在split操作,就是将chunk一分为二,空余的那部分重新放入到合适的bin里面.
Merge操作,只能merge空闲的chunk,

Visitor:
VisitableAllocator:当一个内存分配器需要支持某些内存区域的注册/注销操作时,使用这个子类.注册一个visitor保证当前设备中新分配的每个内存块只会被调用一次.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值