当前位置: 首页 > news >正文

CANN/Ascend C矩阵乘法Tiling参数获取接口

GetMatmulApiTiling

【免费下载链接】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 推理产品

x

Atlas 推理系列产品 AI Core

x

Atlas 推理系列产品 Vector Core

x

Atlas 训练系列产品

x

Kirin X90

功能说明

本接口用于在编译期间获取常量化的Matmul Tiling参数。

Matmul Tiling常量化功能为在编译期期间获取常量化的Matmul Tiling参数并进行算子编译,从而减少Scalar计算开销,提升算子整体性能。具体为,在获取Matmul模板时,可以确定MatmulConfig的singleCore Shape(MatmulConfig中的singleCoreM/singleCoreN/singleCoreK)和Base Shape(MatmulConfig中的basicM/basicN/basicK)参数,或者只确定Base Shape参数;通过指定获取模板的接口中的singleCore Shape和Base Shape参数,或者只指定Base Shape参数,获取自定义模板;然后调用本接口,得到常量化的Matmul Tiling参数。

当在调用获取MatmulConfig模板的接口时,只将(baseM, baseN, baseK)设置为常数值时,称为部分常量化,此时(singleCoreM, singleCoreN, singleCoreK)都保持默认值0,部分常量化场景在Kernel侧使用REGIST_MATMUL_OBJ初始化Matmul对象时,仍需要使用Tiling;将(baseM, baseN, baseK, singleCoreM, singleCoreN, singleCoreK)都设置为常数值时,称为全量常量化,这时可以在REGIST_MATMUL_OBJ的入参传递Tiling参数的位置,使用空指针替代。

经过上述部分常量化或全部常量化后,将得到带有常量化参数的MatmulConfig模板,然后使用本接口将Tiling参数常量化。本接口的返回值包含常量化的Matmul Tiling参数和MatmulConfig模板。

函数原型

template<class A_TYPE, class B_TYPE, class C_TYPE, class BIAS_TYPE> __aicore__ constexpr MatmulApiStaticTiling GetMatmulApiTiling(const MatmulConfig& mmCFG, int32_t l1Size = Impl::L1_SIZE)

参数说明

表 1模板参数说明

参数名

描述

A_TYPE

A矩阵类型信息,通过MatmulType来定义。

B_TYPE

B矩阵类型信息,通过MatmulType来定义。

C_TYPE

C矩阵类型信息,通过MatmulType来定义。

BIAS_TYPE

BIAS矩阵类型信息,通过MatmulType来定义。

表 2参数说明

参数名

输入/输出

描述

mmCFG

输入

获取的MatmulConfig模板。

对于Ascend 950PR/Ascend 950DT,支持常量化的为全部模板:Norm, IBShare, MDL模板。

对于Atlas A3 训练系列产品 / Atlas A3 推理系列产品,支持常量化的模板有:Norm, MDL模板。

对于Atlas A2 训练系列产品 / Atlas A2 推理系列产品,支持常量化的模板有:Norm, MDL模板。

对于Kirin X90,支持常量化的模板有:Norm, MDL模板。

l1Size

输入

可用的L1大小,默认值L1_SIZE。

返回值说明

MatmulApiStaticTiling

约束说明

  • 入参mmCFG,在调用获取MatmulConfig模板的接口获取时,需要使用常数值指定(baseM, baseN, baseK)或者指定(baseM, baseN, baseK, singleCoreM, singleCoreN, singleCoreK),并且指定的参数值需要和Tiling计算的值保持一致。
  • Batch Matmul场景支持全量常量化,但不支持使用空指针替代REGIST_MATMUL_OBJ的入参Tiling。

调用示例

//定义Matmul对象 typedef AscendC::MatmulType<AscendC::TPosition::GM, CubeFormat::ND, half> aType; typedef AscendC::MatmulType<AscendC::TPosition::GM, CubeFormat::ND, half> bType; typedef AscendC::MatmulType<AscendC::TPosition::GM, CubeFormat::ND, float> cType; typedef AscendC::MatmulType<AscendC::TPosition::GM, CubeFormat::ND, float> biasType; // 这里CFG使用GetNormalConfig接口获取,并指定已知的singleshape信息和baseM,baseN,baseK,指定的数值跟运行时tiling保持一致 constexpr auto staticTiling = GetMatmulApiTiling<aType, bType, cType, biasType>(CFG, 524288); // 该示例L1 Buffer可用大小为512KB AscendC::Matmul<aType, bType, cType, biasType, staticTiling > mm;

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

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/2478373.html

相关文章:

  • 深入解析设备树二进制(DTB)格式:从内核启动到驱动绑定的底层原理
  • 3个关键决策:为什么顶级技术团队选择Arco Design Pro构建企业级应用
  • AI Cover技术深度解析:从OpenAI到AWS S3的完整架构实现
  • 告别Eclipse插件!在Maven项目中用antlr4-maven-plugin自动生成解析器代码(附完整pom.xml配置)
  • 基于容器化技术构建安全高效的Linux在线调试环境方案
  • FreeRTOS互斥锁的‘坑’与‘宝’:优先级翻转那些事儿,用ESP32实测给你看
  • 2026年大厂Java面试高频场景题 + 八股文(万字干货,纯手工硬核整理)
  • 如何快速掌握FunASR后端解码:从声学特征到文本的完整指南
  • Qlib量化投资平台:用AI技术打造智能金融分析系统的终极指南
  • 碧蓝航线Alas脚本:告别肝帝生活,让游戏自动化的终极指南
  • Linux内核启动耗时测量:从日志时间戳到硬件计数器的五种实战方法
  • WikiSQL与关系数据库的完美结合:实现自然语言接口的终极方案
  • 如何利用MaxBot自动化抢票系统高效获取热门活动门票:技术实现与实战指南
  • STM32按键消抖与状态机编程:从硬件抖动到软件架构的实战指南
  • 终极开源神器:BilibiliDown实现B站视频智能批量下载的高效解决方案
  • 手把手教你用UiAutomator2和Weditor搞定Android App元素定位与调试(Python实战)
  • 使用TaoToken快速配置ClaudeCode解决API密钥被封与Token不足问题
  • 2026年阿里云OpenClaw/Hermes Agent配置Token Plan安装详细步骤
  • Symfony String组件:PHP字符串处理的终极解决方案
  • 基于Petalinux的Xilinx FPGA Linux系统快速移植与开发实战
  • 【DeepSeek SSO单点登录落地实战】:20年架构师亲授5大避坑指南与企业级部署Checklist
  • 【Perplexity历史资料搜索终极指南】:20年资深专家亲授3大冷门技巧,90%用户从未用过的隐藏功能
  • 安达发|aps软件系统:塑料薄膜业数字化升级,破生产管理难题
  • Linux终端快捷键全解析:从基础操作到高效工作流
  • C语言内联函数:性能优化的关键技术与实战应用
  • MaterialSkin 2.0终极指南:3步解锁现代化WinForms界面设计
  • 三步搞定B站资源下载:BiliTools跨平台工具箱完全指南
  • Python初学者项目练习28--移除列表中的多个元素
  • Java工业视觉全栈实战:DJL部署YOLOv12+JavaCV实时采集+7x24h生产级稳定性方案
  • Linux服务器无GUI?试试用LibreOffice命令行批量把Word转PDF,效率翻倍!