写过融合算子的开发者大概都遇到过这样的时刻:一个 shape 刚跑通,换成其他规格,精度验证又失败了;减少一次数据搬运,实测性能反而下降;单融合 kernel 性能验证结果符合预期,但接入整模型后,融合算子性能收益被调度及同步开销抵消。

融合算子的开发需要同时处理数学语义、内存布局、低精度误差、多核同步与硬件资源约束。分块大小调整后,片上空间可能不足;计算顺序改变后,误差可能累积。开发者还需要维护 Golden、测试用例与性能基线,反复确认每次修改解决了什么问题、又影响了哪些规格。

融合算子的数学语义、内存布局、低精度、多核同步、资源与真实调用性能相互影响

CANNBot 的 PyPTO Tensor Agent 与 PyPTO Pro Agent 把这些工作组织成可持续推进、检查与复验的开发流程。

开发者可以从同一段需求开始:

请编写并优化 softmax 算子,输入 float16,shape=[4, 2048],沿最后一维计算。准备独立的 Golden,在目标 NPU 上验证精度;基线与性能目标,完成调优与回归;保存源码、测试报告、生成耗时与 Token消耗。开始前先明确输入范围与验收标准。

选择 Tensor 或 Pro 后,进入对应 Agent 并说明开发路径即可。下图将 Agent 的开发流程概括为四个阶段,实际执行仍由各 Agent 的状态机驱动。

从同一段 Prompt 经两个 Agent 入口进入开发、验证和优化流程,产物保存到 custom/op

第一步是理解需求。Agent 梳理公式、接口、Shape、Dtype 以及精度与性能目标,并检查 API 可行性。 Tiling、广播规则与缓存写入等语义必须先对齐,否则即使代码编译通过,计算结果也可能与需求不符。

第二步是准备 Golden 与测试环境。参考实现要独立编写并通过自检,测试需覆盖边界输入,设备与依赖也需确认可用。设计与接口检查通过后,再进入编码。先确定验证标准与运行环境,后续结果才有可靠依据。

第三步是编写代码并测试。代码需要经过编译、上机运行与独立的精度对照,发现问题就定位、修复并重新验证。Agent 把设计审查、实现与验证内循环、最终验收分为不同职责;最终交付的结果必须符合预期的精度标准。

第四步是性能优化。Agent 根据实测结果定位瓶颈,尝试分块、并行、复用与流水调整,并在固定条件下比较候选方案。有效改动予以采纳,出现负收益则回退。Agent 还能在初始需求中指定使能基于 LLM 的自动优化算法 PANKO,由其联合搜索程序结构与分块参数,进一步优化性能。

在使用 CANNBot PyPTO Pro Agent 开发的实战中,grouped_matmul_activation_quant 通过了所有用例的精度验证。Profiling的性能测试结果,五个用例加速比为 1.82–2.38 倍。

分组矩阵乘、激活与量化融合算子的精度结果及五个用例性能加速比

分组矩阵乘、激活与量化融合算子的精度结果及五个用例性能加速比

任务结束后,开发者可以从 custom/op 取得源码、Golden、测试报告、规格设计与优化点,并核对实际交付入口。生成耗时与 Token 消耗也随任务一起落盘记录,并注明等待、并行、缓存读取等统计范围,以便评估投入、规划下一轮优化。

仓库地址:pypto-gym:基于 PyPTO 框架的昇腾AI处理器算子开发样例项目 - AtomGit。

准备好匹配的昇腾 NPU、CANN、PyPTO 或 PyPTO Pro 环境并安装 OpenCode 后,先获取仓库:

git clone https://atomgit.com/cann/pypto-gym.git

根据开发路线选择其中一个入口。两组命令都在克隆仓库的父目录下执行。

PyPTO Tensor Agent 入口:cannbot-skills/plugins-official/pypto-op-orchestrator。

cd pypto-gym/cannbot-skills/plugins-official/pypto-op-orchestrator
bash init.sh project opencode
opencode

启动后输入“使用 PyPTO Tensor 开发并优化 softmax”,再补上前文的输入规格、精度与性能要求。

PyPTO Pro Agent 入口:cannbot-skills/plugins-official/pypto-pro-op-orchestrator。

cd pypto-gym/cannbot-skills/plugins-official/pypto-pro-op-orchestrator
bash init.sh project opencode
opencode

启动后输入“使用 PyPTO Pro 开发并优化 softmax”,并附上算子规格。

两个入口都提供 quickstart.md。先核对环境与启动要求,再从一个熟悉的小规格开始,依次完成生成、验证、调优与结果归档。

总结

融合算子的难点不在单个环节,而在数学语义、内存布局、低精度误差、多核同步与性能开销彼此牵制,改一处往往牵动另一处。CANNBot 的 PyPTO Tensor Agent 与 PyPTO Pro Agent 把这些环节收进同一条可推进、可检查、可复验的流程:先对齐需求与验收判据,再准备独立的 Golden 与测试环境,之后才进入编码、测试与调优。无论从哪个入口进入,最终交付都按同一套标准验收,源码、Golden、测试与优化点可以逐项核查。

若想了解更多 CANNBot PyPTO 算子编程智能体硬核技术及复杂融合算子开发实操,欢迎报名活动

主题:CANN 开发者 Meetup PyPTO 算子编程专场

时间:2026年10月24日(周六) 14:00-18:00

地点:上海市杨浦区创智天地广场7号楼一楼会议室

报名链接:报名开启|CANN 开发者 Meetup PyPTO 算子编程专场,解锁复杂算子开发新范式

Logo

CANN开发者社区旨在汇聚广大开发者,围绕CANN架构重构、算子开发、部署应用优化等核心方向,展开深度交流与思想碰撞,携手共同促进CANN开放生态突破!

更多推荐