cann/asc-devkit:InitBufHandle缓冲区初始化
2026/7/17 13:36:17 网站建设 项目流程

InitBufHandle

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品AI Core:支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:支持

功能说明

头文件路径为:"basic_api/kernel_tpipe.h"

为TQue、TBuf对象的内存块进行内存分配操作,包括设置内存块的大小,指向的地址等。

函数原型

template <typename T> __aicore__ inline void InitBufHandle(T* bufPool, uint32_t index, TBufHandle bufhandle, uint32_t curPoolAddr, uint32_t len)

参数说明

表1模板参数说明

参数名

说明

T

bufPool的数据类型。

表2参数说明

参数名称

输入/输出

含义

bufPool

输入

用户自定义的TBufPool对象。

index

输入

需要设置的内存块的偏移下标值,第一块为0,第二块为1,...,依次类推。

bufhandle

输入

需要设置的内存块指针,类型为TBufHandle(实际为uint8_t*)。

curPoolAddr

输入

需要设置的内存块的地址。

len

输入

需要设置的内存块的大小,单位为bytes。

约束说明

  • TQue、TBuf类继承自TQueBind类,所以TQue、TBuf对象也可使用该接口。
  • 目前只提供给自定义TBufPool初始化TQue、TBuf的内存块时使用。

返回值说明

调用示例

完整示例请参考调用示例。

// 假设自定义tbufpool类为MyBufPool // 自定义tbufpool类内部对TQue初始化的InitBuffer函数: template<class T> __aicore__ inline bool MyBufPool::InitBuffer(T& que, uint8_t num, uint32_t len) { ... // 对TQue的内存块进行初始化 uint32_t curPoolAddr = 0; // 内存块起始地址 auto bufhandle = xxx; // 具体的内存块,该变量可由自定义tbufpool内获得 srcQue0.InitStartBufHandle(bufhandle , num, len); for (uint8_t i = 0; i < num; i++) { que.InitBufHandle(this, i, bufhandle , curPoolAddr + i * len, len); } ... } // 自定义tbufpool类内部对TBuf初始化的InitBuffer函数: template<class T> __aicore__ inline bool MyBufPool::InitBuffer(TBuf<bufPos>& buf, uint32_t len) { ... // 对TBuf的内存块进行初始化 uint32_t curPoolAddr = 0; // 内存块起始地址 auto bufhandle = xxx; // 具体的内存块,该变量可由自定义tbufpool内获得 srcBuf1.InitStartBufHandle(bufhandle, 1, len); srcBuf1.InitBufHandle(this, 0, bufhandle , curPoolAddr, len); ... } AscendC::TPipe pipe; AscendC::TQue<TPosition::VECIN, 1> srcQue0; AscendC::TBuf<TPosition::VECIN> srcBuf1; MyBufPool tbufPool; pipe.InitBufPool(tbufPool, 1024 * 2); tbufPool.InitBuffer(srcQue0, 1, 1024); tbufPool.InitBuffer(srcBuf1, 1024);

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询