CANN/Ascend C CubeResGroupHandle构造函数

📅 2026/7/16 11:33:39
CANN/Ascend C CubeResGroupHandle构造函数
CubeResGroupHandle构造函数【免费下载链接】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 训练系列产品不支持功能说明构造CubeResGroupHandle对象完成组内的AIC和消息队列分配。构造CubeResGroupHandle对象时需要传入模板参数CubeMsgTypeCubeMsgType是由用户定义的消息结构体请参考表1。使用此接口需要用户自主管理地址、同步事件等因此更推荐使用CreateCubeResGroup接口快速创建CubeResGroupHandle对象。函数原型template typename CubeMsgType class CubeResGroupHandle; __aicore__ inline CubeResGroupHandle() default __aicore__ inline CubeResGroupHandle(GM_ADDR workspace, uint8_t blockStart, uint8_t blockSize, uint8_t msgQueueSize, uint8_t evtIDIn)参数说明表1CubeResGroupHandle参数说明参数输入/输出说明workspace输入该CubeResGroupHandle的消息通讯区在GM上的起始地址。blockStart输入该CubeResGroupHandle在AIV视角下起始AIC对应的序号即AIC的起始序号*2。例如如果AIC起始序号为0则填入0*2如果为1则填入1*2。blockSize输入该CubeResGroupHandle在AIV视角下分配的Block个数即实际的AIC个数*2。msgQueueSize输入该CubeResGroupHandle分配的消息队列总数。evtIDIn输入通信框架内用于AIV侧消息的同步事件。如下图所示CubeResGroupHandle1的blockStart为4blockSize为4表示起始的AIC序号为2即blockStart / 2AIC数量为2即blockSize / 2。msgQueueSize为10表示消息队列个数为10每个Block分配的消息队列个数为Ceil(msgQueueSizeblockSize/2)Block2和Block3分配到的消息队列个数均为5。CubeResGroupHandle2的msgQueueSize数量为11最后一个Block只能分配5个消息队列。图1Block和消息队列映射示意图![](https://raw.gitcode.com/cann/asc-devkit/raw/f9a538cb42c3d15b272e670d93d5e2abe7602e7e/docs/zh/api/figures/Block和消息队列映射示意图.png Block和消息队列映射示意图?utm_sourcegitcode_repo_files)约束说明假设芯片的AIV核数为x那么blockStart blockSize x - 1, msgQueueSize x。每个AIC至少被分配1个消息队列msgQueue。blockStart和blockSize必须为偶数。使用该接口UB空间末尾的1600B sizeof(CubeMsgType)将被占用。1个AIC只能属于1个CubeGroupHandle即多个CubeGroupHandle的[blockStart / 2, blockStart / 2blockSize / 2]区间不能重叠。不能和REGIST_MATMUL_OBJ接口同时使用。使用资源管理API时用户自主管理AIC和AIV的核间通信REGIST_MATMUL_OBJ内部是由框架管理AIC和AIV的核间通信同时使用可能会导致通信消息错误等异常。调用示例uint8_t blockStart 4; uint8_t blockSize 4; uint8_t msgQueueSize 10; uint8_t evtIDIn 0; //用户自行管理事件ID AscendC::KfcWorkspace desc(workspace); // 用户自行管理的workspace指针。 AscendC::CubeResGroupHandleCubeMsgBody handle; handle AscendC::CubeResGroupHandleMatmulApiType, MyCallbackFunc, CubeMsgBody(desc.GetMsgStart(), blockStart, blockSize, msgQueueSize, evtIDIn);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考