CANN/asc-devkit SetMatmulConfigParams接口 📅 2026/7/5 19:16:54 SetMatmulConfigParams【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit功能说明在计算Tiling时用于自定义设置表1中的MatmulConfig参数。本接口中配置的参数对应的功能在Tiling与Kernel中需要保持一致所以本接口中的参数取值需要与Kernel侧对应的MatmulConfig参数值保持一致详细MatmulConfig参数请见表2。函数原型void SetMatmulConfigParams(int32_t mmConfigTypeIn 1, bool enableL1CacheUBIn false, ScheduleType scheduleTypeIn ScheduleType::INNER_PRODUCT, MatrixTraverse traverseIn MatrixTraverse::NOSET, bool enVecND2NZIn false)void SetMatmulConfigParams(const MatmulConfigParams configParams)参数说明表1参数说明| 参数名 | 输入/输出 | 描述 | | --- | --- | --- | | mmConfigTypeIn | 输入 | 设置Matmul的模板类型需要与Matmul对象创建的模板一致当前只支持配置为0或1。0代表Norm模板1代表MDL模板默认值为1 | | enableL1CacheUBIn | 输入 | 配置是否开启L1缓存UB计算块推荐开启场景MTE3和MTE2流水串行较多的场景。false不开启L1缓存UB计算块默认值为falsetrue开启L1缓存UB计算块Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持该参数。Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持该参数。Atlas 推理系列产品AI Core支持该参数。Atlas 200I/500 A2 推理产品不支持该参数。 | | scheduleTypeIn | 输入 | 配置Matmul数据搬运模式。参数取值如下ScheduleType::INNER_PRODUCT默认模式在K方向上做MTE1的循环搬运ScheduleType::OUTER_PRODUCT在M或N方向上做MTE1的循环搬运ScheduleType::N_BUFFER_33NBuffer33模板的数据搬运模式MTE2每次搬运A矩阵的1x3个基本块直至A矩阵所有3x3个基本块全载在L1 Buffer中 | | traverseIn | 输入 | Matmul做矩阵运算的循环迭代顺序即一次迭代计算出[baseM, baseN]大小的C矩阵分片后自动偏移到下一次迭代输出的C矩阵位置的偏移顺序。参数取值如下NOSET0当前无效。FIRSTM先往M轴方向偏移再往N轴方向偏移。FIRSTN先往N轴方向偏移再往M轴方向偏移。 | | enVecND2NZIn | 输入 | 是否开启ND2NZ。 | | configParams | 输入 | config相关参数类型为MatmulConfigParams结构体具体定义如下方代码所示。其中的参数说明请参考表2。 |struct MatmulConfigParams { int32_t mmConfigType; bool enableL1CacheUB; ScheduleType scheduleType; MatrixTraverse traverse; bool enVecND2NZ; MatmulConfigParams( int32_t mmConfigTypeIn 1, bool enableL1CacheUBIn false, ScheduleType scheduleTypeIn ScheduleType::INNER_PRODUCT, MatrixTraverse traverseIn MatrixTraverse::NOSET, bool enVecND2NZIn false) { mmConfigType mmConfigTypeIn; enableL1CacheUB enableL1CacheUBIn; scheduleType scheduleTypeIn; traverse traverseIn; enVecND2NZ enVecND2NZIn; } };表2MatmulConfigParams结构体内参数说明| 参数名称 | 含义 | | --- | --- | | mmConfigType | 设置Matmul的模板类型需要与Matmul对象创建的模板一致当前只支持配置为0或1。0代表Norm模板1代表MDL模板默认值为1 | | enableL1CacheUB | 配置是否开启L1缓存UB计算块推荐开启场景MTE3和MTE2流水串行较多的场景。false不开启L1缓存UB计算块默认值为falsetrue开启L1缓存UB计算块 | | scheduleType | 配置Matmul数据搬运模式。参数取值如下ScheduleType::INNER_PRODUCT默认模式在K方向上做MTE1的循环搬运ScheduleType::OUTER_PRODUCT在M或N方向上做MTE1的循环搬运ScheduleType::N_BUFFER_33NBuffer33模板的数据搬运模式MTE2每次搬运A矩阵的1x3个基本块直至A矩阵所有3x3个基本块全载在L1 Buffer中 | | traverse | Matmul做矩阵运算的循环迭代顺序即一次迭代计算出[baseM, baseN]大小的C矩阵分片后自动偏移到下一次迭代输出的C矩阵位置的偏移顺序。参数取值如下NOSET0当前无效。FIRSTM先往M轴方向偏移再往N轴方向偏移。FIRSTN先往N轴方向偏移再往M轴方向偏移。 | | enVecND2NZ | 是否开启ND2NZ |返回值说明无约束说明本接口必须在GetTiling接口前调用。若Matmul对象使用NBuffer33模板策略即MatmulPolicy为NBuffer33MatmulPolicy则在调用GetTiling接口生成Tiling参数前必须通过本接口将scheduleTypeIn参数设置为ScheduleType::N_BUFFER_33以启用NBuffer33模板策略的Tiling生成逻辑。调用示例auto ascendcPlatform platform_ascendc::PlatformAscendC(context-GetPlatformInfo()); matmul_tiling::MatmulApiTiling tiling(ascendcPlatform); tiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); tiling.SetBType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT16); tiling.SetCType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT); tiling.SetBiasType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_FLOAT); tiling.SetShape(1024, 1024, 1024); tiling.SetOrgShape(1024, 1024, 1024); tiling.SetBias(true); tiling.SetBufferSpace(-1, -1, -1); tiling.SetMatmulConfigParams(0); // 额外设置 // matmul_tiling::MatmulConfigParams configParams // {1, false, matmul_tiling::ScheduleType::OUTER_PRODUCT, matmul_tiling::MatrixTraverse::FIRSTM}; // tiling.SetMatmulConfigParams(configParams); optiling::TCubeTiling tilingData; int ret tiling.GetTiling(tilingData);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考