بنقرة واحدة
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>)