원클릭으로
shmem-ops-compile-debug
编译、运行和调试基于 SHMEM 的算子。关键词:基于SHMEM编译调试、compile、debug、build、运行、失败定位。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
编译、运行和调试基于 SHMEM 的算子。关键词:基于SHMEM编译调试、compile、debug、build、运行、失败定位。
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正确性验证、correctness、测试执行、精度验证。
基于 SHMEM 设计通信算子与通算融合算子,将需求转化为 design.md。关键词:基于SHMEM算子设计、算子设计、设计文档、design、Canonical DSL、capability mapping。
基于 SHMEM 的通信算子与通算融合算子端到端开发编排器,串联需求→设计→代码→编译→验证→性能全流程。关键词:基于SHMEM算子开发、端到端开发、算子开发、编排、工作流、通信算子、通算融合。
基于 SHMEM 的算子性能采集、baseline 对比、瓶颈分析和性能报告生成。关键词:基于SHMEM性能评估、性能采集、performance、baseline、bandwidth、性能报告。
| name | shmem-ops-compile-debug |
| description | 编译、运行和调试基于 SHMEM 的算子。关键词:基于SHMEM编译调试、compile、debug、build、运行、失败定位。 |
Skill类型:构建与调试型(编译、运行、失败分类、修复)
中文写作要求:输出记录和失败分类描述使用中文。仅命令、错误信息、日志等技术输出保留英文原文。
本 skill 负责 SHMEM 算子的构建、运行、失败分类和调试闭环。不重新设计算子,也不替代 shmem-ops-code-gen 生成代码。
| 文件 | 阅读时机 | 用途 |
|---|---|---|
| references/build-test.md | 始终 | 两种构建模式的完整命令、CMake 模板、运行脚本、产物位置 |
| ../shmem-ops-dev/references/docker-exec-contract.md | 用户指定 Docker 时 | 全部 build/run/perf 必须 docker exec,禁止宿主机裸跑 |
| references/cann-env-resolution.md | Phase 0 / 首次 build 前 | CANN 路径确认:默认 vs 自定义,禁止静默 fallback |
| references/internal-api-boundary.md | 禁止 aclshmemi_*、deprecated API、quiet 误用 | 生成 kernel / 走读前 |
| references/env-setup.snippet.md | 生成/运行 scripts/run.sh 时 | setup_shmem_runtime_env 统一环境参考;MUST 将 snippet 内函数内联进 run.sh,禁止 source skill md 或假设 custom-ops/scripts/env-setup.snippet.md 文件存在 |
| references/debug.md | 失败定位时 | 失败分类、调试开关、通信同步问题排查 |
| references/log-debug.md | 初始化/运行时失败时 | SHMEM 日志(摘要);真源 ${SHMEM_REPO}/docs/debug/log_debug.md |
| references/shmem-repo-docs-index.md | 生成/调试/优化时 | 仓内 docs/、install/shmem/include/、examples 参考索引 |
| ../shmem-ops-dev/references/shmem-repo-resolution.md | 读仓内文件前 | 定位 SHMEM_REPO;禁止 skill 相对路径链到仓 |
| references/dump-debug.md | Device 数据/同步异常时 | AscendC DumpTensor/printf 调测 API 使用方法 |
必要时在定位 SHMEM_REPO 后 Read:${SHMEM_REPO}/README.md、bash scripts/build.sh -examples、docs/compilation_build_guide.md、examples/CMakeLists.txt 及相近 example 的 CMakeLists.txt/scripts/run.sh(索引见 shmem-repo-docs-index)。真实代码优先于记忆。
调用本 skill 前应尽量提供:
shmem_repo:SHMEM 源码路径(见 shmem-repo-resolution.md 定位规则)cann_env:用户指定的 CANN set_env.sh 路径python_cmd 或 python_env:Python 可执行文件或环境激活命令op_dir:算子工程目录build_mode:independent_project(默认)或 in_tree_example(须 Phase 0 用户明确要求)design.md 中的 compile/test/perf contractip_port、engine、dtype/shape case缺少环境信息时先向用户询问,不直接停止。Fresh Session MUST 先完成 ../shmem-ops-dev/references/intake-checklist.md 五项 AskQuestion,再执行编译/调试。CANN 未确认时 禁止 静默 source /usr/local/Ascend/...。
仓内 ${SHMEM_REPO}/docs/ 只读;读前 MUST 定位 SHMEM_REPO(shmem-repo-resolution.md),NEVER 向 docs/ 追加或修改内容。
步骤 1 判断构建模式
步骤 2 环境预检查
步骤 3 执行构建
步骤 4 运行与正确性测试
步骤 5 失败分类与修复
步骤 6 输出可复现记录
| 模式 | 判断规则 | 默认 |
|---|---|---|
independent_project | op_dir 位于 custom-ops/<op_name>/ 或 design build_mode=independent_project | 是 |
in_tree_example | op_dir 位于 examples/<op_name>/ 且用户 Phase 0 明确要求 | 否 |
两种模式不能混用。详细的 CMake 模板和命令见 build-test.md §2/§3。
按 build-test.md §1 检查:
ASCEND_HOME_PATH、bisheng)任一项缺失时先询问用户补齐,不直接停止。
按 build-test.md 选择对应模式的构建命令。记录 workdir、command、target、返回码和首个有效错误。
仅执行 2-PE 小数据 smoke case,验证 init / malloc / launch / finalize 能跑通。全量 case matrix 执行完全交给 shmem-ops-correctness-eval,compile-debug 不再重复跑主 dtype/shape、tail/chunk、repeats、gap case。
失败后先定位首个有效错误(见 debug.md §1),再分类:
| 类型 | 典型信号 | 处理 |
|---|---|---|
| compile | 头文件缺失、模板实例化失败、Device/Host API 用错 | 回 shmem-ops-code-gen 修代码或 CMake |
| link | undefined reference、找不到 .so | 回 shmem-ops-code-gen 修 CMakeLists.txt 或链接配置 |
| launch | kernel launch 参数非法、FFTS 配置错 | 回 shmem-ops-code-gen 修 Host 参数、launch wrapper |
| runtime | init/bootstrap/ACL/SHMEM 返回错误 | 修环境、PE 参数、初始化配置(本 skill 自修) |
| runtime | 输出 bin 全 0、golden 对比 FAIL,但进程打印 SUCCESS | 先查 shmem 日志(端口占用、Memory Heap Not Initialized),见 debug.md §4.1 |
| correctness | 程序运行但输出错误 | 回 shmem-ops-code-gen 修代码;若 contract 错回 design |
| environment | 设备/依赖/权限不可用 | 询问用户补齐;仍不可用时标记阻塞 |
修复策略:
.cpp/.h/CMakeLists.txt)shmem-ops-code-gen,由 code-gen 完成代码修复后重新调用本 skillshmem-ops-design 修订)返回给 shmem-ops-dev 或用户时必须包含:
shmem_repo、op_dir、target不要只说"编译失败"或"测试通过";必须保留可复现命令和关键结果。
ASCEND_HOME_PATH 未设置时静默使用 /usr/local/Ascend/ascend-toolkit/set_env.sh(见 cann-env-resolution.md)scripts/run.sh 只设 LD_LIBRARY_PATH=build/lib,不 source ${SHMEM_REPO}/install/set_env.sh`scripts/run.sh 写死 IPPORT / SHMEM_UID_SESSION_ID 且不调用 setup_shmem_dynamic_endpoints(端口占用 → shmem init 失败 → 输出全 0)-examples 却期望 make <op_name> 或 build/bin/<op_name> 存在scripts/run.shbash scripts/build.sh -examples 失败后直接改全局 CMake,未定位目标 exampleexamples/(默认 custom-ops/)cmake -S ... -B ... 作为 custom-ops 首选编译方式(用 custom-ops/scripts/build.sh)cd custom-ops/<op> && bash scripts/run.sh(用 custom-ops/scripts/run.sh <op>)