
GetSpecialMDLConfig【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品 / Atlas A3 推理系列产品√Atlas A2 训练系列产品 / Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品xAtlas 推理系列产品 AI CorexAtlas 推理系列产品 Vector CorexAtlas 训练系列产品xKirin X90√Kirin 9030x功能说明用于配置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接口参数说明参数名输入/输出描述intrinsicsLimit输入用于设置参数intrinsicsCheck。当左矩阵或右矩阵在单核上内轴即尾轴大于等于65535元素个数时是否使能循环执行数据从Global Memory到L1 Buffer的搬入。例如左矩阵A[M, K]单核上的内轴数据singleCoreK大于65535配置该参数为true后API内部通过循环执行数据的搬入。参数取值如下false当左矩阵或右矩阵在单核上内轴大于等于65535时不使能循环执行数据的搬入默认值。true当左矩阵或右矩阵在单核上内轴大于等于65535时使能循环执行数据的搬入。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持此参数。batchLoop输入用于设置参数isNBatch。是否多Batch输入多Batch输出。仅对BatchMatmul有效使能该参数后仅支持Norm模板且需调用IterateNBatch实现多Batch输入多Batch输出。参数取值如下false不使能多Batch默认值。true使能多Batch。doMTE2Preload输入用于设置参数doMTE2Preload。在MTE2流水间隙较大且M/N数值较大时可通过该参数开启对应M/N方向的预加载功能开启后能减小MTE2间隙提升性能。预加载功能仅在MDL模板有效不支持SpecialMDL模板。参数取值如下0不开启默认值。1开启M方向preload。2开启N方向preload。注意开启M/N方向的预加载功能时需保证K全载且M/N方向开启DoubleBuffer其中M方向的K全载条件为singleCoreK/baseK stepKaN方向的K全载条件为singleCoreK/baseK stepKb。isVecND2NZ输入预留参数保持默认值false即可。isPerTensor输入用于设置参数isPerTensor。A矩阵half类型输入且B矩阵int8_t类型输入场景使能B矩阵量化时是否为per tensor。trueper tensor量化。falseper channel量化。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持此参数。hasAntiQuantOffset输入用于设置参数hasAntiQuantOffset。A矩阵half类型输入且B矩阵int8_t类型输入场景使能B矩阵量化时是否使用offset系数。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持此参数。返回值说明MatmulConfig结构体。约束说明无调用示例// 配置SpecialMDL模板的参数获取自定义SpecialMDL模板 constexpr MatmulConfig MM_CFG GetSpecialMDLConfig( /* intrinsicsLimit */ false, /* batchLoop */ false, /* doMTE2Preload */ 0, /* isVecND2NZ */ false, /* isPerTensor */ false, /* hasAntiQuantOffset */ false ); // 常规Matmul计算最后输出使用自定义SpecialMDL模板的计算结果 AscendC::MatmulA_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); if (tiling.isBias) { mm.SetBias(gmBias); } mm.IterateAll(gm_c); mm.End();【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考