Init

功能说明

初始化Matmul对象,传入tiling参数,tiling参数的具体介绍请参考Matmul Tiling API

函数原型

__aicore__ inline void Init(const TCubeTiling* __restrict cubeTiling, TPipe* tpipe);

参数说明

表1 接口参数说明

参数名

输入/输出

描述

cubeTiling

输入

Matmul tiling参数,TCubeTiling结构体定义请参见表2 TCubeTiling结构说明

tpipe

输入

传入算子侧创建的tpipe对象,用于Matmul内部申请空间,全局需要保持同一份tpipe对象。

表2 TCubeTiling结构说明

参数名称

数据类型

说明

usedCoreNum

int

使用的AI处理器核数,请根据实际情况设置。取值范围为:[1, AI处理器最大核数]。

M, N, Ka, Kb

int

A、B、C矩阵原始输入的shape大小,以元素为单位。M,Ka为A矩阵原始输入的Shape, Kb, N为B矩阵原始输入的Shape。

  • 大小约束
    • 若A矩阵为ND格式,不进行转置时,Ka取值范围为[1,65535],M无大小限制;进行转置时,M取值范围为[1,65535],Ka无大小限制。
    • 若B矩阵为ND格式,不进行转置时,N取值范围为[1,65535],Kb无大小限制;进行转置时,Kb取值范围为[1,65535],N无大小限制。
  • 对齐约束
    • 若A矩阵以NZ格式输入,则M需要以16个元素对齐,K需要以C0_size对齐;若B矩阵以NZ格式输入,则K需要以C0_size对齐,N需要以16个元素对齐。
    • 若A、B矩阵为ND格式,无对齐约束。
  • half/bfloat16_t数据类型输入,C0_size为16;float数据类型输入,C0_size为8,int8_t数据类型输入,C0_size为32。

singleCoreM, singleCoreN, singleCoreK

int

A、B、C矩阵单核内shape大小,以元素为单位。

singleCoreK = K,多核处理时不对K进行切分;singleCoreM <= M;singleCoreN <= N。

注意:若A矩阵以NZ格式输入,则singleCoreM需要以16个元素对齐,singleCoreK需要以C0_size * fractal_num对齐;若B矩阵以NZ格式输入,则singleCoreK需要以C0_size * fractal_num对齐,singleCoreN需要以16个元素对齐。

half/bfloat16_t数据类型输入,C0_size为16,fractal_num为1;float数据类型输入,C0_size为8,fractal_num为2。

baseM, baseN, baseK

int

A、B、C矩阵参与一次矩阵乘指令的shape大小,以元素为单位。

  • baseM * baseN * sizeof(Output_dtype) <= L0C_size
  • baseM * baseK * sizeof(Input_dtype) <= L0A_size
  • baseK * baseN * sizeof(Input_dtype) <= L0B_size

需要按分形对齐。

depthA1, depthB1

int

A、B矩阵片全载A2/B2的份数,depthA1为baseM * baseK的整数倍,depthB1为baseN * baseK的整数倍。取值大于0。

stepM, stepN

int

stepM为左矩阵在A1中缓存的bufferM方向上baseM的倍数。

stepN为右矩阵在B1中缓存的bufferN方向上baseN的倍数。

取值大于0。

isBias

int

是否使能Bias,0代表不使能Bias,1代表使能Bias。

transLength

int

max(A1Length, B1Length, C01Length)。

iterateOrder

int

一次Iterate计算出[baseM, baseN]大小的C矩阵分片,Iterate完成后,Matmul会自动偏移下一次Iterate输出的C矩阵位置,iterOrder表示自动偏移的顺序。

  • 0代表先往M轴方向偏移再往N轴方向偏移
  • 1代表先往N轴方向偏移再往M轴方向偏移

shareMode

int

该参数预留,开发者无需关注。

shareL1Size

int

该参数预留,开发者无需关注。

shareL0CSize

int

该参数预留,开发者无需关注。

shareUbSize

int

该参数预留,开发者无需关注。

batchM

int

该参数预留,开发者无需关注。

batchN

int

该参数预留,开发者无需关注。

singleBatchM

int

该参数预留,开发者无需关注。

singleBatchN

int

该参数预留,开发者无需关注。

返回值

支持的型号

Atlas A2训练系列产品

Atlas推理系列产品AI Core

注意事项