初始化Matmul对象,传入tiling参数,tiling参数的具体介绍请参考Matmul Tiling API。
__aicore__ inline void Init(TCubeTiling* cubeTiling);
参数名 |
输入/输出 |
描述 |
---|---|---|
cubeTiling |
输入 |
Matmul tiling参数,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矩阵参与一次矩阵乘指令的维度。
需要按分形对齐。 |
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表示自动偏移的顺序。
|
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训练系列产品
无