GetSpecialMDLConfig
产品支持情况
功能说明
用于配置SpecialMDL模板的参数,获取自定义SpecialMDL模板。SpecialMDL模板的介绍请参考表 模板特性。
函数原型
__aicore__ constexpr MatmulConfig GetSpecialMDLConfig(const bool intrinsicsLimit = false, const bool batchLoop = false, const uint32_t doMTE2Preload = 0, const bool isVecND2NZ = false, bool isPerTensor = false, bool hasAntiQuantOffset = false)
参数说明
本接口的所有参数用于设置MatmulConfig结构体中的参数,其中互相对应的参数的功能作用相同。
表 1 接口参数说明
|
当左矩阵或右矩阵在单核上内轴(即尾轴)大于等于65535(元素个数)时,是否使能循环执行数据从Global Memory到L1 Buffer的搬入。例如,左矩阵A[M, K],单核上的内轴数据singleCoreK大于65535,配置该参数为true后,API内部通过循环执行数据的搬入。参数取值如下: |
||
|
是否多Batch输入多Batch输出。仅对BatchMatmul有效,使能该参数后,仅支持Norm模板,且需调用IterateNBatch实现多Batch输入多Batch输出。参数取值如下: |
||
|
在MTE2流水间隙较大,且M/N数值较大时可通过该参数开启对应M/N方向的预加载功能,开启后能减小MTE2间隙,提升性能。预加载功能仅在MDL模板有效(不支持SpecialMDL模板)。参数取值如下: 注意:开启M/N方向的预加载功能时需保证K全载且M/N方向开启DoubleBuffer;其中,M方向的K全载条件为:singleCoreK/baseK <= stepKa;N方向的K全载条件为:singleCoreK/baseK <= stepKb。 |
||
|
A矩阵half类型输入且B矩阵int8_t类型输入场景,使能B矩阵量化时是否为per tensor。 |
||
返回值说明
约束说明
无
调用示例
constexpr MatmulConfig MM_CFG = GetSpecialMDLConfig();
AscendC::Matmul<A_TYPE, B_TYPE, C_TYPE, BIAS_TYPE, MM_CFG> mm;
REGIST_MATMUL_OBJ(&pipe, GetSysWorkSpacePtr(), mm, &tiling);
mm.SetTensorA(gm_a);
mm.SetTensorB(gm_b);
mm.SetBias(gm_bias);
mm.IterateAll(gm_c);