CreateCubeResGroup
功能说明
快速创建CubeResGroupHandle对象。避免使用CubeResGroupHandle的构造函数创建对象,出现不同CubeResGroupHandle对象的消息地址空间冲突,同步事件错误等情况。
函数原型
1 2 |
template <int groupID, class MatmulApiType, template <class, class> class CallBack, typename CubeMsgType> __aicore__ inline CubeResGroupHandle<CubeMsgType> CreateCubeResGroup(KfcWorkspace &desc, uint8_t blockStart, uint8_t blockSize, uint8_t msgQueueSize, GM_ADDR tiling) |
参数说明
参数 |
输入/输出 |
说明 |
---|---|---|
groupID |
输入 |
用于表示Group的编号,int32取值范围。 |
MatmulApiType |
输入 |
定义的AIC计算对象。 |
CallBack |
输入 |
回调函数类,需要实现Init, Call两个接口。 |
CubeMsgType |
模板参数 |
用户自定义的消息结构体。 |
参数 |
输入/输出 |
说明 |
---|---|---|
desc |
输入 |
KfcWorkspace,用于维护消息空间。 |
blockStart |
输入 |
该CubeResGroupHandle的起始AIC对应的AIV序号,必须是偶数。 |
blockSize |
输入 |
该CubeResGroupHandle在AIV视角下分配的Block个数,即实际的AIC个数*2。 |
msgQueueSize |
输入 |
该CubeResGroupHandle分配的消息队列总数。 |
tiling |
输入 |
AIC核计算所需tiling信息的地址。 |
返回值
CubeResGroupHandle对象实例。
支持的型号
Atlas A2训练系列产品/Atlas 800I A2推理产品
约束说明
- 假设芯片的AIV核数为x,那么blockStart + blockSize<= x - 1, msgQueueSize <= x。
- 每个AIC(或者说Block)至少被分配1个消息队列msgQueue。
- blockStart和blockSize必须为偶数。
调用示例
1 2 |
// 创建1个CubeResGroupHandle,其中6个Cube核,消息队列共48个,每个Cube核分配8个消息队列 auto qk = AscendC::CreateCubeResGroup<1, qkType, MyCallbackFunc, CubeMsgBody>(desc, 0, 12, 48, tilingGM); |
父主题: CubeResGroupHandle