Init

功能说明

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

函数原型

__aicore__ inline void Init(TCubeTiling* cubeTiling);

参数说明

表1 接口参数说明

参数名

输入/输出

描述

cubeTiling

输入

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

表2 TCubeTiling结构说明

参数名称

数据类型

说明

usedCoreNum

int

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

M, N, K

int

A、B、C矩阵原始输入的大小维度,无大小限制。

注意:若A矩阵以NZ格式输入,则M需要以16个数对齐,K需要以C0_size对齐;若B矩阵以NZ格式输入,则K需要以C0_size对齐,N需要以16个数对齐。

half数据类型输入,C0_size为16;float数据类型输入,C0_size为8。

singleCoreM, singleCoreN, singleCoreK

int

A、B、C矩阵单核内维度。

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数据类型输入,C0_size为16,fractal_num为1;float数据类型输入,C0_size为8,fractal_num为2。

baseM, baseN, baseK

int

A、B、C矩阵参与一次矩阵乘指令的维度。

  • 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为左矩阵在A1中缓存的bufferN方向上baseN的倍数。

取值大于0。

A1Length

int

参与一次矩阵计算的左矩阵数据量大小:baseM * baseK * sizeof(Input_dtype)

B1Length

int

参与一次矩阵计算的右矩阵数据量大小:baseK * baseN * sizeof(Input_dtype)

C01Length

int

参与一次矩阵计算的结果矩阵数据量大小:baseM * baseN * sizeof(Output_dtype)

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

0表示为aic:aiv为1:1模式,1表示为aic:aiv为1:2模式。

shareL1Size

int

matmul计算时所使用的L1 Buffer大小。

大于0小于AI处理器对应的buffer大小。

shareL0CSize

int

matmul计算时所使用的L0C Buffer大小。

大于0小于AI处理器对应的buffer大小。

shareUbSize

int

matmul计算时所使用的Unified Buffer大小。

大于0小于AI处理器对应的buffer大小。

batchM

int

该参数预留,设置为1即可。

batchN

int

该参数预留,设置为1即可。

singleBatchM

int

该参数预留,设置为1即可。

singleBatchN

int

该参数预留,设置为1即可。

返回值

支持的处理器型号

Atlas A2训练系列产品

注意事项