news 2026/7/17 8:23:43

Ascend C矩阵乘法参数设置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ascend C矩阵乘法参数设置

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计算块,默认值为false
true:开启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_33:NBuffer33模板的数据搬运模式,MTE2每次搬运A矩阵的1x3个基本块,直至A矩阵所有3x3个基本块全载在L1 Buffer中 | | traverseIn | 输入 | Matmul做矩阵运算的循环迭代顺序,即一次迭代计算出[baseM, baseN]大小的C矩阵分片后,自动偏移到下一次迭代输出的C矩阵位置的偏移顺序。参数取值如下:

NOSET:0,当前无效。

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计算块,默认值为false
true:开启L1缓存UB计算块 | | scheduleType | 配置Matmul数据搬运模式。参数取值如下:
ScheduleType::INNER_PRODUCT:默认模式,在K方向上做MTE1的循环搬运
ScheduleType::OUTER_PRODUCT:在M或N方向上做MTE1的循环搬运
ScheduleType::N_BUFFER_33:NBuffer33模板的数据搬运模式,MTE2每次搬运A矩阵的1x3个基本块,直至A矩阵所有3x3个基本块全载在L1 Buffer中 | | traverse | Matmul做矩阵运算的循环迭代顺序,即一次迭代计算出[baseM, baseN]大小的C矩阵分片后,自动偏移到下一次迭代输出的C矩阵位置的偏移顺序。参数取值如下:

NOSET:0,当前无效。

FIRSTM:先往M轴方向偏移再往N轴方向偏移。

FIRSTN:先往N轴方向偏移再往M轴方向偏移。 | | enVecND2NZ | 是否开启ND2NZ |

返回值说明

约束说明

调用示例

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 8:22:45

Windows 98文件权限问题解析与解决方案

1. Windows 98文件权限问题概述在Windows 98操作系统中,用户偶尔会遇到"你没有权限在此位置保存文件"的错误提示。这个问题通常发生在尝试将文件保存到特定目录时,尤其是系统目录或网络共享位置。与后来的NT内核系统不同,Windows 9…

作者头像 李华
网站建设 2026/7/17 8:20:30

CANN/asc-devkit SIMT协作组线程数API

num_threads 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.co…

作者头像 李华
网站建设 2026/7/17 8:20:03

AI技术前沿动态简报(2026.07.15)

第1条:上海AI实验室发布 InternVLA-A1.5,用"预见令牌"让机器人预测未来状态核心内容:上海人工智能实验室物理智能团队发布具身智能系统 InternVLA-A1.5(arXiv:2607.04988,2026年7月)。该系统在训…

作者头像 李华
网站建设 2026/7/17 8:19:06

Ubuntu软件管理全攻略:从APT到Snap安装与卸载

1. Ubuntu软件管理基础认知作为Linux发行版中最受欢迎的桌面系统之一,Ubuntu的软件管理机制与Windows有着本质区别。刚接触Ubuntu的用户常会遇到这样的困惑:为什么不能直接双击exe安装?为什么卸载后还有残留文件?要理解这些差异&a…

作者头像 李华
网站建设 2026/7/17 8:19:00

CANN/asc-devkit:原子与操作API文档

asc_atomic_and 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…

作者头像 李华
网站建设 2026/7/17 8:18:58

CANN/asc-devkit原子递减操作文档

asc_atomic_dec 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…

作者头像 李华