已合并
docs:add skill for reg ascir #1281
docs:add skill for reg ascir #1281
已合并
wangmingming创建于 7月14日
共 3 个文件变更+709-0
@@ -6,6 +6,7 @@
6 "Skill(af-build-runner)",6 "Skill(af-build-runner)",
7 "Skill(af-test-developer)",7 "Skill(af-test-developer)",
8 "Skill(af-code-reviewer)",8 "Skill(af-code-reviewer)",
9+ "Skill(af-reg-ascir)",
9 "Skill(planning-with-files)",10 "Skill(planning-with-files)",
10 "Skill(skill-creator)",11 "Skill(skill-creator)",
11 "Skill(gitcode-pr)",12 "Skill(gitcode-pr)",
@@ -0,0 +1,32 @@
1+# af-reg-ascir
2+ 
3+graph-autofusion 项目 ASCIR 注册、新增/修改、dtype、tmp buffer、UT/ST 辅助 Skill。
4+ 
5+## 功能
6+ 
7+- 指导新增或修改 ASCIR 算子注册流程
8+- 辅助维护 V35/V2 ASCIR 注册、ATT、Codegen 和性能模型
9+- 指导 dtype 扩展、类型转换和 tmp buffer 注册
10+- 每个新增 ASCIR 默认考虑并补充 backend E2E;更新 ASCIR 时强制审计现有 E2E 是否需要同步修改
11+- 参考 BesselJ0 生成 share graph、backend generator、ICPU 运行与精度验证、CMake 和统一测试入口
12+- 分析 ASCIR API 名、OpType、Python API 和测试用例的影响范围
13+- 按完整矩阵检查 regbase 构建/注册、ATT、Codegen、Python ops/IR Attr、perf、UT、share graph、backend E2E、脚本与打包
14+- 识别 regbase 内部 include、官方 AscendC API 头缺失、Device 编译选项、旧包加载等上板故障
15+- 根据输入输出、模板属性、多输出和 dtype 变化给出最小修改方案
16+ 
17+## 触发场景
18+ 
19+用户提到以下关键词时自动触发:
20+- ASCIR 注册、ascir op、REG_ASC_IR
21+- 新增算子、修改算子、算子注册
22+- dtype 注册、类型转换、cast-map
23+- tmp buffer、CalcTmpBufSize、CalcXxxTmpSizeV2
24+- ASCIR UT、ASCIR ST、E2E 测试、端到端测试生成
25+ 
26+## 验证方法
27+ 
28+在 opencode 中输入以下指令验证 Skill 是否生效:
29+- "帮我新增一个 ASCIR 算子注册"
30+- "给 ASCIR 算子增加一个 dtype 支持"
31+- "这个 ASCIR 算子需要注册 tmp buffer 吗?"
32+- "修改 ASCIR API 名称需要同步改哪些地方?"
@@ -0,0 +1,676 @@
1+---
2+name: af-reg-ascir
3+description: |
4+ 识别 graph-autofusion 新增或更新 ASCIR 的完整修改面,并给出注册、regbase、Codegen、Python、UT/ST/E2E、上板故障的最小修改方案。
5+ **必须触发的场景**:用户提到 ASCIR 注册/更新、ascir op、AscendC regbase、dtype、tmp buffer、pyascir、ASCIR UT/ST/E2E、上板编译或运行错误。
6+---
7+ 
8+# graph-autofusion ASCIR 注册辅助
9+ 
10+辅助用户在 graph-autofusion 中完成 ASCIR 算子的新增、修改、数据类型扩展、tmp buffer 注册,以及配套 UT/ST 生成与验证。
11+ 
12+---
13+ 
14+## 触发场景
15+ 
16+用户请求包含以下任一意图时,必须使用本 skill:
17+ 
18+- 新增 ASCIR 算子、注册 ASCIR 算子、添加 `REG_ASC_IR`。
19+- 修改已有 ASCIR 算子的注册、实现类、API 名称、输入输出、ComputeType 或 dtype。
20+- 为 ASCIR 算子增加 dtype 支持、类型转换逻辑或 cast-map。
21+- 为 ASCIR 算子添加或修改 tmp buffer 注册、`CalcTmpBufSize`、`CalcXxxTmpSizeV2`。
22+- 为 ASCIR 注册变更补充 UT、ST、E2E 测试或测试图函数。
23+- 排查 ASCIR 注册、codegen、ATT、pyascir、性能模型、测试编译失败。
24+ 
25+---
26+ 
27+## 执行原则
28+ 
29+- 先明确用户目标是“新增算子”还是“修改已有算子”,再决定最小修改范围。
30+- 不做无关重构,不批量格式化无关文件,不新增与需求无关的抽象。
31+- 修改前必须检索现有同类算子,优先复用项目已有模式。
32+- 修改后必须验证,至少完成静态检索;涉及编译或测试时按 af-build-runner 和 af-test-developer 执行。
33+- 所有编译命令必须限制并行度,优先使用 `-j 8`。
34+- 不自动提交代码,除非用户明确要求 commit。
35+ 
36+---
37+ 
38+## 信息收集
39+ 
40+### 新增 ASCIR 算子
41+ 
42+若用户未提供完整信息,一次性收集必需参数:
43+ 
44+```text
45+OpName(PascalCase) InputNum(0/1/2/3) OutputNum(1) ComputeType(elewise/reduction/...) DataType(float32,float16,...) TmpBuf(true/false)
46+```
47+ 
48+可选参数:
49+ 
50+```text
51+version(v1/v2,默认 v2) test(true/false,默认 false) cast-map(如 float16:float32,int8:int32)
52+```
53+ 
54+### 修改已有 ASCIR 算子
55+ 
56+先确认以下信息:
57+ 
58+- 目标算子名与版本:`OpName`、`v1` 或 `v2`。
59+- 修改类型:注册项、dtype、tmp buffer、API 名、ATT、Codegen、Python API、性能模型、UT/ST。
60+- 是否需要保持外部 API/OpType/节点名兼容。
61+- 是否需要补充或更新 UT/ST。
62+ 
63+### 批量 dtype 注册
64+ 
65+优先让用户提供 JSON 配置;如果用户没有 JSON,则先整理为等价结构再执行。
66+ 
67+```json
68+[
69+ {
70+ "ascir_name": "Abs",
71+ "ascir_dtype": "DT_FLOAT16",
72+ "version": "v2",
73+ "enabled": true,
74+ "dtype_config": {
75+ "requires_cast": false,
76+ "cast_to_dtype": null
77+ },
78+ "st_config": {
79+ "generate": true,
80+ "dims": 3,
81+ "version": "v2"
82+ }
83+ }
84+]
85+```
86+ 
87+---
88+ 
89+## 关键路径
90+ 
91+根据仓库实际文件为准,当前工程常见修改点包括:
92+ 
93+- V2 ASCIR 注册表:`autofuse/v35/ascir/generator/ascir_builtin_ops_v2.cpp`。
94+- V1 ASCIR 注册表:`autofuse/ascir/generator/ascir_builtin_ops_v1.cpp`。
95+- 注册宏与注册表实现:`autofuse/inc/graph_metadef/graph/ascendc_ir/ascir_register.h`、`autofuse/graph_metadef/graph/ascendc_ir/generator/ascir_register.cc`、`autofuse/inc/graph_metadef/graph/ascendc_ir/ascir_registry.h`。
96+- V2 ATT 实现:`autofuse/v35/ascir/generator/v2_ascir_att_impl.h`。
97+- V2 Codegen 实现:`autofuse/v35/ascir/generator/v2_ascir_codegen_impl.h`。
98+- V2 tmp buffer 声明与实现:`default_reg_func_v2.h`、`autofuse/v35/ascir/reg_func/`。
99+- V2 性能模型:`autofuse/v35/att/api_perf_register/ascir_api_perf_v2.cpp`,Reduce 类性能模型在 `ascir_reduce_api_perf_v2.cpp`。
100+- Python C 扩展:`autofuse/compiler/py_module/pyascir.h` 维护 `REGISTERED_OPS`;`pyascir.cpp` 创建 `ascir.ops.OpName` 并暴露 IR 属性。