下载
中文
注册

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)

参数说明

表1 模板参数说明

参数

输入/输出

说明

groupID

输入

用于表示Group的编号,int32取值范围。

MatmulApiType

输入

定义的AIC计算对象。

CallBack

输入

回调函数类,需要实现Init, Call两个接口。

CubeMsgType

模板参数

用户自定义的消息结构体。

表2 接口参数说明

参数

输入/输出

说明

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);