skills/triton-operator-code-gen/SKILL.md
根据 Ascend NPU 算子设计文档(或直接需求)生成 Triton kernel 代码。当用户需要实现 Triton 算子、将设计文档转为可执行代码时使用。核心产出:kernel 代码 + 基本正确性测试。关键词:Triton kernel、算子实现、代码生成、code generation。
npx skillsauth add Ascend/agent-skills triton-operator-code-genInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
计算逻辑 → Tiling 策略 → 代码实现。顺序不可颠倒。
tl.tanh / tl.erf / tl.sqrt — 推荐,性能最优tl.math.tanh / tl.math.erf — 备选triton.language.extra.ascend.libdevice / triton.language.extra.libdevice — 以上找不到时| 阶段 | 必须加载 | 不要加载 |
|------|----------|----------|
| 设计 Tiling | hardware-architecture.md | templates.md |
| 生成 Kernel | templates.md | hardware-architecture.md |
| 查找 API 签名 | triton-api-reference.md | — |
MANDATORY:对应阶段前完整阅读上述文件,不设行数限制。
加载触发:需要确认某个 tl/libdevice API 的签名或参数时,完整阅读 triton-api-reference.md。
提取数学公式、输入输出规格、约束条件。用伪代码描述计算过程,必须与用户确认。
输入依赖:若已有设计文档(design skill 产出),按其 Tiling 策略实现;若无,则在此设计。
核间切分两原则:
grid = 物理核数(get_npu_aicore_num() 或 get_npu_vectorcore_num())core_num = get_npu_aicore_num()
grid = (core_num,)
# kernel 内:
pid = tl.program_id(0)
num_core = tl.num_programs(0)
blocks_per_core = tl.cdiv(total_blocks, num_core)
for block_idx in range(pid * blocks_per_core, min(...)):
...
UB 空间:安全 BLOCK_SIZE = (196608 - 32) / (缓冲区数 × dtype大小) × 0.8
按算子类型选择模板(详见 templates.md):
| 算子类型 | 核心类型 | 模板 | |----------|----------|------| | 归约类 | vector core | 模板 1 | | GEMM/注意力 | AI core | 模板 2,6 | | 激活/损失/索引/MoE/后处理 | vector core | 模板 3-5,7-8 | | 卷积 | AI core | 模板 9 |
生成一个基本正确性测试(单 shape × 单 dtype 的 smoke test),确保 kernel 可编译运行且结果正确。全面的精度验证由 precision-eval skill 负责。
tl.dot + pad B 到 BLOCK_N=16,禁止用 Vector Core 逐行算内积tl.sum(x, 1) 在 UB 内完成统计和归一化,见模板 1for/while 循环内 return / break — Triton IR 结构化控制流不支持 early exit,编译必报错。替代:while + 布尔标志,或 tl.where masktensor[i] 索引操作(读取/赋值/切片)— Triton tensor 不支持 Python 风格下标。替代:tl.where 赋值、tl.gather 读取、tl.extract_slice 切片| 陷阱 | 症状 | 解决 |
|------|------|------|
| 计算逻辑错 | 输出不符预期 | 伪代码描述并确认 |
| UB 溢出 | "ub overflow" | 减小 BLOCK_SIZE |
| coreDim 超限 | "coreDim > UINT16_MAX" | 增大 BLOCK_SIZE 或设 TRITON_ALL_BLOCKS_PARALLEL=1 |
| 精度损失 | FP16 不准确 | 归约前升 FP32 |
| 索引不够 | D-cache 报错 | 超大 shape 用 int64 |
| 归约类算子慢 5x+ | aiv_scalar > 80% | 单 pass:一次 load + tl.sum(x, 1) UB 内全计算 |
| 大矩阵 L2 缓存颠簸 | GEMM 吞吐低于预期 | 对角线调度(task_m_idx = block_idx % NUM_BLOCKS_M),见模板 2 |
必须使用 Triton kernel 完成核心计算,严禁以下行为:
testing
Kubernetes 集群健康检查与安全修复 — 诊断问题,用户确认后执行修复
tools
昇腾NPU CANN Toolkit+Kernels+NNAL安装部署技能。支持从官网下载run包安装和从Docker镜像提取两种方式,覆盖驱动检查、包下载、安装、环境变量配置与验证全流程。当用户需要安装CANN全套组件或指定版本CANN到自定义路径时调用。
development
编译 ATB (Ascend Transformer Boost) 测试框架。当用户需要编译 ATB 测试框架、 运行 CSV 测试、或构建 atb_test_framework 时调用。支持全量编译(含第三方依赖克隆与源替换) 和增量编译两种模式。需在 Docker 容器内配合 CANN 环境执行。
databases
ATB OPS→ACLNN 迁移标准化工作流主模板。整合前置学习、设计文档生成、CSV用例设计、 实际迁移、编译验证、测试验证全流程,提供明确的阶段 Gates 和用户确认机制。