tensorflow内存分配器剖析
来源:互联网 发布:软件项目进度报告 编辑:程序博客网 时间:2024/05/19 19:58
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保证当前设备中新分配的每个内存块只会被调用一次.
阅读全文
0 0
- tensorflow内存分配器剖析
- STL源码剖析--内存分配器
- Linux内存管理---slab 分配器剖析
- Linux slab 分配器剖析----了解 Linux 内存管理的方式
- STL源码剖析-配置器(内存分配器)
- 内存分配器
- 内存分配器
- 内存分配器
- Linux slab 分配器剖析
- Linux slab 分配器剖析
- Linux slab 分配器剖析
- Linux slab 分配器剖析
- Linux slab 分配器剖析
- Linux slab 分配器剖析
- Linux slab 分配器剖析
- Linux slab 分配器剖析
- Linux slab 分配器剖析
- Linux slab 分配器剖析
- java实现排序
- Linux C第十二章进程控制编程十个问题及解答
- BP的详细推导过程
- C++学习笔记--构造函数
- 第二十三天总结
- tensorflow内存分配器剖析
- 程序运行产生SIGABRT信号的原因
- azkaban3.38.0 mac安装
- java小白爬山记--匿名类的使用
- J2EE中常用的名词解释
- Bootstrap JS插件Alert源码分析
- PIL python图像处理类库下载
- 实现首页框架的tab签,点击模块在首页添加tab签之后,同时显示其对应的页面
- 通过一个等式判断计算等式所用进制