CANN/asc-devkit TBufPool简介

📅 2026/7/15 15:00:28
CANN/asc-devkit TBufPool简介
TBufPool简介TPipe可以管理全局内存资源而TBufPool可以手动管理或复用Unified Buffer/L1 Buffer物理内存主要用于多个stage计算中Unified Buffer/L1 Buffer物理内存不足的场景。功能图示下图展示了资源池划分的过程通过TPipe::InitBuffer接口可以申请Buffer内存并使用队列进行管理通过TPipe::InitBufPool可以划分出资源池BufPool1通过TPipe::InitBufPool可以指定BufPool1与BufPool3地址和长度复用;通过TBufPool::InitBuffer及TBufPool::InitBufPool接口继续将BufPool1及BufPool3划分成Buffer或TBufPool资源池。图 1BufPool资源池划分![](https://raw.gitcode.com/cann/asc-devkit/raw/2fa1fe357eb44d259bd967453a8de3d22764bf1c/docs/api/figures/BufPool资源池划分.png BufPool资源池划分?utm_sourcegitcode_repo_files)如图示的嵌套关系最外层TBufPool(BufPool1与BufPool3)需要通过TPipe::InitBufPool申请并初始化内层TBufPool(BufPool2)可以通过TBufPool::InitBufPool申请并初始化。约束说明TBufPool必须通过TPipe::InitBufPool或TBufPool::InitBufPool接口进行划分和初始化资源池只能整体划分成部分无法部分拼接为整体不同TBufPool资源池切换进行计算时需要调用TBufPool::Reset()接口清空已完成计算的TBufPool清空后的TBufPool资源池及分配的Buffer和数据默认无效不同资源池间分配的Buffer无法混用避免数据踩踏AllocTensor/FreeTensor、EnQue/DeQue在切分TBufPool资源池时必须成对匹配使用自动确保同步切换资源池的时候若手写同步Ascend C不保证地址读写复用同步因此不推荐手写同步。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考