GetMDLConfig【免费下载链接】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 推理产品不支持Atlas 推理系列产品AI Core支持Atlas 推理系列产品Vector Core不支持Atlas 训练系列产品不支持Kirin X90支持Kirin 9030不支持功能说明用于配置MDL模板的参数获取自定义MDL模板。MDL模板的介绍请参考表模板特性。函数原型__aicore__ constexpr MatmulConfig GetMDLConfig(const bool intrinsicsLimit false, const bool batchLoop false, const uint32_t doMTE2Preload 0, const bool isVecND2NZ false, bool isPerTensor false, bool hasAntiQuantOffset false, const bool enUnitFlag false, const bool isMsgReuse true, const bool enableUBReuse true, const bool enableL1CacheUB false, const bool enableMixDualMaster false, const bool enableKdimReorderLoad 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有效开启多Batch后仅支持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输入用于设置参数enVecND2NZ。开启通过vector指令进行ND2NZ。开启时需要设置SetLocalWorkspace。参数取值如下false不开启通过vector指令进行ND2NZ默认值。true开启通过vector指令进行ND2NZ。针对Atlas 推理系列产品AI Core在Unified Buffer空间足够的条件下Unified Buffer空间大于2倍TCubeTiling的transLength参数建议优先开启搬运性能更好。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持此参数。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场景不支持此参数。enUnitFlag输入用于设置参数enUnitFlag。开启UnitFlag功能使计算与搬运流水并行提高性能。Norm, IBShare下默认开启MDL下默认不开启。参数取值如下false不开启UnitFlag功能。true开启UnitFlag功能。注意对于Ascend 950PR/Ascend 950DT的MxMatmul场景仅在NORM/MDL模板、A和scaleA不转置、 B和scaleB转置、C为ND格式输出到GM场景下开启UnitFlag功能有性能收益。isMsgReuse输入用于设置参数enableReuse。SetSelfDefineData函数设置的回调函数中的dataPtr是否直接传递计算数据。若未调用SetSelfDefineData设置dataPtr该参数仅支持默认值true。参数取值如下true直接传递计算数据仅限单个值。false传递GM上存储的数据地址信息。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持该参数。enableUBReuse输入用于设置参数enableUBReuse。是否开启Unified Buffer复用。在Unified Buffer空间足够的条件下Unified Buffer空间大于4倍TCubeTiling的transLength参数设置开启Unified Buffer复用后Unified Buffer空间分为互不重叠的两份分别存储Matmul计算相邻前后两轮迭代的数据后一轮迭代数据的搬入将不必等待前一轮迭代的Unified Buffer空间释放从而优化流水。参数取值如下true开启Unified Buffer复用。false不开启Unified Buffer复用。包括MxMatmul场景Ascend 950PR/Ascend 950DT不支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持该参数。Atlas 推理系列产品AI Core支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90不支持此参数。enableL1CacheUB输入用于设置参数enableL1CacheUB 。是否开启L1 Buffer缓存Unified Buffer计算块。建议在MTE3和MTE2流水串行较多的场景使用。参数取值如下true开启L1 Buffer缓存Unified Buffer计算块。false不开启L1 Buffer缓存Unified Buffer计算块。若要开启L1 Buffer缓存Unified Buffer计算块必须在Tiling实现中调用SetMatmulConfigParams接口将参数enableL1CacheUBIn设置为true。包括MxMatmul场景Ascend 950PR/Ascend 950DT不支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持该参数。Atlas 推理系列产品AI Core支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90不支持此参数。enableMixDualMaster输入用于设置参数enableMixDualMaster。是否开启MixDualMaster双主模式。区别于MIX模式包含矩阵计算和矢量计算通过消息机制驱动AIC运行双主模式为AIC和AIV独立运行代码不依赖消息驱动用于提升性能。该参数默认值为false仅能在以下场景设置为true核函数的类型为MIX同时AIC核数 : AIV核数为1:1。核函数的类型为MIX同时AIC核数 : AIV核数为1:2且A矩阵和B矩阵同时开启IBSHARE参数。注意开启MixDualMaster场景需要满足同一算子中所有Matmul对象的该参数取值必须保持一致。A/B/Bias矩阵只支持从GM搬入。获取矩阵计算结果只支持调用IterateAll接口输出到GlobalTensor或者LocalTensor即计算结果放置于Global Memory或者Local Memory的地址不能调用GetTensorC等接口获取结果。除MxMatmul场景外Ascend 950PR/Ascend 950DT支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持该参数。Atlas 推理系列产品AI Core不支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90不支持此参数。enableKdimReorderLoad输入用于设置参数enableKdimReorderLoad。是否开启K轴错峰加载数据。基于相同Tiling参数执行Matmul计算时如果多核的左矩阵或者右矩阵相同且存储于Global Memory多个核一般会同时访问相同地址以加载矩阵数据引发同地址访问冲突影响性能。开启K轴错峰加载数据后多核执行Matmul时将尽量在相同时间访问矩阵的不同Global Memory地址减少地址访问冲突概率提升性能。该参数功能只支持MDL模板建议K轴较大且左矩阵和右矩阵均非全载场景开启该功能。参数取值如下。false默认值关闭K轴错峰加载数据的功能。true开启K轴错峰加载数据的功能。除MxMatmul场景外Ascend 950PR/Ascend 950DT支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持该参数。Atlas 推理系列产品AI Core不支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90支持此参数。返回值说明MatmulConfig结构体。约束说明无调用示例// 配置MDL模板的参数获取自定义MDL模板 constexpr MatmulConfig MM_CFG GetMDLConfig( /* intrinsicsLimit */ false, /* batchLoop */ false, /* doMTE2Preload */ 0, /* isVecND2NZ */ false, /* isPerTensor */ false, /* hasAntiQuantOffset */ false, /* enUnitFlag */ false, /* isMsgReuse */ true, /* enableUBReuse */ true, /* enableL1CacheUB */ false, /* enableMixDualMaster */ false, /* enableKdimReorderLoad*/ false); // 常规Matmul计算最后输出使用自定义MDL模板的计算结果 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),仅供参考
cann/asc-devkit GetMDLConfig接口
发布时间:2026/7/17 18:40:00
GetMDLConfig【免费下载链接】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 推理产品不支持Atlas 推理系列产品AI Core支持Atlas 推理系列产品Vector Core不支持Atlas 训练系列产品不支持Kirin X90支持Kirin 9030不支持功能说明用于配置MDL模板的参数获取自定义MDL模板。MDL模板的介绍请参考表模板特性。函数原型__aicore__ constexpr MatmulConfig GetMDLConfig(const bool intrinsicsLimit false, const bool batchLoop false, const uint32_t doMTE2Preload 0, const bool isVecND2NZ false, bool isPerTensor false, bool hasAntiQuantOffset false, const bool enUnitFlag false, const bool isMsgReuse true, const bool enableUBReuse true, const bool enableL1CacheUB false, const bool enableMixDualMaster false, const bool enableKdimReorderLoad 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有效开启多Batch后仅支持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输入用于设置参数enVecND2NZ。开启通过vector指令进行ND2NZ。开启时需要设置SetLocalWorkspace。参数取值如下false不开启通过vector指令进行ND2NZ默认值。true开启通过vector指令进行ND2NZ。针对Atlas 推理系列产品AI Core在Unified Buffer空间足够的条件下Unified Buffer空间大于2倍TCubeTiling的transLength参数建议优先开启搬运性能更好。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持此参数。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场景不支持此参数。enUnitFlag输入用于设置参数enUnitFlag。开启UnitFlag功能使计算与搬运流水并行提高性能。Norm, IBShare下默认开启MDL下默认不开启。参数取值如下false不开启UnitFlag功能。true开启UnitFlag功能。注意对于Ascend 950PR/Ascend 950DT的MxMatmul场景仅在NORM/MDL模板、A和scaleA不转置、 B和scaleB转置、C为ND格式输出到GM场景下开启UnitFlag功能有性能收益。isMsgReuse输入用于设置参数enableReuse。SetSelfDefineData函数设置的回调函数中的dataPtr是否直接传递计算数据。若未调用SetSelfDefineData设置dataPtr该参数仅支持默认值true。参数取值如下true直接传递计算数据仅限单个值。false传递GM上存储的数据地址信息。对于Ascend 950PR/Ascend 950DTMxMatmul场景不支持该参数。enableUBReuse输入用于设置参数enableUBReuse。是否开启Unified Buffer复用。在Unified Buffer空间足够的条件下Unified Buffer空间大于4倍TCubeTiling的transLength参数设置开启Unified Buffer复用后Unified Buffer空间分为互不重叠的两份分别存储Matmul计算相邻前后两轮迭代的数据后一轮迭代数据的搬入将不必等待前一轮迭代的Unified Buffer空间释放从而优化流水。参数取值如下true开启Unified Buffer复用。false不开启Unified Buffer复用。包括MxMatmul场景Ascend 950PR/Ascend 950DT不支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持该参数。Atlas 推理系列产品AI Core支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90不支持此参数。enableL1CacheUB输入用于设置参数enableL1CacheUB 。是否开启L1 Buffer缓存Unified Buffer计算块。建议在MTE3和MTE2流水串行较多的场景使用。参数取值如下true开启L1 Buffer缓存Unified Buffer计算块。false不开启L1 Buffer缓存Unified Buffer计算块。若要开启L1 Buffer缓存Unified Buffer计算块必须在Tiling实现中调用SetMatmulConfigParams接口将参数enableL1CacheUBIn设置为true。包括MxMatmul场景Ascend 950PR/Ascend 950DT不支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持该参数。Atlas 推理系列产品AI Core支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90不支持此参数。enableMixDualMaster输入用于设置参数enableMixDualMaster。是否开启MixDualMaster双主模式。区别于MIX模式包含矩阵计算和矢量计算通过消息机制驱动AIC运行双主模式为AIC和AIV独立运行代码不依赖消息驱动用于提升性能。该参数默认值为false仅能在以下场景设置为true核函数的类型为MIX同时AIC核数 : AIV核数为1:1。核函数的类型为MIX同时AIC核数 : AIV核数为1:2且A矩阵和B矩阵同时开启IBSHARE参数。注意开启MixDualMaster场景需要满足同一算子中所有Matmul对象的该参数取值必须保持一致。A/B/Bias矩阵只支持从GM搬入。获取矩阵计算结果只支持调用IterateAll接口输出到GlobalTensor或者LocalTensor即计算结果放置于Global Memory或者Local Memory的地址不能调用GetTensorC等接口获取结果。除MxMatmul场景外Ascend 950PR/Ascend 950DT支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持该参数。Atlas 推理系列产品AI Core不支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90不支持此参数。enableKdimReorderLoad输入用于设置参数enableKdimReorderLoad。是否开启K轴错峰加载数据。基于相同Tiling参数执行Matmul计算时如果多核的左矩阵或者右矩阵相同且存储于Global Memory多个核一般会同时访问相同地址以加载矩阵数据引发同地址访问冲突影响性能。开启K轴错峰加载数据后多核执行Matmul时将尽量在相同时间访问矩阵的不同Global Memory地址减少地址访问冲突概率提升性能。该参数功能只支持MDL模板建议K轴较大且左矩阵和右矩阵均非全载场景开启该功能。参数取值如下。false默认值关闭K轴错峰加载数据的功能。true开启K轴错峰加载数据的功能。除MxMatmul场景外Ascend 950PR/Ascend 950DT支持该参数。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持该参数。Atlas 推理系列产品AI Core不支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。Kirin X90支持此参数。返回值说明MatmulConfig结构体。约束说明无调用示例// 配置MDL模板的参数获取自定义MDL模板 constexpr MatmulConfig MM_CFG GetMDLConfig( /* intrinsicsLimit */ false, /* batchLoop */ false, /* doMTE2Preload */ 0, /* isVecND2NZ */ false, /* isPerTensor */ false, /* hasAntiQuantOffset */ false, /* enUnitFlag */ false, /* isMsgReuse */ true, /* enableUBReuse */ true, /* enableL1CacheUB */ false, /* enableMixDualMaster */ false, /* enableKdimReorderLoad*/ false); // 常规Matmul计算最后输出使用自定义MDL模板的计算结果 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),仅供参考