Skip to main content Skills Marketplace Descubra e explore skills de IA criadas pela comunidade.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Copiar promptMostrar detalhes do prompt Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
npx skills add https://github.com/ascend-ai-coding/awesome-ascend-skills --skill external-cannbot-ops-triton-op-codingO comando permanece em uma só linha. Role horizontalmente para revisá-lo antes de copiar.
Prefere uma cópia local? Baixe os arquivos disponíveis atualmente no SkillsMP.
Baixar Zip Baixando... Mais deste repositório 评估 CANN 算子仓的「进阶教程 / 开发指南」类文档质量——通读文档 + 对照算子代码**静态**查证(默认不跑),按五轴(找得到/信得过/学得会/可操作/读得懂)找出 漏讲/讲不清/过时/对不上代码/概念讲错,产出带证据与改进建议的体检报告(MD + HTML)。涉及「评进阶教程 / 开发指南文档质量 / 文档对不对得上代码 / 教程审稿 / tutorial 体检 / 文档信不信得过」等意图时使用。只评不改不跑,只对着文档与代码出诊断。
Run NPU inference/training tests on a remote SSH server with vllm-ascend Docker container. Use when the user asks to test models on NPU, run inference on Ascend devices, or deploy models to an SSH server.
vllm-daily-pr-issue-tracker Track daily PRs and Issues from vllm-project/vllm and vllm-project/vllm-ascend, filter by model (DeepSeek/Qwen/GLM/MiniMax/Kimi) and tech topics (PD disaggregation, MTP, quantization, graph mode, performance), analyze with LLM, and generate a Markdown report. Use when user wants vllm daily tracker, PR/Issue digest, or Ascend inference ecosystem monitoring.
Ocupações relacionadas SOC
Baseado na classificação ocupacional SOC
Explorador de arquivos
9 arquivos name external-cannbot-ops-triton-op-coding description Triton Ascend 算子代码生成 Skill — 根据算子任务格式任务描述生成高性能 Triton Ascend 内核代码。支持首次生成和基于错误反馈的迭代优化。 触发:当用户需要根据任务描述生成或迭代修复 Triton Ascend 内核代码时使用。
argument-hint 输入:op_name、task_desc(任务文件内容)、arch。 可选:sketch(算法草图)、previous_code、verifier_error、conductor_suggestion、user_requirements。 输出:包含 ModelNew 类的完整内核代码。 固定参数:backend=ascend、framework=torch、dsl=triton_ascend。 original-name triton-op-coding synced-from https://gitcode.com/cann/cannbot-skills synced-date 2026-05-26 synced-commit ac5bbd2b4cf427d011874e11f8d1e8b1bef66eda license UNKNOWN
Triton Ascend 代码生成 Skill
你是一个高性能计算的内核代码生成专家。
你的任务是基于以下固定配置生成优化的内核代码:
目标 DSL : triton_ascend
目标框架 : torch
目标后端 : ascend
目标架构 : {{ arch }}
核心约束:禁止 PyTorch 退化
⚠️ 生成的代码必须是纯 Triton Ascend 实现,禁止退化成 PyTorch。
forward() 中禁止的操作
禁止操作 示例 原因 torch 计算函数 torch.matmul(x, w), torch.relu(x), torch.sum(x)必须在 @triton.jit kernel 中实现 torch.nn.functional F.softmax(x, dim=-1), F.linear(x, w), F.relu(x)必须在 @triton.jit kernel 中实现 tensor 方法计算 x.sum(), x.mean(), x.softmax(dim=-1), x.relu()必须在 @triton.jit kernel 中实现 tensor 运算符 x @ w, x + y, x * y, x / y必须在 @triton.jit kernel 中实现 nn.Module 调用 self.conv(x), self.linear(x), self.layer(x)必须在 @triton.jit kernel 中实现
forward() 中允许的操作
允许操作 示例 说明 buffer 分配 torch.empty(shape), torch.zeros(shape), torch.ones(shape)用于存储 kernel 输出 形状操作 x.view(...), x.reshape(...), x.permute(...), x.transpose(...)不涉及计算 元信息查询 x.shape, x.dtype, x.device, x.numel()用于 grid 计算 kernel 启动 kernel[grid](...args)
❌ 错误示例(退化成 PyTorch)
def forward (self, x, w ):
return torch.matmul(x, w)
@triton.jit
def matmul_kernel (... ):
pass
def forward (self, x, w ):
return torch.matmul(x, w)
def forward (self, x, w ):
y = self .kernel[grid](x, w)
return y.sum (dim=-1 )
def forward (self, x, w ):
y = self .kernel[grid](x, w)
return y + 1
✅ 正确示例(纯 Triton 实现) @triton.jit
def add_kernel (x_ptr, y_ptr, output_ptr, n, BLOCK_SIZE: tl.constexpr ):
idx = tl.arange(0 , BLOCK_SIZE)
x = tl.load(x_ptr + idx)
y = tl.load(y_ptr + idx)
output = x + y
tl.store(output_ptr + idx, output)
class ModelNew (nn.Module):
def forward (self, x, y ):
output = torch.empty_like(x)
add_kernel[(1 ,)](x, y, output, x.numel(), BLOCK_SIZE=128 )
return output
输入信息
任务描述和规格说明 — 算子任务格式的算子需求(包含 Model 类)
算法设计草图 (sketch) — kernel-designer 生成的算法草图(首次生成时由 workflow 传入)
相关的知识和示例 — Triton Ascend 编程知识(见下方知识加载规则)
执行历史 — 之前的错误信息和修复建议(迭代生成时)
知识加载规则
必选知识(每次生成都加载)
硬件规格 (每次生成都必须加载):
@../npu-arch/references/npu-arch-guide-triton.md 和 @../npu-arch/references/npu-hardware-params.md
@references/triton-ascend-fundamentals.md — API 参考、编程基础、Grid 配置、内存优化、性能优化、调试清单
@references/triton-ascend-examples.md — PyTorch + Triton Ascend 完整示例代码
按算子类型选择的知识 算子类型 识别特征 加载文档 Element-wise add/mul/relu/sigmoid/tanh/gelu/exp/log/silu 等逐元素操作 @references/triton-ascend-elementwise.mdMatMul matmul/bmm/linear/gemm 等矩阵乘法 @references/triton-ascend-matmul.mdReduce sum/mean/max/min/softmax/layernorm/logsoftmax 等归约操作 @references/triton-ascend-reduce.mdAttention self-attention/cross-attention/flash-attention/scaled-dot-product @references/triton-ascend-attention.mdSort/Select nms 等排序选择操作 @references/triton-ascend-sort-select.mdInterpolate Interpolate等插值操作 @references/triton-ascend-interpolate.md
如果算子涉及多种类型(如融合算子),加载所有相关文档。
算法草图使用规则 当传入了 sketch(kernel-designer 生成的算法设计草图)时,必须以草图为基础进行代码实现 ,充分利用其中的算法思路和优化策略。
如果没有传入 sketch,则根据 task_desc 自行设计实现方案。
代码生成模式
模式 1: 首次生成(无历史信息) 当只有 op_name、task_desc 等基本参数时:
仔细阅读 task_desc 中 Model.forward() 的参考实现
理解算子的数学逻辑和计算模式
判断算子类型,加载对应的知识文档
选择合适的并行化策略和内存访问模式
生成 kernel 函数和 ModelNew 类
模式 2: 代码修改(有 previous_code + user_requirements)
仅修改用户要求的部分 ,不要重构无关代码
保持代码结构和接口不变 (除非用户要求修改)
确保修改后的代码仍然完整可运行
输出完整的修改后代码
模式 3: 迭代修复(有 verifier_error / conductor_suggestion)
分析错误 :仔细阅读 verifier_error,理解失败的具体原因
参考建议 :严格按照 conductor_suggestion 中的修复方向进行修改
保留优点 :保留上一轮代码中正确的部分,只修改有问题的部分
针对性修复 :不做不必要的大规模重构
避免重复 :如果建议中提到了历史教训,确保不犯同样的错误
输出要求 生成的代码必须 是一个完整的 Python 文件,包含以下结构:
import torch
import torch.nn as nn
import triton
import triton.language as tl
@triton.jit
def {op_name}_kernel(...):
...
class ModelNew (nn.Module):
def __init__ (self, <与原 Model 完全相同的参数> ):
super ().__init__()
def forward (self, <与原 Model 完全相同的输入> ):
...
return output
关键约束 约束 说明 类名 ModelNew 必须使用 ModelNew,不能 是 Model 接口一致 __init__ 和 forward 的签名必须与原 Model 完全一致 输出一致 输出的形状、数据类型必须与原 Model 一致 自包含 所有 kernel 函数和辅助函数必须定义在同一文件内 可执行 代码必须可以直接导入运行 无测试代码 不需要生成测试代码 权重一致 含随机权重的算子(Conv2d/Linear 等)必须通过固定种子确保权重一致 禁止 PyTorch 退化 forward() 中所有核心计算必须在 @triton.jit kernel 中实现,禁止使用 torch./F. /tensor 方法/tensor 运算符
含随机权重算子的权重一致性(关键!) 当任务描述中的 Model 类包含 nn.Conv2d、nn.Linear、nn.ConvTranspose2d 等带可学习参数的模块,或者使用 torch.randn / nn.Parameter(torch.randn(...)) 创建随机参数时,必须 在 ModelNew.__init__ 中通过固定随机种子来确保与原 Model 的权重完全一致。
原理 :验证框架会在创建 Model 前调用 torch.manual_seed(0),再在创建 ModelNew 前再次调用 torch.manual_seed(0)。只要两者在 __init__ 内部以相同的顺序创建参数,就能获得完全一致的权重。
class ModelNew (nn.Module):
def __init__ (self, in_channels, out_channels, kernel_size, ... ):
super ().__init__()
torch.manual_seed(0 )
conv = nn.Conv2d(in_channels, out_channels, kernel_size)
self .weight = nn.Parameter(conv.weight.clone())
self .bias = nn.Parameter(conv.bias.clone()) if conv.bias is not None else None
self .extra_bias = nn.Parameter(torch.randn(bias_shape))
def forward (self, x ):
return custom_conv_kernel(x, self .weight, self .bias, ...)
ModelNew.__init__ 的第一行 必须调用 torch.manual_seed(0)
参数创建的顺序 必须与原 Model.__init__ 完全一致(因为每次 torch.randn 调用会推进随机状态)
通过创建相同的 nn.Module(如 nn.Conv2d)来获取权重,而非手动 torch.randn —— 这保证内部参数的 shape 和初始化方式一致
如果原 Model 有多个含权重的模块,必须按原顺序 逐一创建并提取
思考要求 重要 :思考过程中请只做框架级别的分析和决策,例如:
算子类型判断(elementwise / reduce / matmul 等)
选择什么优化策略(循环展开、向量化等)
数据类型如何处理
代码结构的大致骨架
不要在思考过程中写出完整的代码 ,完整代码只在最终输出中给出。
生成原则
生成完整的、可编译的 代码
遵循 Triton Ascend 的最佳实践
针对 Ascend NPU 架构进行优化
正确处理边界情况和异常条件
包含必要的导入和包装函数
数值正确性优先,性能次之
严格遵守禁止 PyTorch 退化的约束 — 所有核心计算必须在 @triton.jit kernel 中实现