内存池部分介绍

在Ascend Transformer Boost加速库(以下简称ATB)的调用流程中,往往需要频繁调用Malloc和Free向设备申请和释放内存空间,这样的操作会打断设备的流水,造成额外的性能开销。

内存池

内存池是一种常见的技术手段用于管理和分配设备的内存。其基本功能原理如下:

主要结构

关键函数

使用内存池管理workspace内存

实现内存池的首要目的是减少aclrtMalloc和acletFree的调用次数,在本例中主要针对workspace的内存进行管理。

在Node类中会保存有当前已分配的workspace大小和对应的blockId。当需求的workspace大小发生变化时,如果需求大小小于当前已有空间则不进行操作,大于则释放当前内存块并重新申请更大的内存块。