一天一个昇腾Skill小技巧:1小时完成CATLASS融合算子开发 ypxx.net

(来源:华为计算)

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生态的繁荣发展。

开源代码仓地址: