원클릭으로
shmem-ops-design
基于 SHMEM 设计通信算子与通算融合算子,将需求转化为 design.md。关键词:基于SHMEM算子设计、算子设计、设计文档、design、Canonical DSL、capability mapping。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
基于 SHMEM 设计通信算子与通算融合算子,将需求转化为 design.md。关键词:基于SHMEM算子设计、算子设计、设计文档、design、Canonical DSL、capability mapping。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
根据 design.md 生成基于 SHMEM 的算子代码、CMake、README 和目录结构。关键词:基于SHMEM代码生成、算子实现、code-gen、kernel、CMake。
基于 SHMEM 的算子实现与设计一致性走读,生成 review-report.md。关键词:基于SHMEM代码走读、code review、design review、一致性检查、走读。
编译、运行和调试基于 SHMEM 的算子。关键词:基于SHMEM编译调试、compile、debug、build、运行、失败定位。
执行基于 SHMEM 的算子正确性契约验证并生成报告。关键词:基于SHMEM正确性验证、correctness、测试执行、精度验证。
基于 SHMEM 的通信算子与通算融合算子端到端开发编排器,串联需求→设计→代码→编译→验证→性能全流程。关键词:基于SHMEM算子开发、端到端开发、算子开发、编排、工作流、通信算子、通算融合。
基于 SHMEM 的算子性能采集、baseline 对比、瓶颈分析和性能报告生成。关键词:基于SHMEM性能评估、性能采集、performance、baseline、bandwidth、性能报告。
| name | shmem-ops-design |
| description | 基于 SHMEM 设计通信算子与通算融合算子,将需求转化为 design.md。关键词:基于SHMEM算子设计、算子设计、设计文档、design、Canonical DSL、capability mapping。 |
Skill类型:文档生成型(需求分析 → 设计文档输出)
中文写作要求:design.md 必须使用中文撰写。仅 API 名称、代码片段、变量名、DSL 字段名等技术术语保留英文原文。
将用户需求转化为可被 shmem-ops-code-gen 直接消费的 design.md。本 skill 只产出设计文档,不生成实现代码。
设计前必须读取本 skill 的 reference:
| 文件 | 阅读时机 | 用途 |
|---|---|---|
| references/op-dsl.md | 始终 — 最先读取 | Canonical DSL 字段、归一化规则和最小要求 |
| references/capacity.md | 始终 | SHMEM 已有能力、功能域和边界 |
| references/core-allocation.md | 始终 | 分核、phase、chunk、lane、通算 overlap 策略 |
| references/design-template.md | 始终 | design.md 输出模板 |
| references/implementation-boundary.md | 始终 | Device/Host/Python 实现边界和禁止项 |
| references/hardware-architecture.md | 始终 | AI Core、存储层次、传输引擎、同步机制 |
| ../shmem-ops-dev/references/intake-checklist.md | 设计前 | phase0_intake 字段定义(op_name、dtype、build_mode、torch_required 等) |
| ../shmem-ops-dev/references/shmem-repo-resolution.md | 读仓内文件前 | 定位 SHMEM_REPO |
当 API 名、能力边界、示例路径或约束不明确时,先定位 SHMEM_REPO(shmem-repo-resolution.md),再检查 ${SHMEM_REPO}/include/、src/、examples/、tests/、docs/ 下的真实代码和文档。
phase0_intake 中读取 op_name 和 dtype/dtypes;未读取前不得进入 Canonical DSL、能力映射或执行方案设计编排器在 Phase 0 已通过五项 AskQuestion 确认以下信息,记录在 phase0_intake 中(字段定义见 intake-checklist.md)。本 skill MUST 直接从 phase0_intake 读取,禁止就已确认项向用户再次提问。
| 字段 | 来源 | 用途 |
|---|---|---|
op_name | phase0_intake | 目录名、文件名前缀、kernel/target 命名 |
dtype | Phase 0 Step 0.2 需求收集 | 输入/输出/中间计算 dtype |
build_mode | phase0_intake | meta.build_mode |
torch_required | phase0_intake | meta.torch_required |
performance_required | phase0_intake | meta.performance_required |
performance_auto_optim | phase0_intake | meta.performance_auto_optim |
shmem_repo | phase0_intake | 仓内文件定位 |
docker_container | phase0_intake | 是否 docker exec |
| 网络拓扑 | Phase 0 Step 0.2 需求收集 | SoC 型号 → 推断默认拓扑(如 910B3 → 8 卡 full-mesh) |
读取后 MUST 在 design.md 的 source.user_confirmations 中记录各字段值,来源标注 phase0_intake。
design.md 中不得留下阻塞的 dtype/open name/拓扑问题;否则不能交给 shmem-ops-code-gen。
把自然语言、伪代码、异构参考实现统一成 Canonical DSL。
用户提供伪代码时,MUST 完整通读并逐段拆解,NEVER 跳过或粗略浏览后直接照搬:
aclshmem_*_get(MTE/SDMA/RDMA 择一,设计阶段不需要锁定具体引擎)aclshmem_*_put_nbiphase0_intake 中读取的 op_name、dtype 和网络拓扑,并抽取 op_kind、target SoC、scope、shape、attrs、输出可见性。meta.op_kind 判定规则见 op-dsl §3,并决定 code-gen 模板:fused_compute_comm → fused-compute GUIDE,其余 → communication 子模板。DSL 必须显式包含:interface、semantics、topology、memory、schedule、correctness、performance。
DSL topology 必须写明:
deployment:intra_node(单服务器内)或 inter_node(跨服务器)intra_node_topology:full-mesh / switch / ring(来自 phase0_intake)intra_node_link_bandwidth_gbps:单条链路单向带宽(如 28)intra_node_links_per_npu:每 NPU 的 HCCS 链路数(如 7)inter_node_fabric(RoCE / IB)和 inter_node_bandwidth_gbps目标不是列 API,而是判断每个需求点如何落到 SHMEM 现有能力。
对每个需求点给出唯一分类:
| 分类 | 含义 | 必填信息 |
|---|---|---|
| 可复用 | 已有 API、模板或 example 可直接使用 | 文件/API/example 路径,以及为什么匹配 |
| 需适配 | 已有能力基本匹配,但需要参数化、封装或调度调整 | 适配点、约束和风险 |
| 需新实现 | 现有能力不能覆盖 | 缺口、候选设计、fallback 和验证方式 |
能力映射至少覆盖六类:
design.md 必须包含 Capability Mapping & Gap Analysis 合并表。凡是”需新实现”,都必须在同行写明 gap 原因、设计方案、验证方式和 correctness/performance risk。
在 DSL 的 schedule、correctness 和 performance 中填写完整执行方案。
设计前必须读取 references/core-allocation.md,并优先复用其中总结的分核模式(A/B/C)、examples 分核经验和动态 tiling 参数。
MUST 在进入 core_partition 设计前,完成拓扑并行度分析:
topology:明确 intra_node_topology(full-mesh/switch/ring)、intra_node_links_per_npu、intra_node_link_bandwidth_gbpsfor peer in range(n_pes-1) 每次只 get_nbi 一个),必须显式标注为瓶颈并在 Design Review 中记录原因DSL schedule 按以下顺序设计(先拓扑分析 → 分核 → 再 tiling → 最后 phases):
core_partition(最先设计):
mode:引用 core-allocation.md 的模式(A 全员协作 / B 按 PE 分组 / C1 生产者消费者 / C2 维度分组 / C3 引擎分组 / CoC 通算融合)groups:每组核的编号范围、职责、使用的数据接口。职责描述必须精确到以下三要素,禁止笼统概括:
offset 和 len 公式(及尾块处理方式,参考 core-allocation.md §6)for peer in [my_pe, (my_pe+1) % n_pes, ...])pe_idx = aiv_idx / core_per_rank)填写上述三要素overlap:组间如何重叠(并行 / 2-stage pipeline / 无)sync_between_groups:组间同步方式(cross-core flag / barrier / signal-wait / quiet)rationale:引用 core-allocation.md 或 shmem/examples 路径cross_pe_dataplane:跨 PE 数据面接口(必须是 aclshmem_* 或 aclshmemx_*)tiling(分核之后设计):每组核的 tile、chunk、tail 处理方式
phases(最后设计):device 侧大体执行流程,每个 phase 仅需 name + action(一句话中文描述),不需要写 input/output/dependency/sync 等微观细节
DSL correctness.invariants 每项必须含 invariant、test_method、case。
DSL performance 必须填写 baseline_search、baseline_target、min_scale。
baseline_search 必须记录的搜索步骤(参考 ../shmem-ops-performance-eval/references/baseline-selection.md 的 Baseline 选择决策树):
"metric_only" 并记录搜索过程常见遗漏:HCCL 库包含 AllToAll 算子(
HcclAlltoAll)。设计时不要误认为这些算子没有 baseline。
设计文档必须明确 Device kernel、main.cpp、Host helper、Python scripts 四层职责边界,且 kernel 默认 unified single path(见 references/implementation-boundary.md)。
schedule.core_partition 必须说明 Device kernel 的分核策略,不能写成"Host 侧执行"。
按 references/design-template.md 输出到算子目录的 docs/design.md(docs/ 目录若不存在则创建)。如果用户指定路径,写到指定路径;否则写到当前算子/工程目录的 docs/design.md,无法判断时写到当前 workspace 的 docs/design.md。不得将 design.md 放置在算子根目录。
输出前必须完成设计走读,走读项见 references/design-template.md section 5。走读失败时先修订 DSL 的 schedule、correctness 或 performance 字段,再输出 design.md。
描述性字段使用中文,API/dtype/字段名/代码标识符使用英语。详见 references/op-dsl.md 的语言使用规则。
design.md 必须包含:
shmem-ops-code-genSection 5 不可省略。缺少此 section 的 design.md 不能交给 shmem-ops-code-gen。
输出 design.md 前,逐项检查以下必须存在的结构块:
| 结构块 | 标识 | 必须包含 |
|---|---|---|
| Canonical DSL yaml | ```yaml 代码块 | interface、semantics、topology(含 deployment/拓扑类型/链路带宽)、memory、schedule(含 core_partition/tiling/phases)、correctness(含 invariants/case_matrix)、performance(含 baseline_search/baseline_target/min_scale) |
| Capability Mapping | 六列表格 | 覆盖六个能力域:lifecycle/memory/transport/sync/compute/scheduler(各域通过 schedule.core_partition、memory、semantics 等 DSL 字段表达,sync 和 transport 不设独立 DSL section) |
| Design Review | section 5 标题 | 12 项检查表,逐项 pass/fail |
| Compile/Test Contract | contract section | cann_env、build_mode、test_command |
| Handoff Checklist | section 7 | 逐项检查 |
任一结构块缺失 → 补齐后再输出。不得以"简化版"、"benchmark 不需要"等理由省略。
必须用 fenced yaml block 输出完整 DSL,不能只用 prose 概括。DSL 是设计的唯一结构化信息源:接口、语义、拓扑、内存、调度(core_partition/tiling/phases)、正确性(invariants 含 test_method/case、case_matrix 含 stress case)、性能(含 baseline_search/baseline_target/min_scale)全部在 DSL 中定义,不在 DSL 之外另设重复的 prose 表格。
必须包含如下列:
| Requirement | SHMEM capability/source | Classification | Adaptation / Gap | Risk |
|---|
Classification 只能是 可复用、需适配、需新实现。"需新实现"行必须在 Adaptation / Gap 列写明 gap 原因、设计方案和验证方式。
映射至少覆盖六个能力域。sync 和 transport 在 DSL 中通过 schedule.core_partition.sync_between_groups / cross_pe_dataplane 表达,不设独立顶层 section。
design.md 必须包含 Capability Mapping & Gap Analysis 合并表。凡是"需新实现",都必须在同行写明 gap 原因、设计方案、验证方式和 correctness/performance risk。
按 references/design-template.md section 7 的 Handoff Checklist 逐项检查。额外要求:
correctness.case_matrix 和 performance.target_cases 含中等规模 case(集合通信 256MB 级,计算/通算融合 hidden size 上千级),或标记未满足。schedule.core_partition.rationale 已参考 references/core-allocation.md,或说明不适用原因。schedule.core_partition.groups[].role 包含精确的 AIV→数据区间映射公式(含尾块处理)、AIV→PE 映射公式(或迭代顺序)、self/remote 路径差异,不可仅为模糊描述。op_name、dtype、网络拓扑、meta.torch_required、meta.performance_required、meta.performance_auto_optim 均已从 phase0_intake 读取topology 含 deployment、拓扑类型、链路带宽(来自 phase0_intake)schedule 默认 unified single path;无 profiling ≥5% 收益证据则不在设计中规划 size 分支(见 implementation-boundary.md)全部通过 → 可交给 shmem-ops-code-gen
phase0_intake 读取 op_name 或 dtype 就进入设计phase0_intake 中 op_name 或 dtype 缺失时自行脑补而非报告编排器assumptions 替代从 phase0_intake 读取DataCopy 直接读写远端 PE 地址core_partition 写"后续优化再并行"或"Host 侧执行"groups.role 只写模糊描述如"所有 AIV 并行处理""每个 AIV 负责连续区间",不给出 AIV 编号→数据范围→PE 映射的具体公式groups.role 不区分 self PE 本地快路径和 remote PE 远路径main.cpp 设计为 fork/spawn 多 PE 或承载复杂逻辑performance.baseline 写 "none" 或留空不记录搜索过程performance.baseline 未逐步排查 HCCL 清单、aclnn 清单就直接写 "metric_only"performance.metric 缺少 kernel_bus_bandwidth_GBps(Phase 6 达标主指标)performance.metric 只写 latency_us 不包含 kernel_bus_bandwidth_GBpsperformance.metric 不区分 e2e_latency_us 和 kernel_latency_us(通信算子必须双指标)