Community编程与开发github.com

优化移交 (kernel-optimize)

Primus-Turbo 向自主内核优化循环移交任务——收集内核优化所需的前提信息(内核路径、聚焦测试/基准命令、评分指标、执行模式、快速验证框架),并将其传递给优化循环。适用于将 Primus-Turbo 内核推向硬件极限的场景,而非仅进行性能抽检。

优化移交 (kernel-optimize) 是什么?

此技能定义了 Primus-Turbo 与自主内核优化循环(`kernel-optimize/SKILL.md`)之间的接口。当目标是让内核逼近硬件极限而非仅做性能抽检时,它会收集优化循环所需的前提信息。该技能支持 Triton(Python)和 HIP/CK(C++)后端,并提供了 `repo-mode` 和 `workspace-mode` 两种执行模式。它详细规定了评分规则——以几何平均值作为主要指标,并在优化评分表中明确了计算密集型与内存密集型操作的指标选择。此外,它引入了双工具快速验证框架:`quick_test_bench.py` 用于回合间的回归门控,完整的 `bench_<op>_turbo.py` 用于最终验收。该框架通过 `--summary-csv` 强制保持测量一致性,并包含一个冻结的 CSV 列架构以支持逐形状回归门控。用户按步骤执行:验证环境、读取前提信息、收集数据、移交至优化循环、最后在项目中运行完整测试套件并审查报告。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Z-Y00/rocm-skills/tree/main/skills/primus-turbo-develop/optimize-handoff

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

优化移交 (kernel-optimize) 是做什么的?

当目标是让内核逼近硬件极限(而非仅进行性能抽检)时,此文件是 Primus-Turbo 与自主优化循环(位于 ../../kernel-optimize/SKILL.md)之间的接口。它提供该循环所需的前提信息。请先阅读中心文件 ../SKILL.md。

流程

  1. 验证环境 — pip show primus_turbo;如果未安装则重新以可编辑模式安装(参见中心 SKILL.md → 构建)。
  2. 阅读 kernel-optimize/SKILL.md 的"前提信息"部分 — 了解优化循环需要什么。
  3. 收集目标操作的前提信息(下表 + 中心 SKILL.md 中的代码映射/命令)。
  4. 移交给 kernel-optimize/SKILL.md;它将执行 DEFINE_TARGET → PREPARE_ENVIRONMENT → BASELINE → (ANALYZE → OPTIMIZE → VALIDATE)* → REPORT。
  5. 验收 — 回到项目中:运行 完整 套件 pytest tests/pytorch/ -v,审查报告,确认干净的差异/提交。

在优化循环开始之前,请先阅读 ../../../rules/iteration_rules.mdc:每轮一个假设,正确性门控先于性能,接受/回滚谱系,并且每个已接受的增益必须迁移到真实训练步骤中(禁止使用 id(...) 键控的 activation/grad_out 缓存,禁止仅使用均匀分布的 GroupGemm 快捷方式)。

前提信息(按操作)

要求获取位置
内核源文件路径中心 SKILL.md → 代码映射
聚焦测试命令中心 SKILL.md → 测试与基准;例如 pytest tests/pytorch/ops/test_gemm_fp8.py -v -k "blockwise and TRITON"
聚焦基准命令../verify-performance/SKILL.md;例如 PRIMUS_TURBO_GEMM_BACKEND=TRITON python benchmark/ops/training/bench_gemm_turbo.py --dtype fp8 --granularity blockwise
基准输出格式/指标../verify-performance/SKILL.md(Forward/Backward TFLOPS,Check 门控)
快速验证框架下方的"快速验证"
评分规则下方的"优化评分"
execution_mode + 重建下方的"优化环境"

优化环境

后端/语言推荐的 execution_mode变更后重建
Triton (Python)repo-mode无(可编辑安装)
HIP / CK (C++),小/参数变更repo-modeGPU_ARCHS=<架构> pip install --no-build-isolation -e . -v
HIP / CK (C++),新内核/大量试错workspace-mode按照 kernel-optimize/SKILL.md 中的最小栈

优化评分

Check 列是硬性门控——任何 FAIL/ERROR 形状都会拒绝该候选。

优化类型primary_metric(聚合 = 所有 PASS 形状的几何平均值)
计算密集型,仅前向Forward TFLOPS
计算密集型,前向+反向(训练)Combined Step TFLOPS(前向/反向作为诊断保留)
内存密集型(逐元素、量化)Forward GB/s / Backward GB/s

联合步骤推导(对于前向+反向 GEMM 类操作更优)详见 ../verify-performance/SKILL.md。在 DEFINE_TARGET 阶段与用户确认 primary_metric。

快速验证

两种工具,不同角色——不要跨工具比较绝对值(它们使用不同的计时引擎):

  • quick_test_bench.py(此文件夹中,复制到优化目录内)是逐形状回归门控的权威来源,用于每轮比较。BASELINE(第一轮)和每一轮 VALIDATE 都运行此脚本,并比较其 --summary-csv 输出。它使用手写的 time.perf_counter 循环。
  • 完整的 bench_<op>_turbo.py(见 ../verify-performance/SKILL.md,torch.utils.benchmark.Timer)仅用于 (i) 从完整形状集中挑选 representative_shapes,以及 (ii) 在优化结束后进行最终验收。

两个验证级别都通过 quick_test_bench.py 运行,仅在 SHAPES 上有所不同:

  • 完整验证(BASELINE + 最终验收)→ SHAPES = 所有 target_shapes。
  • 快速验证(每一轮 VALIDATE)→ SHAPES = 3–5 个 representative_shapes 子集。

representative_shapes:仅包含来自 BASELINE 运行的 Check=PASS 形状,覆盖小规模(启动开销)和大规模(计算/内存)尺度,优先选择方差大的形状。记录在 manifest.yaml: representative_shapes 中。

框架: 模板 quick_test_bench.py 是权威参考。在 PREPARE_ENVIRONMENT 阶段,将其复制到 <campaign_dir>/quick_test_bench.py,设置 SHAPES 为空且 <target_backend> 为指定值;在 BASELINE 中将 SHAPES 填充为所有 target_shapes,然后在 VALIDATE 轮次中将其缩小为 representative_shapes。根据目标操作调整操作/配置;对于非 GEMM 操作,保留 --summary-csv 写入器和列架构(参见下面的架构范围注释)。

测量一致性合约: BASELINE(第一轮)和每一轮 VALIDATE 通过 --summary-csv 读取相同的权威 CSV,并使用同一 CSV 读取器在各轮之间进行解析——如果已配置,则使用可选的 mcp__turbo__parse_bench_csv MCP 辅助工具,否则使用基于以下列的直接 csv.DictReader。具体读取器无关紧要;冻结架构才是关键。架构必须逐字匹配以下列(任何偏差都会静默禁用逐形状回归门控):

label,B,M,N,K,Check,Forward TFLOPS,Forward TFLOPS_stddev,Backward TFLOPS,Backward TFLOPS_stddev,Forward Time (ms),Backward Time (ms),out_snr,da_snr,db_snr

Check 使用 PASS / FAIL;*_stddev 是指标单位的绝对标准差。在 manifest.yaml 中记录调用命令为 quick_command: "python <campaign_dir>/quick_test_bench.py";BASELINE 和每一轮 VALIDATE 都追加 --summary-csv <round_dir>/artifacts/benchmark.csv。

架构范围: 以上列是针对 GEMM 类特定的(M,N,K 维度,Forward/Backward TFLOPS,out_snr/da_snr/db_snr)。对于非 GEMM 操作,保留 label、Check 以及 *_stddev 约定,但将仅适用于 GEMM 的列替换为你的 primary_metric 所需的列——例如,内存密集型操作(参见"优化评分")使用 Forward GB/s / Backward GB/s 而非 TFLOPS,而单输出操作将 out_snr/da_snr/db_snr 替换为自身的正确性度量。无论选择哪种架构,都应在 BASELINE 时冻结它,在所有轮次中保持字节相同,并更新你使用的 CSV 读取器(如果已配置,则更新 mcp__turbo__parse_bench_csv 映射,否则更新直接的 csv.DictReader)以匹配——逐形状回归门控依赖于确切的列名。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能