背景介绍

CATLASS(CANN Templates for Linear Algebra Subroutines,昇腾算子模板库)通过模板封装降低了昇腾 NPU 上矩阵乘法类算子开发难度,但作为进阶算子编程组件,仍需开发者掌握一定的矩阵计算原理。为解决这一难题,现构建了一套完整的 CATLASS Skills 技能体系,通过标准化的工作流程,帮助开发者快速交付高质量、高性能的矩阵乘法类算子实现。

Skills 支持的算子类别

算子类别概览

目前,CATLASS Skills 已支持多种矩阵算子的开发,包括基础矩阵乘法、融合算子和量化算子三大类别,生成算子的性能可达原生接口的 0.8~1.2 倍。这些算子是深度学习模型的核心计算组成部分,其性能直接影响模型的训练和推理效率。

基础矩阵乘法

  • Matmul:通用矩阵乘法(支持 FP16、BF16、FP32、INT8 等数据类型)。
  • Grouped Matmul:分组矩阵乘法(支持 Slice M、Slice K 切分策略)。

融合算子

  • Matmul + Bias:矩阵乘法与融合偏置。
  • Matmul + Add:矩阵乘法与融合加法。
  • Matmul + ReLU/GELU/Swish:矩阵乘法与融合激活函数。

量化算子

  • Quant Matmul:量化矩阵乘法。
  • Grouped Matmul + Per-Token Dequant:分组矩阵乘法与融合 Per-Token 反量化。

Skills 架构设计

整体架构

CATLASS Skills 采用模块化设计,将算子开发流程分解为 7 个独立的技能模块。每个模块专注于特定的开发阶段,既可独立使用,也可以通过 catlass-operator-dev skill 串联成完整的开发流程。

在这里插入图片描述

各阶段 Skills 功能详解

阶段 1:工程建立(ascendc-operator-project-init)

核心功能:自动初始化算子工程模板。

阶段 2:算子设计(catlass-operator-design)

核心功能:分析需求,生成包含数学公式、组件选型表格等完整设计文档。

阶段 3:代码生成(catlass-operator-code-gen)

核心功能:根据设计文档自动生成算子工程代码,包含 host、kernel、torch 接入源码。

阶段 4:编译调试(ascendc-operator-compile-debug)

核心功能:自动化编译、安装、运行测试,同时解决过程中遇到的问题。

阶段 5:文档生成(ascendc-operator-doc-gen,可选)

核心功能:自动生成算子相关文档,包含产品支持情况、功能说明、计算公式、参数说明和调用示例。

阶段 6:精度验证(ascendc-operator-precision-eval)

核心功能:与参考实现进行精度比对,输出精度验证报告。

阶段 7:性能优化(catlass-operator-performance-optim,可选)

核心功能:根据用户需求,自动化性能调优,并输出性能测试报告。

当前支持的优化策略

  • TileShape 配置:L1/L0 层大小优化
  • DispatchPolicy 调度策略:MmadAtlasA2Pingpong、MmadAtlasA2Preload 等
  • Swizzle 数据搬运策略:优化数据访问模式

Matmul 算子开发实战案例

案例背景

矩阵乘法(Matmul)是深度学习中最核心的计算操作之一,广泛应用于全连接层、注意力机制、卷积运算等场景。本案例展示如何运用 CATLASS Skills,实现 Matmul 算子从设计到部署的全流程开发。

开发流程概览

访问代码仓地址:https://gitcode.com/Ascend/agent-skills,下载源码仓,随后基于 Agent 输入对应提示词,即可全自动完成算子开发。

下面以 Cursor + GLM-5 为例进行功能演示。

关键阶段详解

阶段 1:需求收集、工程建立

用户输入:

在这里插入图片描述

Agent 开始确认算子名称、功能要点、CANN 环境、创建工程并拉取三方组件。

在这里插入图片描述

阶段 2:算子设计

Agent 自动调用 catlass-operator-design 技能生成设计文档。

在这里插入图片描述

阶段 3:代码生成

Agent 自动调用 catlass-operator-code-gen 技能进行代码生成。

生成的 host 代码:

在这里插入图片描述

生成的 kernel 代码:

在这里插入图片描述

阶段 4:编译调试

Agent 自动调用 ascendc-operator-compile-debug 技能进行编译调试。

Agent 发现代码中的问题并自动修复:

在这里插入图片描述

阶段 5:文档生成

Agent 自动调用 ascendc-operator-doc-gen 技能生成接口的使用文档。

在这里插入图片描述

阶段 6:精度验证

Agent 自动调用 ascendc-operator-precision-eval 技能进行精度测试。

生成 pytest 测试脚本:

在这里插入图片描述

基于 pytest 测试脚本扩展用例,进行泛化性的测试并输出精度报告。

在这里插入图片描述

阶段 7:性能优化

用户可描述所需性能优化的 Case。

在这里插入图片描述

Agent 自动根据 catlass-operator-performance-optim skill 指令和 CATLASS 库上文档思考如何优化该类型的 Case。

在这里插入图片描述

Agent 通过修改 tiling 参数完成性能优化并测试性能数据,输出性能优化总结。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

案例总结

通过使用 CATLASS Skills,Matmul 算子开发实现了以下目标:

指标 目标 实际情况 状态
精度验证 通过 100% 通过 ✅ 完成
代码质量 优秀 优秀 ✅ 完成
文档完整性 完整 完整 ✅ 完成
开发效率 高效 1 小时完成 ✅ 完成

同时提升了开发效率,传统方式需要 3-5 天完成的矩阵算子开发,使用 CATLASS Skills 后缩短至 1 小时,且代码质量有保障。

总结与展望

CATLASS Skills 通过模块化的技能体系,将昇腾 NPU 上 CATLASS 算子开发的最佳实践固化为一套可复用的工作流程。从需求收集到性能优化,每个阶段都设有明确的输入输出、详细的参考文档和标准化的质量检查。

目前,CATLASS Skills 的支持度可以满足大部分矩阵算子的开发需求,未来,将持续扩展支持 Flash Attention、MLA 等复杂算子。CATLASS Skills 不仅是一套工具,更体现了标准化、自动化、高质量的开发理念。随着这套技能体系的不断完善,将有更多的开发者加入到昇腾 NPU 矩阵算子开发的行列中来,共同推动 AI 生态的繁荣发展。

开源代码仓地址:https://gitcode.com/Ascend/agent-skills

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐