원클릭으로
triton-operator-code-review
静态检视 Triton 算子代码质量(Host+Device 侧),面向 Ascend NPU。发现潜在 bug、API 误用和性能隐患。仅关注静态代码分析。关键词:code review、代码检视、静态分析。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
静态检视 Triton 算子代码质量(Host+Device 侧),面向 Ascend NPU。发现潜在 bug、API 误用和性能隐患。仅关注静态代码分析。关键词:code review、代码检视、静态分析。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Kubernetes 集群健康检查与安全修复 — 诊断问题,用户确认后执行修复
排查并优化 Ascend C 算子性能。当用户开发、审查或优化 Ascend C kernel 算子时使用,或当用户提及 Ascend C 性能优化、算子优化、tiling、流水、搬运、 内存优化、NPU/昇腾等关键词时触发。
多语言安全代码审查 (Security Code Review)。对 Python、C++、Shell、Markdown 文件进行系统性安全漏洞检测与修复指导。覆盖 OWASP Top 10、CWE Top 25、CERT 安全编码标准。当用户提及以下内容时,务必使用此技能:安全审查、安全代码审查、security review、code review 中的安全检查、漏洞扫描、安全合规检查(CWE/CERT/OWASP)、编写安全代码、检查代码安全性、推理服务安全审计、多模态 Token 安全校验、JSON 嵌套深度攻击防护。即使用户没有明确说'安全审查',只要涉及代码安全性评估、漏洞检测、安全最佳实践,都应触发此技能。
昇腾NPU CANN Toolkit+Kernels+NNAL安装部署技能。支持从官网下载run包安装和从Docker镜像提取两种方式,覆盖驱动检查、包下载、安装、环境变量配置与验证全流程。当用户需要安装CANN全套组件或指定版本CANN到自定义路径时调用。
根据设计文档生成 AscendC 算子完整代码实现并完成框架适配。TRIGGER when: 设计文档已完成,需要生成 op_host/op_kernel 代码、注册到 PyTorch 框架、编译测试。关键词:代码生成、op_host、op_kernel、tiling、kernel、框架适配、算子注册。
完成AscendC算子设计 - 帮助用户完成算子的架构设计、接口定义和性能规划。当用户提到算子设计、算子开发、tiling策略、内存规划、AscendC kernel设计、两级tiling、核间切分、核内切分时,使用此skill。
| name | triton-operator-code-review |
| description | 静态检视 Triton 算子代码质量(Host+Device 侧),面向 Ascend NPU。发现潜在 bug、API 误用和性能隐患。仅关注静态代码分析。关键词:code review、代码检视、静态分析。 |
| 级别 | 含义 | 典型问题 |
|---|---|---|
| P0 | 必定崩溃或错误结果 | Mask 遗漏、核类型错配、Atomic 循环死锁 |
| P1 | 高概率精度/功能问题 | 归约未升精度、Softmax 未减 max |
| P2 | 性能/可维护性 | 冗余访存、BLOCK 未对齐 |
| 阶段 | 加载 | 不要加载 |
|---|---|---|
| Phase 1: Host 侧 | ascend-triton-api-constraints.md | dtype-matrix |
| Phase 2: Device 侧 | ascend-api-dtype-matrix.md | test-patterns |
| 逐项核对 | code-review-checklist.md | — |
| 参考官方实现 | ascend-test-patterns.md | — |
| 确认 API 签名/参数 | triton-api-reference.md | — |
加载触发:需要确认某个 tl/libdevice API 的签名、参数或可用数据类型时,完整阅读 triton-api-reference.md。
| 检查项 | 识别方式 | 级别 |
|---|---|---|
| 硬编码核数 | grid = (20,) 等字面量 | P0 |
| 核类型错配 | 含 tl.dot 的 kernel 用了 num_vectorcore | P0 |
| 矩阵乘法退化为逐元素 | 无 tl.dot,用 Vector Core 逐元素乘加实现 matmul/GEMV | P0 |
BLOCK_SIZE 非 tl.constexpr | 声明检查 | P1 |
| 矩阵运算 BLOCK 非 16 倍数 | 数值检查 | P2 |
核类型:含 tl.dot → AI Core (num_aicore);逐元素/归约/激活 → Vector Core (num_vectorcore)。注意:矩阵乘法类算子(含 GEMV)必须用 tl.dot + AI Core,Cube Core 吞吐远高于 Vector Core。
Mask 完整性(P0):所有 tl.load/tl.store 必须有 mask= 或使用 make_block_ptr。
数据类型(P0-P1):tl.dot 输入仅支持 int8/fp16/fp32/bf16;dot_scaled 有条件支持(bf16/fp16 lhs/rhs, int8 scale, fp32 out);permute/trans 不支持 int64。
精度处理(P1):FP16/BF16 归约前 .to(tl.float32);Softmax 必须减 max。
归约类算子单 pass 检查(P1):GroupNorm/LayerNorm/RMSNorm 等算子,检查是否对同一数据多次 load(先算统计量,再 load 做归一化)。当 D ≤ UB 时应单 pass:一次 load 后 tl.sum(x, 1) 在 UB 内完成全部计算。双 pass 可慢 5x。
控制流(P0):Triton IR 使用 MLIR 结构化控制流(scf.for/scf.while),不支持 early exit。
for/while 循环内 return — 编译错误:"Cannot have return statements inside while or for"(包括子函数中的 return)for 循环内 break — 编译错误:"unsupported AST node type: Break"Tensor 索引(P0):Triton tensor 不支持 Python 风格 [] 下标操作。
tensor[i] = val — AssertionErrorval = tensor[i] — AssertionErrortensor[i:j] 切片 — 编译错误代码模式:
for ... : tl.atomic_cas/or/xor/and/xchg(...) — 可能死锁(P0)tl.atomic_add 返回值(P0)import numpy(P0)tensor[i].item() 在 Host 热路径 — 触发 CPU-NPU 同步(P2)for ... : tl.load(x_ptr + ...) 循环 — 双 pass 反模式(P1)tl.parallel(bind_sub_block=True) — tl.dot 后有逐元素操作但无并行分片(P2)tl.cast 到 int8/int16 未指定 overflow_mode(P1)tl.load → 冗余 GM 访问tl.arange(0, N) * stride(stride > 1)→ 非连续访存pid 直接映射 block 无循环 → 负载不均b * stride0 + n * stride1 + ...)→ 建议改为 host 侧 expand+contiguous,统一 row * D + col 偏移weight_ptr + ch_idx gather → 建议 host 侧展开为连续布局num_vectorcore / BLOCK_SIZE 非 tl.constexprtl.dot + AI Coretl.load/tl.store 无 mask / tl.dot 输入 int32/int16/int64 / dot_scaledatomic_or/xor/and/xchg/cas 在 for 循环内 / kernel 内第三方库overflow_modefor/while 循环内 return / break — Triton 结构化控制流不支持 early exit(含子函数中的 return)tensor[i] 索引操作(读取/赋值/切片)— 用 tl.where / tl.gather / tl.extract_slice 替代按 code-review-report-template.md 格式输出报告。