cann/asc-devkit:创建Cube资源组API

📅 2026/7/15 15:03:16
cann/asc-devkit:创建Cube资源组API
CreateCubeResGroup产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品 / Atlas A3 推理系列产品xAtlas A2 训练系列产品 / Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品xAtlas 推理系列产品 AI CorexAtlas 推理系列产品 Vector CorexAtlas 训练系列产品x功能说明快速创建CubeResGroupHandle对象内部完成消息队列空间和同步事件分配。推荐使用该接口避免使用CubeResGroupHandle的构造函数创建对象出现不同对象的消息队列空间冲突、同步事件错误等情况。函数原型template int groupID, class MatmulApiType, template class, class class CallBack, typename CubeMsgType __aicore__ inline CubeResGroupHandleCubeMsgType CreateCubeResGroup(KfcWorkspace desc, uint8_t blockStart, uint8_t blockSize, uint8_t msgQueueSize, GM_ADDR tiling)参数说明表 1模板参数说明参数说明groupID用于表示Group的编号int32取值范围。MatmulApiType定义的AIC计算对象类型。CallBack回调函数类需要实现Init和Call两个接口。CubeMsgType用户自定义的消息结构体。表 2接口参数说明参数输入/输出说明desc输入KfcWorkspace用于维护消息队列空间。blockStart输入该CubeResGroupHandle在AIV视角下的起始AIC对应的序号即AIC起始序号 * 2。例如如果AIC起始序号为0则填入0 * 2如果为1则填入1 * 2。blockSize输入该CubeResGroupHandle在AIV视角下分配的Block个数即实际的AIC个数*2。msgQueueSize输入该CubeResGroupHandle分配的消息队列总数。tiling输入AIC核计算所需tiling信息的地址。返回值说明CubeResGroupHandle对象实例。约束说明假设芯片的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 / 2 blockSize / 2]区间不能重叠。不能和REGIST_MATMUL_OBJ接口同时使用。使用资源管理API时用户自主管理AIC和AIV的核间通信REGIST_MATMUL_OBJ内部是由框架管理AIC和AIV的核间通信同时使用可能会导致通信消息错误等异常。调用示例auto handle AscendC::CreateCubeResGroupGROUPID, MatmulApiType, MyCallbackFunc, CubeMsgBody (desc, BLOCKSTART, BLOCKSIZE, MSGQUEUESIZE, tilingGM);创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考