Ascend Profiling Anomaly Discovery Skill
【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库,基于OpenSHMEM 标准协议,实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem
- 全文恰好一个 H1; - 紧跟一行 Skill 类型声明(如有):`**Skill类型**:流程导向型(Phase 0–7 工作流,含子阶段 5.5 / 6.5,子技能串行编排)`。 仓库中每个 `SKILL.md` 的第 8 行都有这一声明,形成了一张天然的"类型对照表": | Skill | 第 8 行的 Skill 类型声明(摘录) | | --- | --- | | [shmem-ops-dev](https://link.gitcode.com/i/17978d2e6de76b809d56fe4e2dcb9a6a) | 流程导向型(Phase 0–7 工作流,含子阶段 5.5 / 6.5,子技能串行编排) | | [shmem-ops-design](https://link.gitcode.com/i/a44a13997e26bfbfa07a21777a431481) | 文档生成型(需求分析 → 设计文档输出) | | [shmem-ops-testcase-gen](https://link.gitcode.com/i/63848b3d23b5b14a449901b1602f6687) | 文档与脚本生成型(读取设计文档,输出测试计划和验证脚本) | | [shmem-ops-code-gen](https://link.gitcode.com/i/5b62944a06c2532790df4461dd3a1cde) | 代码生成型(读取设计文档,输出可编译代码) | | [shmem-ops-compile-debug](https://link.gitcode.com/i/2034f1ed50b981f4125d9ea487111e71) | 构建与调试型(编译、运行、失败分类、修复) | | [shmem-ops-correctness-eval](https://link.gitcode.com/i/af69f56c3abb0a7aedb2b92cd75e992e) | 验证型(执行测试、分类失败、输出报告) | | [shmem-ops-code-review](https://link.gitcode.com/i/d1fb2715c59114794b39a93bb40ff712) | 检查型(对比 design.md 和实现代码,输出走读报告) | | [shmem-ops-torch-bind](https://link.gitcode.com/i/cc941ab1de9897fceeed0c51915b4b07) | 集成生成型(生成 Torch 绑定 C++ 代码 + Python 测试,编译验证) | | [shmem-ops-performance-eval](https://link.gitcode.com/i/d1b4be8f52cb41d88aba9b2e8b83979f) | 评测型(采集性能数据,对比 baseline,将结构化数据写入 performance_report.md) | | [shmem-ops-performance-optim](https://link.gitcode.com/i/c52b22bc01648394602e59c5f3252575) | 分析推荐型(读性能数据 → 瓶颈分析 → 输出修改意见 → 委托子 skill 执行改动 → 验证 → 决策) | ### 4.3 核心原则 规范模板: ```markdown ## 核心原则 0. **中文写作**:所有交付的 `.md` 文档必须使用中文撰写 1. **阶段串行**:需求确认 → 设计 → 用例生成 → 代码生成 → 编译正确性 → 走读 → Torch 接入(可选)→ 性能采集 → 交付,严格顺序执行 2. **子技能执行**:每个阶段 **MUST** 调用对应子 skill,不得自行实现写作要点:
- 使用编号列表;
- 每条以加粗短标题开头,冒号后跟详细说明;
- 用
MUST/NEVER标记强制约束。
shmem-ops-dev/SKILL.md 的「核心原则」章节是该模板的完整实例:编号 0–9,覆盖中文写作、阶段串行、子技能执行、阶段门控、设计驱动编码、先 correctness 再 performance、性能优化上限 5 轮、结果可视化、目录结构强制、不静默修改核心库等 10 条,且第 5 条中出现了标准的**MUST**加粗约束词。
4.4 子 Skill 清单(编排型 skill)
## 可用子 Skill 清单 | Skill | 路径 | 职责 | | --- | --- | --- | | `shmem-ops-design` | `shmem-ops-design/SKILL.md` | 将需求转化为 design.md |该表只出现在编排型 Skill 中。shmem-ops-dev/SKILL.md 的清单列出了 9 个子 Skill,路径列使用 Skill 树内相对路径,职责列一句话概括——正是规范要求的三列表格形态。
4.5 工作流总览
规范模板(ASCII 流程图):
## 工作流总览 Phase 0 Phase 1 Phase 2 Phase 3 Phase 4 Phase 5 Phase 5.5 Phase 6 需求环境确认 ──▶ 设计文档 ──▶ 用例生成 ──▶ 代码生成 ──▶ 编译+正确性 ──▶ 代码走读 ──▶ Torch 接入 ──▶ 性能采集 — design testcase-gen code-gen compile-debug code-review torch-bind performance-eval 输入: 算子需求 + 环境 输出: 可交付算子 + Torch 扩展 + 测试 + 性能报告绘图规则:
- 使用 ASCII 字符绘制(
──▶、→、├─、└─); - 上方标注 Phase 编号,下方标注 skill 名称;
- 首尾标注输入/输出。
shmem-ops-dev/SKILL.md 的「工作流总览」在此模板基础上增加了 Phase 6 之后的分支(达标 / 未达标 +performance_auto_optim的三条走向),是"条件性子阶段"场景下的扩展画法。
4.6 反模式清单
规范模板:
## 反模式清单(NEVER DO THESE) - ❌ 跳过设计阶段直接写代码 - ❌ correctness 失败时做性能优化 - ❌ 编造硬件测试或 profiler 结果规则:固定使用❌前缀;每条简洁明确,不加编号。
仓库中的实践更进一步:shmem-ops-dev/SKILL.md 将反模式清单按 Phase 分组(Phase 0 / 1 / 2 / 3 / 4 / 5.5 / 6 / 6.5 / 通用),例如 Phase 4 下有"❌ correctness 失败时做性能优化"、"❌scripts/run.sh写死IPPORT=tcp://127.0.0.1:27010…(典型:address in use→ 输出全 0 假 FAIL)等条目。分组本身不违背"不加编号"的规则,反而让每个阶段的禁止项就近可查。
4.7 Phase 阶段定义
规范模板:
## Phase N:阶段名称 **调用 Skill**:`skill-name`(或 `—` 表示无需调用) ### 执行内容 1. 步骤一 2. 步骤二 3. 步骤三 ### 检查点 - [ ] 检查项一 - [ ] 检查项二 - [ ] 检查项三 **全部通过 → 进入 Phase N+1**要点:
- 每个 Phase 独占一个 H2 章节;
**调用 Skill**明确声明依赖;- 执行内容放在代码块或编号列表中;
- 检查点使用
- [ ]复选框格式; - 末尾用加粗声明跳转条件;
- Phase 之间使用
---水平线分隔。
shmem-ops-dev/SKILL.md 的 Phase 0 是该模板的完整落地:**调用 Skill**:—(编排器自处理)→「执行内容」编号步骤 →「MUST检查」复选框清单 →「全部通过 → 进入 Phase 1」,且各 Phase 之间以---分隔。
4.8 阶段间数据流
规范模板:
## 阶段间数据流 Phase 0 输出 Phase 1 输入 op_name、env 确认 ────▶ 需求语义、SoC、dtype Phase 1 输出 Phase 2 输入 design.md (完整) ────▶ correctness contractshmem-ops-dev/SKILL.md 的「阶段间数据流」把该箭头图展开到 Phase 0→6 的每一对相邻阶段,并额外补了「状态跟踪表」(| Phase | 前置条件 | 调用 Skill | 关键产出物 |)和「错误恢复」的中断恢复矩阵(| 检测条件 | 判定阶段 | 恢复动作 |),对应标准章节顺序中的第 9、10 项。
4.9 参考文档索引(分析型 / 执行型 skill)
规范模板:
## Reference Files — When to Read | File | When to read | What it contains | |------|-------------|------------------| | `references/file.md` | **Always — read first** | 数据格式定义... | | `references/schema.json` | When producing output | 输出 JSON schema |规则:用表格列出每个参考文件;标注阅读时机(Always必读 / 条件触发);简述内容用途。
shmem-ops-compile-debug/SKILL.md 的「必读资料」表是这一模式的真实实例,且时机列更细粒度,例如:
| 文件 | 阅读时机 | 用途 |
|---|---|---|
references/build-test.md | 始终 | 两种构建模式的完整命令、CMake 模板、运行脚本、产物位置 |
references/cann-env-resolution.md | Phase 0 / 首次 build 前 | CANN 路径确认:默认 vs 自定义,禁止静默 fallback |
references/dump-debug.md | Device 数据/同步异常时 | AscendC DumpTensor/printf 调测 API 使用方法 |
5. 约束语言规范
5.1 强度等级
| 标记词 | 强度 | 含义 | 用法示例 |
|---|---|---|---|
| MUST / MANDATORY | 最强 | 违反即失败 | **MUST** 调用对应子 skill |
| NEVER / FORBIDDEN | 最强(禁止) | 绝对不允许 | **NEVER** 跳过设计阶段 |
| SHOULD / RECOMMENDED | 推荐 | 除非有充分理由 | SHOULD 包含中等规模 case |
| MAY / OPTIONAL | 可选 | 读者自行判断 | MAY 使用高级优化选项 |
5.2 格式约定
- 约束词全大写并加粗:
**MUST**、**NEVER**; - 与常规描述文字区分,保持视觉醒目;
- 在核心原则、执行内容、检查点中均可使用。
这一约定在 shmem-ops-dev/SKILL.md 中贯彻得非常严格,例如 Phase 0 门禁中「MUST NOT调用任何工具(例外:只读环境检测)」、「MUST上溯记录skills_root」等。
5.3 平台中立(skill 文档 MUST)
Skill 与 reference 文档须平台/产品中立,便于在不同 IDE、助手或大模型下复用:
| 禁止写入 | 改用 |
|---|---|
| 特定 IDE/助手产品名 | 「对话中 @ 引用本 skill」「编排器」「助手」 |
| 大模型/厂商具体名称 | 「编排器」「子 skill」或不提及 |
| 真实人名、工号、私有容器名 | 占位符:shmem_test、${SHMEM_REPO}、/home/<用户名>/ |
Skill 目录下的可执行脚本文件(.sh、.py等作为 skill 产物) | 仅用Markdown代码段;见 env-setup.snippet.md 等 |
| 引用 SHMEM 仓原生路径 | `${SHMEM_REPO}/examples/...`、`scripts/build.sh`、`install/set_env.sh` |
| 引用 custom-ops 交付物路径 | 允许写`custom-ops/scripts/build.sh`等,但MUST注明其为 skill 生成、非 upstream;规范以 skill md 为准 |
| 引用不存在的 perf 封装脚本名 | perf-workflow.md |
| 产品专有 API 名作为唯一表述 | 并列「结构化 intake 表单(或平台等价提问 UI)」;文件名可保留askquestion-template.md |
5.4 仓内docs/只读(MUST)
${SHMEM_REPO}/docs/为官方文档,AgentNEVER修改或向其中追加 skill 摘要;- 技能侧补充、索引、排障摘要写在 skill 树内(如 shmem-repo-docs-index.md、log-debug.md)。
shmem-ops-compile-debug/SKILL.md 在「输入契约」一节也重复了这条约束:「仓内${SHMEM_REPO}/docs/只读;读前MUST定位SHMEM_REPO,NEVER向docs/追加或修改内容」。
5.5 Skill 与 SHMEM 仓路径分离(MUST)
Skill不一定安装在 SHMEM 仓库内,路径引用因此分为两类:
| 引用目标 | 写法 | 禁止 |
|---|---|---|
| Skill 树内文档 | 相对路径;仅.md文件 | 在.agents/skills/下新增.sh/.py等 skill 附属脚本 |
| SHMEM 仓原生 | `${SHMEM_REPO}/docs/`、`examples/`、`scripts/build.sh`、`install/set_env.sh` | 当作 custom-ops 交付物 |
| custom-ops 交付物(skill 生成) | 规范见 custom-ops-entrypoints.md 等 md 代码段;磁盘路径`custom-ops/...`可 Read 核对 | 当作 upstream 官方目录;裸克隆未必存在 |
| 需在 skill 内展开的脚本逻辑 | Markdown 代码段(如 env-setup.snippet.md) | 在 skill 目录放置可source的.sh文件 |
散文examples/... | 视为${SHMEM_REPO}/examples/... | 跳过仓库定位规则 |
规范全文见 shmem-repo-resolution.md,仓内文档索引见 shmem-repo-docs-index.md。技能全景文档 也在「仓内文档约定」一节重申了同一规则:读${SHMEM_REPO}/docs/、examples/等 SHMEM 原生路径前MUST先定位仓库并区分 custom-ops 交付物,docs/只读。
6. 排版与格式规范
6.1 标题层级
| 层级 | 用途 | 示例 |
|---|---|---|
#H1 | 全文标题(唯一) | # SHMEM 算子端到端开发编排 |
##H2 | 主要章节 | ## Phase 1:设计文档 |
###H3 | 子章节 | ### 执行内容/### 检查点 |
####H4 | 细分条目 | #### CANN 环境 |
# SHMEM 算子端到端开发编排正是 shmem-ops-dev/SKILL.md 的 H1;#### CANN 环境则是其 Phase 0「Step 0.1:环境确认」中的真实 H4 条目。
6.2 强调标记
| 格式 | 用途 | 示例 |
|---|---|---|
**加粗** | 关键规则、约束词、重要概念 | **MUST** 调用子 skill |
`行内代码` | 文件名、命令、变量名、skill 名 | `shmem-ops-design` |
❌ | 反模式条目前缀 | ❌ 跳过设计阶段 |
✅ | 校验通过标记 | ✅ 校验点:输入完整 |
📝 | 反馈/备注标记 | 📝 反馈:信息收集完成 |
- [ ] | 检查点复选框 | - [ ] 编译成功 |
6.3 表格
表格是结构化信息的主要载体,常见类型:
- 子 Skill 清单表:
| Skill | 路径 | 职责 | - 决策路由表:
| 条件 | 判定 | 动作 | - 参考文件表:
| 文件 | 阅读时机 | 内容 | - 约束表:
| 约束项 | 值 | 说明 | - 快速参考表:
| 场景 | 方法 | 适用条件 |
表格要求:表头简洁(2~4 列为宜);单元格内容 <100 字符;相关行紧邻排列。
6.4 代码块
# Shell 命令 # 见 custom-ops-entrypoints.md / perf-workflow.md# Python 脚本示例 import numpy as npPhase 0 ──▶ Phase 1 ──▶ Phase 2 (无语言标记的代码块用于 ASCII 流程图)【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库,基于OpenSHMEM 标准协议,实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考