本项目为开发者提供故障定位工具,包含故障信息收集,软硬件信息展示,AI core error报错分析等能力,提升故障问题定位效率,文档可在昇腾社区搜索“故障处理简介”(选择社区版)。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: gitcode-pr skill 回复行内评论改走 v5 discussions 接口 Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !464 merge fix/gitcode-pr-skill-v5-inline-reply into master fix: gitcode-pr skill 回复行内评论改走 v5 discussions 接口 Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 两部分改动,都是把实测结论固化进 gitcode-pr skill,避免后续重复踩同一个坑: 1. **reply-review 迁到 v5 接口**:GitCode 已禁用 /api/v4 **写接口**(POST 返回 403,body 当前 /api/v4 接口已禁用,请使用官方文档中的 /api/v5 接口;**读接口 GET 仍返回 200**,见下方「三」的复测更正),该子命令(回复评审意见到对应线程)随之失效。 2. **补入两条编写文档时的强制约定**:中英文档同步、锚点按 GitCode 规则生成。后者源于本次实测发现本仓 README 里十余处锚点在 GitCode 上全部点不动。 ## 一、reply-review 迁到 v5 **实测验证**(PR #443 上真实调用,测试评论已删除): - POST /api/v5/repos/{owner}/{repo}/pulls/{pr}/discussions/{discussion_id}/comments → HTTP 201。 - 对 diff_comment(行内)与 pr_comment(总结)**两类评论都能挂进对应线程**:回查 discussion_id 均与目标一致;回复行内评论时 comment_type=DiffNote。 - 脚本端到端验证:{"posted": true, "note_id": 182796778, "comment_type": "DiffNote", "in_thread": true},再用 delete-comment 清理成功(200 → 404)。 **scripts/pr_ops.py** - cmd_reply_review:由 v4 merge_requests/<pr>/discussions/<id>/notes 改为 v5 pulls/<pr>/discussions/<id>/comments(复用既有 v5_post 助手,不再手写 requests 调用)。 - **修一个取值 bug**:该接口响应中 id 是 **discussion_id(hex 字符串)**、note_id 是**数字评论 id**,而回查与删除端点 /pulls/comments/<X> 只认数字 note_id(传 hex 报 400 note_id, number required)。原代码取 note.get("id") 拿到 hex,导致回查必然失败、in_thread 恒为 null;现改取 note_id。 - 输出新增 comment_type 字段,便于确认回复落点类型。 **SKILL.md** - 能力速查表补入此前缺失的 reply-review 行;review 标注「当前不可用(依赖已禁用的 v4)」。 - **更正旧结论**:原文称 pr_comment 类型「无法线程回复/挂不上线程」,实测两类均可挂,已改写;同时说明总结类评审仍推荐 reply 引用回复——因其为「一条评论回应整轮多条意见」,引用块能保留逐条对应关系。 - 5.3 节改写为 v5 接口,补充上述 id / note_id 语义差异。 - 5.2 节说明**新发起**行内评论目前无可用接口(v4 已禁用;v5 发评论虽接受 path/line 却静默忽略、落成普通评论),替代做法是用 reply 发普通评论并在正文注明 文件:行号。 - trigger 节说明 v4 分支恒 403、实际生效路径恒为 v5。 ## 二、文档编写约定(「提交前本地检查」新增两条) **改动文档必须中英文同步**:本仓文档成对维护(README.md↔README_en.md、examples/README.md↔examples/README_en.md、docs/zh/**↔docs/en/** 等七对)。附可直接执行的检查命令,按**整个 PR 范围**(已提交 + 暂存 + 工作区)判断,避免把「已提交在前一个 commit 里的那一版」误报为未同步。 **锚点须同时满足两个判定方**:GitCode 渲染器(决定网页能否跳转)与流水线 StaticCheck_link_validity(决定门禁)。二者对**含 emoji** 和**含 / ** 的标题给出的 slug 不同,这两类标题没有两边皆可的写法: | 标题形态 | GitCode 渲染 | 流水线期望 | | | --- | --- | --- | --- | | ## 🔧 源码编译 | #源码编译 | #-源码编译 | ⚠️ 冲突 | | ## asys(故障信息收集 / 诊断) | #asys故障信息收集-诊断 | #asys故障信息收集--诊断 | ⚠️ 冲突 | | ### 安装(纯文字) | #安装 | 同 | ✅ 一致 | | ## msprof(性能调优)(有括号无 emoji 无 /) | #msprof性能调优 | 同 | ✅ 一致 | 依据是门禁产物 link_validity_check.csv 的逐条对照:README.md 第 147–149 行同时含 #源码编译 与 #安装,**只有前者被拒**。 写入 skill 的处理方式(按标题形态分三类,均为正向动作): 1. 纯文字或仅含括号的标题 → 直接写锚点。 2. 含 / → 分隔符改「与」/and,标题即脱离冲突形态,深链照常写。 3. 含 emoji(本仓 README*.md 的 h2 全部如此)→ **保留 h2 的 emoji 不动,在其下按内容拆出无 emoji 的 h3,锚点指向 h3**。既不动仓库既有观感,又让链接精确落到子章节而非笼统指向大节。 并给出自查命令(CSV 公开、无需 token): bash curl -sL "https://ascend-ci.obs.cn-north-4.myhuaweicloud.com/<repo>/package/<PR>/link_validity_check.csv" > 该约定已在 #443 实地应用:源码编译 拆出「加载环境变量 / 执行编译 / 编译参数与依赖说明」,安装与验证 沿用既有「安装 / 验证」,锚点分别落到语义最贴近的 h3 上。 ## 三、处理 @newstarzj 检视意见(7 条,commit 8ddac3d) 7 条全部处理,逐条已在对应行内线程回复(in_thread=true)。 | # | 意见 | 处理 | | --- | --- | --- | | 1 | note_id 缺失时 in_thread 静默为 None、仍报 posted:true | 采纳:输出增加 warn 字段 + 实际响应 keys | | 2 | detail=str(data)[:200] 对 dict 截断丢字段 | 采纳:改 detail=data,由 main 统一 JSON 序列化 | | 3 | cmd_review 必然 403 却无友好提示 | 采纳问题、改了实现:把 403 映射为 V4_DISABLED_HINT,而非开头硬 fail | | 4 | 回查失败无诊断信息 | 采纳:并入同一套 warn(附 HTTP 码) | | 5 | v5 新路径无测试覆盖 | 采纳:新增 scripts/test_pr_ops.py(5 例) | | 6 | trigger 先试 v4 属冗余往返 | 采纳:直走 v5,删除孤儿 v4_post_note,via 恒 "v5" | | 7 | 5.1 缺少 pr_comment 选型判据 | 采纳:补判据表(一对一走线程回复,一对多走引用回复) | **第 3 条为何不按建议在开头 fail**:那会让下方实现全部不可达(死代码,且 fetch_diff_refs 随之成孤儿),并把「永久不可用」硬编码进代码——而 v4 禁用是**服务端状态**,几周前尚可用。映射 403 效果等价(调用者同样拿到替代指引),却保留了 position 拼装这块实测知识,v4 写接口若恢复本命令即自愈。 **一处事实更正**(原描述与 SKILL.md 都不准确):不是「任何 v4 请求返回 403」。实测: GET /api/v4/projects/cann%2Foam-tools/merge_requests/464 → 200(完整 PR JSON) POST /api/v4/.../merge_requests/464/discussions → 403 当前 /api/v4 接口已禁用 POST /api/v4/.../merge_requests/464/notes → 403 同上 即**仅写接口(POST)被禁用**。第 3、6 条都以「v4 不可用」为前提,故先验前提再动手;写接口部分成立,两条均采纳,同时把 SKILL.md 内「v4 全废」类表述统一更正为「**写接口**禁用、读仍可用」。 **新增测试**(.claude/ 不在云端 UT_Test 范围——run_tests.sh 只跑 asys/msaicerr/msprof,故定位为改 pr_ops.py 后手动跑的回归测试,命令已写进 SKILL.md): bash python3 -m pytest .claude/skills/gitcode-pr/scripts/test_pr_ops.py -q # 5 passed 覆盖 reply-review 落点判定(正常 / 缺 note_id / 回查失败)、POST 失败时 detail 结构保留、v4 403→指引映射。 **顺带清掉 markdownlint WARNING**:首轮 20 个任务全 SUCCESS、仅 StaticCheck_markdownlint 为 WARNING(不阻断)。取其公开产物 markdownlint.csv 后修掉归属本 PR 的 5 条:MD028(新增引用块与既有引用块相邻产生空行,合并为一个引用块)、MD032(本 PR 改写的列表前补空行)、MD051×3(正文中**示例性**锚点 [源码编译](#执行编译) 被当成真链接,改为行内代码)。该文件内 3 处 MD028、17 处 MD032 属存量、非本 PR 触碰,按仓规未动——CSV 只报了改动区域的那几条,也印证 markdownlint 按增量范围扫描。真正管锚点的 StaticCheck_link_validity 首轮即 SUCCESS。第二轮流水线 20/20 SUCCESS、WARNING 清零。 **本轮真实验证**:7 条回复均经改动后的 reply-review 发出且 in_thread=true;本次 trigger 返回 via: "v5",即第 6 条改动在线上生效。 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 如何测试 在真实 PR 上验证 reply-review(会产生一条评论,测完删除): bash echo "连通性测试" > /tmp/t.md python3 .claude/skills/gitcode-pr/scripts/pr_ops.py reply-review \ --pr <PR> --owner cann --repo oam-tools \ --discussion-id <某条 diff_comment 的 discussion_id> --body-file /tmp/t.md # 期望 in_thread=true、comment_type=DiffNote;再用返回的数字 note_id 清理: python3 .claude/skills/gitcode-pr/scripts/pr_ops.py delete-comment \ --owner cann --repo oam-tools --comment-id <note_id> 静态检查与回归: - python3 -m ruff check .claude/skills/gitcode-pr/scripts/pr_ops.py → All checks passed。 - python3 -m py_compile 通过;pre-commit(OAT / codespell)全过。 - 本地全量 UT:python3 -m pytest test/ut/asys/ test/ut/msaicerr/ -q → 1123 passed。其中 test_compile_op_ascend950.py::test_get_ub_size_not_tbe 为**存量失败**,在未含本改动的干净工作区复跑同样失败,与本 PR 无关(本 PR 不触碰 msaicerr 代码)。msprof gtest 需编译,本地未覆盖,依赖云端 UT_Test。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 本 PR 仅改动 .claude/skills/gitcode-pr/ 下的 skill 定义与脚本,不涉及产品代码与打包内容。 See merge request: cann/oam-tools!464 | 26 天前 | |
ci(asys): 摘除 pre-commit python 钩子屏蔽并修复存量告警 Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !552 merge ci/asys-precommit-lint into master ci(asys): 摘除 pre-commit python 钩子屏蔽并修复存量告警 Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 将 src/asys 与 test/{ut,st}/asys 从 ruff、pylint、bandit、incremental-codecheck 的 exclude 中摘除,使这些目录纳入 pre-commit 门禁,并修复因此暴露的全部存量告警。复刻已落地的 msaicerr 范式(commit 2e60c0a):摘除即真实修复、src 零内联屏蔽。 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 变更内容 ### 配置侧 - 四钩子(ruff/pylint/incremental/bandit)src 块从 src/(asys|msaicerr)/ 删 asys → src/(msaicerr)/(msaicerr 保留,不在本 PR 范围) - 四钩子 test 行从 | test/ 改为 | test/(?!(ut|st)/asys/)(负向前瞻,只摘 asys 测试,其他测试目录保留屏蔽) ### 代码侧修复(src/asys,零 noqa/disable/nosec) - **ruff**: F401 重导出用 __all__(53 项,不删公共 API);F541/F841 真实修复;PLR6301×8 @staticmethod;T201 spinner 改 sys.stdout.write(保 \r 覆写) - **pylint**: W0718 broad-except 收窄为具体异常(ctypes→(OSError, AttributeError, TypeError);文件 I/O→OSError;二进制解析→(OSError, TypeError, IndexError, KeyError));W1514 open 补 encoding='utf-8';W0612/W0613 未用变量/参数;W0622 重定义内建 dir→dir_path;W0603 global 改可变容器;W0212 getattr;W0125 常量条件;W1510 subprocess.run 补 check=False;W1509 preexec_fn→start_new_session=True;W0123 eval→getattr;W0246 删无用 __init__ 委托;W1309/W0611 修生成源 .in/.cmake 模板 - **bandit**: B602 shell=True→[BASH, "-c", cmd] + shell=False(BASH=shutil.which);B605 os.popen→subprocess.run arg list;B307 eval→getattr ### 安全加固(src/asys) - cmd_run.py: check_command 改 shutil.which;run_command/run_cmd_output/run_linux_cmd/real_time_output/popen_run_cmd 去 shell=True 改 [BASH, "-c", cmd] + check=False + try/except 保返回语义 - asys_launch.py: Popen(shell=True) → [BASH, "-c", cmd] + start_new_session=True - asys_profiling.py: subprocess.run(shell=True) → [BASH, "-c", cmd] - ops_collect.py: os.popen(grep)×3 → subprocess.run([GREP, args]) - param_dict.py: eval(f"args.{arg_name}") → getattr(args, arg_name) ### 测试侧修复(test/{ut,st}/asys) - ruff: E402 sys.path/sys.argv 收敛到现有 conftest;F401/F541/F841/F811/E722 修复 - pylint: 文件级 disable pytest 固有写法(protected-access/unused-argument/broad-exception-caught 等);W1514/W1510 真实修复 - bandit: B103 chmod 测试断言用 # nosec 注明;B108 /tmp→tempfile.gettempdir();B602 测试 mock 用 # nosec 注明 - codespell: finsh/Unknow/utiliza/flie 等拼写修复 ### 暴露并修复的真实缺陷 - F811 重复测试 test_asys_config_get_mode(同名函数互相遮蔽,前者从未执行);重命名影子测试后发现其在 VM 上失败(config 命令不可执行),skip 并注明 ### 生成文件根因(chip_handler.py,gitignored) - .in 模板删未用 import os/log_error;ascend910B.cmake rf"910B\d"→r"910B\d"(去掉多余 f 前缀) ## 关联的 Issue 无(独立 PR,参照 msaicerr commit 2e60c0a 范式) ## 如何测试 bash bash build.sh -u --component asys # 本地验证:ruff/pylint/bandit/incremental-codecheck/codespell 五钩子全通过 # UT: asys 596 passed、msaicerr 723 passed/15 skipped(rebase 后含 master 新增用例) # ST 281 passed > 本地未覆盖 msprof gtest(需编译),依赖云端 UT_Test。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 - **已 rebase 到 master 070f767**(PR #533 msaicerr 摘除已合入)。冲突仅 .pre-commit-config.yaml,两侧意图正交、按叠加解决:src/ 屏蔽块两组件均已摘除故整块删除;test/ 负向前瞻合并为 test/(?!(ut|st)/(asys|msaicerr)/);保留 msaicerr 侧 test/(ut|st)/msaicerr/res/ 例外(asys 测试树的 data/ 无 Python 文件,无需对应例外)。非配置文件的改动逐字节一致。 - rebase 后 master 带入的 asys 文件(src/asys/view/table.py、test/ut/asys/testcase/view/test_table.py、test_run_tests_parsing.py)此前被 exclude 屏蔽,摘除后已实跑五钩子确认通过。 - 负例参数化 'Unknow' → 'Unknown'(3 文件 6 处):回退到 upstream 原值后被 codespell 判为 typo,而这些文件在本 PR 改动列表内、codespell 钩子无 exclude 按整文件扫描,会卡云端 precommit。get_supported_chip_info 仅做 910B\d/910_93/910_96/950 正则匹配,Unknown 同样不匹配、仍返回 False,负例语义不变。 - src/asys 零内联屏蔽(grep -rnE 'noqa|pylint: disable|nosec' src/asys 为空,不含 gitignored 的 chip_handler.py) - 保留 msaicerr 于各 exclude(msaicerr 由其自己的 PR 摘除) - 本 PR 与 hccl_test/msprof PR 代码改动零重叠(仅 .pre-commit-config.yaml 共享,语义不重叠) See merge request: cann/oam-tools!552 | 1 天前 | |
【docs】新增工具资料 Co-authored-by: lwx1255555<liuxiaofang17@huawei-partners.com> # message auto-generated for no-merge-commit merge: !318 merge master into master 【docs】新增工具资料 Created-by: lwx1255555 Commit-by: lwx1255555 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增工具资料 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 已经自检 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增docs/zh下的工具资料 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!318 | 2 个月前 | |
protobuf生成切换工程函数。 Co-authored-by: Feiteng Zheng<zhengfeiteng1@h-partners.com> # message auto-generated for no-merge-commit merge: !537 merge 20260825-switch-cmake-protobuf-generate into master protobuf生成切换工程函数。 Created-by: zhengfeiteng Commit-by: Feiteng Zheng Merged-by: cann-robot Description: ## 描述 protobuf生成切换工程函数。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 对比修改前后oam-tools包,一致。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!537 | 5 天前 | |
【docs】修改PipeUtilization和PipelineExecuteUtilization的描述。 Co-authored-by: lwx1255555<liuxiaofang17@huawei-partners.com> # message auto-generated for no-merge-commit merge: !559 merge master into master 【docs】修改PipeUtilization和PipelineExecuteUtilization的描述。 Created-by: lwx1255555 Commit-by: lwx1255555 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改PipeUtilization和PipelineExecuteUtilization的描述。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> docs/zh/profiling/msprof_cmd/ai_runtime_profile_data.md docs/zh/profiling/other_method/with_acljson_config_file.md docs/zh/profiling/msprof_cmd/processorai_accelerator_system_data.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!559 | 2 天前 | |
docs: 优化 README 结构,功能示例合并至 examples(#168) Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !443 merge docs/issue-168-readme into master docs: 优化 README 结构,功能示例合并至 examples(#168) Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 优化 OAM-Tools 文档结构,落实 issue #168 的三项改进,并保持**中英文档同步**: 1. **功能示例合并至 examples**:将根 README.md 的「功能运行示例」章节(asys / msaicerr / msprof 的环境准备与命令示例)迁移至 examples/README.md,根 README 仅保留一句话导引指向 examples。 2. **重构 examples/README.md**:新增目录导航;章节结构调整为「环境准备 → 一键运行脚本 → 各组件命令示例」;将原先抽象的「样例/说明」表格升级为指向仓内真实脚本(asys/run.sh、msaicerr/run.sh、msprof/run.sh、deploy.sh)的可点击链接,并修正描述与脚本实际行为的对应关系。 3. **删除「相关文档」章节,链接并入核心特性表格**:「核心特性」表格新增「文档」列,四个组件分别指向**仓内**文档(docs/zh/{asys,msaicerr,profiling,hccl_test}/README.md),替换原先的 hiascend.com 外链;删除整个「📚 相关文档」章节,其中唯一不重复的「快速安装指南」「环境变量参考」并入「相关信息」章节以免丢失链接。 4. **英文文档同步(本仓文档成对维护)**:README_en.md 按上述同一结构调整(核心特性表格新增 Documentation / Examples 两列、删除 ▶️ Usage Examples 与 📚 Related Documentation 章节、Quick Start 精简为一句导引、其余链接并入 Related Information);新增 examples/README_en.md 作为 examples/README.md 的英文版。组件用户指南目前仅有中文(docs/zh/),英文版链接指向中文文档并加说明,避免死链。 5. **快速开始恢复为可执行步骤**:原实现把「快速开始」压缩成一句导航句(「请先参考 X,随后按 Y,再参考 Z」),读者读完仍不知该敲什么命令、且要跳三个章节。按业界惯例(快速开始 = 从零到跑通的最短路径,而非导航目录)恢复为 4 步可复制命令:安装依赖 → 编译 → 安装 → 验证,并补一个可验证终点(asys -h)。参数穷举、离线编译、调试构建等仍留在「编译参数与依赖说明」,与快速开始分工。 6. **锚点落到无 emoji 的 h3 子标题**:源码编译 原为一整段无子标题,按内容拆为「加载环境变量 / 执行编译 / 编译参数与依赖说明」;安装与验证 沿用既有「安装 / 验证」。h2 的 emoji 全部保留不动,锚点一律指向这些 h3,且指向语义最贴近的子节(正文「按[源码编译](#执行编译)构建」落在「执行编译」,「[安装](#安装)与[验证](#验证)」分别落在两个子节)。原因见下方「锚点冲突」一节。 ## 锚点冲突(本 PR 曾因此 FAILED 两轮) 本仓锚点要同时满足两个判定方,二者对**含 emoji** 与**含 / ** 的标题给出的 slug 不同,这两类标题没有两边皆可的写法: | 标题形态 | GitCode 渲染(决定网页能否跳转) | 流水线 StaticCheck_link_validity(决定门禁) | | | --- | --- | --- | --- | | ## 🔧 源码编译 | #源码编译 | #-源码编译 | ⚠️ 冲突 | | ## asys(故障信息收集 / 诊断) | #asys故障信息收集-诊断 | #asys故障信息收集--诊断 | ⚠️ 冲突 | | ### 安装(纯文字) | #安装 | 同 | ✅ 一致 | | ## msprof(性能调优)(有括号无 emoji 无 /) | #msprof性能调优 | 同 | ✅ 一致 | 依据是门禁产物 link_validity_check.csv 的逐条对照:README.md 第 147–149 行同时含 #源码编译 与 #安装,**只有前者被拒**。 故本 PR 让锚点只落在「两边一致」的标题上:h2 保留 emoji 但不作锚点目标,其下拆出无 emoji 的 h3 承接锚点;asys 标题的 / 改为「与」后即可正常深链,因此核心特性表「运行示例」列三个组件保持统一的深链风格。该约定已写入仓内 gitcode-pr skill(另提 PR #464)。 ## 评审意见处理 - **@jinyingqi(major,已采纳)**:examples/README.md 中 9 处 ${ASCEND_INSTALL_PATH} 统一改为 ${ASCEND_HOME_PATH}。核实依据:build.sh:79 为 ASCEND_INSTALL_PATH="${ASCEND_HOME_PATH}",该变量由 build.sh 自行派生而非 set_env.sh 导出;examples/msaicerr/run.sh:19、examples/msprof/run.sh:19 亦用 ${ASCEND_INSTALL_PATH:-${ASCEND_HOME_PATH:-...}} 兜底,反证其不保证存在。英文版同步采用 ${ASCEND_HOME_PATH}。 - **@newstarzj**:四条意见已逐条核实并回复。其中「脚本未创建」经核实不成立(四个脚本由 ee4b95c 早已合入 master,属仓内既有文件,故不在本 PR diff 中);两条锚点死链不成立(README.md 存在 ## 📦 安装与验证,#-安装与验证 为其 emoji 剥离后的锚点,同写法在 master 已广泛使用);「保留 hiascend 外链」与 issue #168 第 3 条「链接指向仓内的组件文档」的验收要求冲突,已说明理由待评审确认。 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 关联 Issue #168 ## 如何测试 - 校验所有仓内文档链接目标存在:docs/zh/{asys,msaicerr,profiling,hccl_test}/README.md、docs/en/quick_install.md、examples/README_en.md、CONTRIBUTING_en.md、SECURITY_en.md 均存在。 - 校验 examples/README.md / examples/README_en.md 中相对链接(asys/run.sh、msaicerr/run.sh、msprof/run.sh、deploy.sh、../docs/zh/...、../README.md / ../README_en.md)均可解析。 - 校验中英锚点各自自洽:中文 #-源码编译、#-安装与验证;英文 #-source-code-compilation、#-installation-and-verification,以及 examples 英文版三个组件锚点。 - 确认根 README 与 README_en 均已无「相关文档」/「Related Documentation」章节,章节结构完整无断链。 - 本地全量 UT:python3 -m pytest test/ut/asys/ test/ut/msaicerr/ -q → 1104 passed(test_compile_op_ascend950.py::test_get_ub_size_not_tbe 为存量失败,在未含本 PR 改动的干净工作区复跑同样失败,与本次纯文档改动无关)。msprof gtest 需编译,本地未覆盖,依赖云端 UT_Test。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 本次为纯文档改动,涉及 README.md、README_en.md、examples/README.md 与新增 examples/README_en.md 四个文件,不含代码逻辑变更。 See merge request: cann/oam-tools!443 | 15 天前 | |
experiment(task-book): 新增 msprof 性能采集四种方式实操示例 Co-authored-by: imaginationhh<921918760@qq.com> # message auto-generated for no-merge-commit merge: !279 merge demo-msprof-pr into master experiment(task-book): 新增 msprof 性能采集四种方式实操示例 Created-by: imaginationhh Commit-by: imaginationhh Merged-by: cann-robot Description: ## 描述 新增 msprof 性能采集工具的实操示例,放在 experiment/task-book/msprof_experience_demo/。 用最简 TinyMLP (4 层 Linear+GELU, 输入 [32,1024]) 作统一负载,演示昇腾 NPU 上四种 msprof 采集方式: - **01_cmdline**: msprof 命令行黑盒采集 (零侵入) - **02_api_AscendC**: AscendC 自定义算子核函数直调 + 采集 - **03_api_pyAcl**: pyACL 加载 .om 离线模型推理 + 采集 - **04_pyTorch**: torch_npu.profiler API 白盒插桩采集 四种方式的脚本均可实跑复现;为避免多份数据基准不一致,**性能数据只保留 PyTorch API (04) 一份**作为示例 (perf-data 含 op_statistic / op_summary PMU / step_trace 等可读结果)。每个子目录 README 含「选型指南」「输入输出说明」「如何用到你的模型」。shell 脚本通过 ASCEND_HOME_PATH 自动定位 CANN 环境,不依赖个人机器路径。 ## 关联的Issue 无 ## 测试 四种方式均在 Atlas A2 (910B3) + CANN 9.1.0 + torch_npu 2.7.1 环境实跑验证: - 01/04 采集出 op_statistic (MatMulV2 占比 ~78%) - 02 AscendC Add 算子编译并采集到 AI Core PMU - 03 pyACL 完成 ONNX→ATC→om→推理全链路 - 04 step_trace 显示典型 host bound (Computing:Free ≈ 1:60) ## 文档更新 新增总 README + 4 个子目录 README + perf-data/README,含目录结构、msprof 参数说明、性能数据表。 ## 类型标签 - [x] 📝 文档更新 - [x] ❓ 其他,请描述:新增 task-book 实操示例 (示例代码 + 实采性能数据) See merge request: cann/oam-tools!279 | 2 个月前 | |
ci: add package tests as UT component Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !562 merge feat/ut-package into master ci: add package tests as UT component Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: 新增 UT_package 组件,执行安装、卸载和升级 ST;包测试日志直接输出到流水线终端。 See merge request: cann/oam-tools!562 | 1 天前 | |
feat: update performance breakdown skill Co-authored-by: imaginationhh<921918760@qq.com> # message auto-generated for no-merge-commit merge: !515 merge feat/cann-perf-breakdown-skill1 into master feat: update performance breakdown skill Created-by: imaginationhh Commit-by: imaginationhh Merged-by: cann-robot Description: ## 描述 更新 cann-perf-breakdown,将模型性能拆解流程整理为可验证、可评分的 Stage 1 Skill: - 新增 DeepSeek、Gemma、LongCat、Qwen 适配器及通用 adapter 协议。 - 新增 schema v2、模型 manifest、语义复核、数据流/结构一致性校验和拆解评分流程。 - 新增统一 run_breakdown.py / run_validation.py 入口,未满足证据门槛时明确停止并生成迭代请求。 - 移除 Stage 1 内旧 HTML 报告生成器;Stage 1 只输出拆解事实和指标,交由后续 UI Skill 消费。 - 不包含测试目录、模型源码快照、缓存、权重或开发临时产物。 本 PR 仅修改 skills/cann-perf-breakdown/,不包含 Skill 2 和 Skill 3。 ## 关联的Issue 无。 ## 测试 - quick_validate.py skills/cann-perf-breakdown:通过。 - 前一轮发布候选 Skill 开发测试:368 passed, 5 skipped, 63 subtests passed。 - Python AST 语法检查:31 个文件通过。 - JSON 解析检查:5 个文件通过。 - 所有发布脚本的 --help CLI 契约检查通过。 - taskset -c 0 pre-commit run --from-ref upstream/master --to-ref HEAD:OAT(45 个实际存在文件)和 codespell 通过。 - bash build.sh -u --ut --noexec:全量构建、UT 和安装包生成通过。 ## 文档更新 - 更新 Skill 主说明与结构分析、AI 映射、语义审查、评分和诊断参考文档。 - 新增相关 JSON Schema 文档化约束。 ## 类型标签 - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [x] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!515 | 6 天前 | |
ci(msprof): 摘除 pre-commit clang-format 屏蔽并按新模板格式化存量 C++ Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !551 merge ci/msprof-precommit-clangformat into master ci(msprof): 摘除 pre-commit clang-format 屏蔽并按新模板格式化存量 C++ Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 本 PR 将 msprof 组件从 pre-commit clang-format 屏蔽名单中摘除,使其纳入门禁;并对 src/msprof/collector 与 test/ut/msprof 下全部项目自有 C/C++ 文件执行全量格式化。vendored SDK 接口头 src/msprof/inc/{external,toolchain} 不归本项目维护,仍保持屏蔽。 与已合入的 msaicerr、hccl_test 采用相同范式:摘除即真实修复、零内联屏蔽(无 // clang-format off / // NOLINT)、不新增测试放宽钩子。 ### 基于新版 pre-commit 模板重做 主线 f23e30b 已切换到社区新版 pre-commit 模板,本 PR 据此整体重做(原先基于旧模板、按 clang-format v16 格式化的内容已作废): | 项 | 旧模板 | 新模板(本 PR 依据) | |------|--------|----------------------| | clang-format 版本 | v16.0.0 | **v18.1.8** | | exclude 结构 | test/ 整目录屏蔽 | 负向前瞻 test/(?!(ut\|st)/(asys\|msaicerr)/) | | 新增钩子 | — | codespell、typos、end-of-file-fixer 等 | 因版本与 exclude 结构均已变化,旧格式化结果与主线逐行冲突,故重跑而非解冲突。 ### 配置侧改动(.pre-commit-config.yaml) - clang-format exclude 删除 msprof 行,使 src/msprof 纳入门禁。 - 新增 src/msprof/inc/(external|toolchain)/,vendored SDK 接口头仍屏蔽。 - **删除 test/ 负向前瞻行**:test/ 下的 C/C++ 全部落在 (ut|st)/(asys|msaicerr|msprof)/ 内(msprof 91 + msaicerr 5,实测无其他),该行要排除的集合已为空、不再屏蔽任何文件,只剩「每个组件摘除都要改同一行」的冲突点(本 PR rebase 时的唯一冲突即出自该行),故删除。删除前后纳入门禁的 C/C++ 文件数均为 421,实测零效果。仅保留 test/(ut|st)/msaicerr/res/(采自设备的样本头,不可改写;若一并删除会新纳入 4 个样本 .h)。 - codespell 词表补 modeE:该词是 msprof FileDataParams 构造参数,按本仓「类型首字母后缀」惯例命名(同行 fileNameStr/isLastChunkB)以避开同名成员 mode,非拼写错误。 - 保留 hccl_test、third_party 于 clang-format exclude。 ### 代码侧改动 - 用模板钉住的 clang-format **v18.1.8** 对 418 个项目自有 C/C++ 文件(327 个 src/msprof/collector + 91 个 test/ut/msprof)执行 clang-format -i,其中 407 个文件产生变更。 - 补齐 24 个文件缺失的行尾换行(end-of-file-fixer)。 - 修复 codespell 命中的 11 处注释拼写错误:varibale、fuction、meessage、messsage、defalut×4、dealed×2、faield。 - 不引入任何 // clang-format off / // NOLINT;vendored inc/ 未触碰。 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [x] 📦 构建过程或辅助工具的变动 - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📝 文档内容更新 ## 关联的Issue 无关联 Issue。 ## 如何测试 1. bash build.sh — 确认编译通过。 2. bash build.sh -u --component msprof --ut — 确认 msprof gtest UT 通过数不退化。 3. pre-commit run clang-format --files <changed .c/.cc/.cpp/.h> — 确认 clang-format 门禁通过。 4. pre-commit run codespell、pre-commit run typos、pre-commit run end-of-file-fixer — 确认新增钩子通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 ### 语义等价性验证(纯格式化) 逐文件与 upstream/master 按 token 比对,确认无逻辑改动: - 406 个文件剥离注释与宏续行后,**代码 token 零差异**。 - 差异仅来自:clang-format 补的 // namespace Xxx 结尾注释(Google 风格 FixNamespaceComments)、宏续行反斜杠对齐、缩进与换行。 - 3 个用例文件(acp_bin_utest.cpp、acp_manager_utest.cpp、message_test.cpp)仅长字符串的相邻字面量换行位置变动,拼接后取值逐条相同(111 / 48 / 63 条全等)。 ### 本地验证结果 - 已 rebase 到最新主线 d062bb6(asys 摘除合入后),与主线零冲突(git merge-tree 实测可直接合入);rebase 仅涉 clang-format test 行一处冲突(该行随后按上述理由删除),msprof 407 文件内容零变化。 - Python UT:test/ut/asys + test/ut/msaicerr 共 1360 passed、15 skipped。 - pre-commit 全部钩子 Passed:clang-format、codespell、typos、trailing-whitespace、end-of-file-fixer、check-yaml、OAT(407 文件)。 - diff 范围仅 .pre-commit-config.yaml + src/msprof/** + test/ut/msprof/**,无 vendored 头、无其他组件改动。 See merge request: cann/oam-tools!551 | 1 天前 | |
ci(msprof): 摘除 pre-commit clang-format 屏蔽并按新模板格式化存量 C++ Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !551 merge ci/msprof-precommit-clangformat into master ci(msprof): 摘除 pre-commit clang-format 屏蔽并按新模板格式化存量 C++ Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 本 PR 将 msprof 组件从 pre-commit clang-format 屏蔽名单中摘除,使其纳入门禁;并对 src/msprof/collector 与 test/ut/msprof 下全部项目自有 C/C++ 文件执行全量格式化。vendored SDK 接口头 src/msprof/inc/{external,toolchain} 不归本项目维护,仍保持屏蔽。 与已合入的 msaicerr、hccl_test 采用相同范式:摘除即真实修复、零内联屏蔽(无 // clang-format off / // NOLINT)、不新增测试放宽钩子。 ### 基于新版 pre-commit 模板重做 主线 f23e30b 已切换到社区新版 pre-commit 模板,本 PR 据此整体重做(原先基于旧模板、按 clang-format v16 格式化的内容已作废): | 项 | 旧模板 | 新模板(本 PR 依据) | |------|--------|----------------------| | clang-format 版本 | v16.0.0 | **v18.1.8** | | exclude 结构 | test/ 整目录屏蔽 | 负向前瞻 test/(?!(ut\|st)/(asys\|msaicerr)/) | | 新增钩子 | — | codespell、typos、end-of-file-fixer 等 | 因版本与 exclude 结构均已变化,旧格式化结果与主线逐行冲突,故重跑而非解冲突。 ### 配置侧改动(.pre-commit-config.yaml) - clang-format exclude 删除 msprof 行,使 src/msprof 纳入门禁。 - 新增 src/msprof/inc/(external|toolchain)/,vendored SDK 接口头仍屏蔽。 - **删除 test/ 负向前瞻行**:test/ 下的 C/C++ 全部落在 (ut|st)/(asys|msaicerr|msprof)/ 内(msprof 91 + msaicerr 5,实测无其他),该行要排除的集合已为空、不再屏蔽任何文件,只剩「每个组件摘除都要改同一行」的冲突点(本 PR rebase 时的唯一冲突即出自该行),故删除。删除前后纳入门禁的 C/C++ 文件数均为 421,实测零效果。仅保留 test/(ut|st)/msaicerr/res/(采自设备的样本头,不可改写;若一并删除会新纳入 4 个样本 .h)。 - codespell 词表补 modeE:该词是 msprof FileDataParams 构造参数,按本仓「类型首字母后缀」惯例命名(同行 fileNameStr/isLastChunkB)以避开同名成员 mode,非拼写错误。 - 保留 hccl_test、third_party 于 clang-format exclude。 ### 代码侧改动 - 用模板钉住的 clang-format **v18.1.8** 对 418 个项目自有 C/C++ 文件(327 个 src/msprof/collector + 91 个 test/ut/msprof)执行 clang-format -i,其中 407 个文件产生变更。 - 补齐 24 个文件缺失的行尾换行(end-of-file-fixer)。 - 修复 codespell 命中的 11 处注释拼写错误:varibale、fuction、meessage、messsage、defalut×4、dealed×2、faield。 - 不引入任何 // clang-format off / // NOLINT;vendored inc/ 未触碰。 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [x] 📦 构建过程或辅助工具的变动 - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📝 文档内容更新 ## 关联的Issue 无关联 Issue。 ## 如何测试 1. bash build.sh — 确认编译通过。 2. bash build.sh -u --component msprof --ut — 确认 msprof gtest UT 通过数不退化。 3. pre-commit run clang-format --files <changed .c/.cc/.cpp/.h> — 确认 clang-format 门禁通过。 4. pre-commit run codespell、pre-commit run typos、pre-commit run end-of-file-fixer — 确认新增钩子通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 ### 语义等价性验证(纯格式化) 逐文件与 upstream/master 按 token 比对,确认无逻辑改动: - 406 个文件剥离注释与宏续行后,**代码 token 零差异**。 - 差异仅来自:clang-format 补的 // namespace Xxx 结尾注释(Google 风格 FixNamespaceComments)、宏续行反斜杠对齐、缩进与换行。 - 3 个用例文件(acp_bin_utest.cpp、acp_manager_utest.cpp、message_test.cpp)仅长字符串的相邻字面量换行位置变动,拼接后取值逐条相同(111 / 48 / 63 条全等)。 ### 本地验证结果 - 已 rebase 到最新主线 d062bb6(asys 摘除合入后),与主线零冲突(git merge-tree 实测可直接合入);rebase 仅涉 clang-format test 行一处冲突(该行随后按上述理由删除),msprof 407 文件内容零变化。 - Python UT:test/ut/asys + test/ut/msaicerr 共 1360 passed、15 skipped。 - pre-commit 全部钩子 Passed:clang-format、codespell、typos、trailing-whitespace、end-of-file-fixer、check-yaml、OAT(407 文件)。 - diff 范围仅 .pre-commit-config.yaml + src/msprof/** + test/ut/msprof/**,无 vendored 头、无其他组件改动。 See merge request: cann/oam-tools!551 | 1 天前 | |
ci: 适配社区新版 pre-commit 模板并补回主线屏蔽目录与专有词表 Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !563 merge ci/adapt-precommit-new-rules into master ci: 适配社区新版 pre-commit 模板并补回主线屏蔽目录与专有词表 Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 pre-commit 规则有改动:切换到 CANN 社区新版 pre-commit 模板(pre-commit-hooks / clang-format v18 / ruff / codespell / typos / OAT),并将主线仍然需要的目录屏蔽和 codespell 关键字补充到新模板上。已按检视意见完成一轮修正。 1. ** .pre-commit-config.yaml**:保留社区模板结构,叠加本仓定制: - clang-format / ruff-check / ruff-format / bandit / typos 钩子补回主线仍屏蔽的存量目录(experiment/、src/{asys,hccl_test,msprof,third_party}/、test/(负向前瞻保留 (ut|st)/msaicerr 例外)、test/{ut,st}/msaicerr/res/ 设备样本),存量整改后再逐个摘除; - clang-format 钩子不传 --style 内联参数,使用镜像默认 -style=file 读仓库 .clang-format,与手动/IDE 格式化结果一致; - codespell -L 词表 = 社区模板词 + 主线原 ignore-words-list 全部专有词;--skip 与主线完全一致(不跳过源码文件,仅跳二进制/构建产物与 res 设备样本); - 恢复 bandit -ll 安全扫描(1.8.6 兼容 CI Python 3.9,屏蔽范围与 ruff 一致); - OAT 钩子恢复 pass_filenames: false + require_serial: true + stages: [pre-commit](脚本自行收集 staged 文件单次调用,规避 CI 偶发 PlainReport 丢失误报)。 2. **.typos.toml**(新增):typos 从仓库根目录自动发现,收录主线 codespell 词表全量镜像的昇腾专有词(大小写不敏感),压住 typos 钩子对 .pre-commit-config.yaml 自身 -L 参数串的误报。 3. **.clang-format**:635 行全量注释版精简为 Google 基线配置(IndentWidth 4 / ColumnLimit 120 / 函数体大括号换行 / PointerAlignment Left),作为钩子与手动格式化的单一事实来源;修正注释拼写 poniter aligment -> pointer alignment。 ## 关联的Issue 无 ## 测试 - 本地 pre-commit 全链路实测:全部钩子对本次改动集通过(含 OAT),stages 弃用告警消除; - 屏蔽目录实测:src/{msprof,hccl_test,third_party}、experiment/、test/{ut,st}/msaicerr/res/ 等屏蔽文件全部 skipped 且无改写;放行目录(src/msaicerr 等)钩子正常生效; - codespell 全仓扫描:放行路径 msaicerr 源码零命中(不跳过源码文件,与主线行为一致); - typos 全仓扫描:屏蔽零泄漏,放行路径剩余命中均为存量真实拼写错误; - bandit -ll 全量实测:msaicerr 源码除 5 处存量 B108(test_ascend_handler_st.py 的 /tmp 字面量,主线已存在,建议后续单独处理)外无 medium+ 告警; - 本地 UT:python3 -m pytest test/ut/asys/ test/ut/msaicerr/ -q 1351 passed, 15 skipped。 ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [x] 📦 构建/CI - [x] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!563 | 1 天前 | |
【docs】新增工具资料 Co-authored-by: lwx1255555<liuxiaofang17@huawei-partners.com> # message auto-generated for no-merge-commit merge: !318 merge master into master 【docs】新增工具资料 Created-by: lwx1255555 Commit-by: lwx1255555 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增工具资料 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 已经自检 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增docs/zh下的工具资料 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!318 | 2 个月前 | |
ci(msprof): 摘除 pre-commit clang-format 屏蔽并按新模板格式化存量 C++ Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !551 merge ci/msprof-precommit-clangformat into master ci(msprof): 摘除 pre-commit clang-format 屏蔽并按新模板格式化存量 C++ Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 本 PR 将 msprof 组件从 pre-commit clang-format 屏蔽名单中摘除,使其纳入门禁;并对 src/msprof/collector 与 test/ut/msprof 下全部项目自有 C/C++ 文件执行全量格式化。vendored SDK 接口头 src/msprof/inc/{external,toolchain} 不归本项目维护,仍保持屏蔽。 与已合入的 msaicerr、hccl_test 采用相同范式:摘除即真实修复、零内联屏蔽(无 // clang-format off / // NOLINT)、不新增测试放宽钩子。 ### 基于新版 pre-commit 模板重做 主线 f23e30b 已切换到社区新版 pre-commit 模板,本 PR 据此整体重做(原先基于旧模板、按 clang-format v16 格式化的内容已作废): | 项 | 旧模板 | 新模板(本 PR 依据) | |------|--------|----------------------| | clang-format 版本 | v16.0.0 | **v18.1.8** | | exclude 结构 | test/ 整目录屏蔽 | 负向前瞻 test/(?!(ut\|st)/(asys\|msaicerr)/) | | 新增钩子 | — | codespell、typos、end-of-file-fixer 等 | 因版本与 exclude 结构均已变化,旧格式化结果与主线逐行冲突,故重跑而非解冲突。 ### 配置侧改动(.pre-commit-config.yaml) - clang-format exclude 删除 msprof 行,使 src/msprof 纳入门禁。 - 新增 src/msprof/inc/(external|toolchain)/,vendored SDK 接口头仍屏蔽。 - **删除 test/ 负向前瞻行**:test/ 下的 C/C++ 全部落在 (ut|st)/(asys|msaicerr|msprof)/ 内(msprof 91 + msaicerr 5,实测无其他),该行要排除的集合已为空、不再屏蔽任何文件,只剩「每个组件摘除都要改同一行」的冲突点(本 PR rebase 时的唯一冲突即出自该行),故删除。删除前后纳入门禁的 C/C++ 文件数均为 421,实测零效果。仅保留 test/(ut|st)/msaicerr/res/(采自设备的样本头,不可改写;若一并删除会新纳入 4 个样本 .h)。 - codespell 词表补 modeE:该词是 msprof FileDataParams 构造参数,按本仓「类型首字母后缀」惯例命名(同行 fileNameStr/isLastChunkB)以避开同名成员 mode,非拼写错误。 - 保留 hccl_test、third_party 于 clang-format exclude。 ### 代码侧改动 - 用模板钉住的 clang-format **v18.1.8** 对 418 个项目自有 C/C++ 文件(327 个 src/msprof/collector + 91 个 test/ut/msprof)执行 clang-format -i,其中 407 个文件产生变更。 - 补齐 24 个文件缺失的行尾换行(end-of-file-fixer)。 - 修复 codespell 命中的 11 处注释拼写错误:varibale、fuction、meessage、messsage、defalut×4、dealed×2、faield。 - 不引入任何 // clang-format off / // NOLINT;vendored inc/ 未触碰。 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [x] 📦 构建过程或辅助工具的变动 - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📝 文档内容更新 ## 关联的Issue 无关联 Issue。 ## 如何测试 1. bash build.sh — 确认编译通过。 2. bash build.sh -u --component msprof --ut — 确认 msprof gtest UT 通过数不退化。 3. pre-commit run clang-format --files <changed .c/.cc/.cpp/.h> — 确认 clang-format 门禁通过。 4. pre-commit run codespell、pre-commit run typos、pre-commit run end-of-file-fixer — 确认新增钩子通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 ### 语义等价性验证(纯格式化) 逐文件与 upstream/master 按 token 比对,确认无逻辑改动: - 406 个文件剥离注释与宏续行后,**代码 token 零差异**。 - 差异仅来自:clang-format 补的 // namespace Xxx 结尾注释(Google 风格 FixNamespaceComments)、宏续行反斜杠对齐、缩进与换行。 - 3 个用例文件(acp_bin_utest.cpp、acp_manager_utest.cpp、message_test.cpp)仅长字符串的相邻字面量换行位置变动,拼接后取值逐条相同(111 / 48 / 63 条全等)。 ### 本地验证结果 - 已 rebase 到最新主线 d062bb6(asys 摘除合入后),与主线零冲突(git merge-tree 实测可直接合入);rebase 仅涉 clang-format test 行一处冲突(该行随后按上述理由删除),msprof 407 文件内容零变化。 - Python UT:test/ut/asys + test/ut/msaicerr 共 1360 passed、15 skipped。 - pre-commit 全部钩子 Passed:clang-format、codespell、typos、trailing-whitespace、end-of-file-fixer、check-yaml、OAT(407 文件)。 - diff 范围仅 .pre-commit-config.yaml + src/msprof/** + test/ut/msprof/**,无 vendored 头、无其他组件改动。 See merge request: cann/oam-tools!551 | 1 天前 | |
ci(asys): 摘除 pre-commit python 钩子屏蔽并修复存量告警 Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !552 merge ci/asys-precommit-lint into master ci(asys): 摘除 pre-commit python 钩子屏蔽并修复存量告警 Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 将 src/asys 与 test/{ut,st}/asys 从 ruff、pylint、bandit、incremental-codecheck 的 exclude 中摘除,使这些目录纳入 pre-commit 门禁,并修复因此暴露的全部存量告警。复刻已落地的 msaicerr 范式(commit 2e60c0a):摘除即真实修复、src 零内联屏蔽。 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 变更内容 ### 配置侧 - 四钩子(ruff/pylint/incremental/bandit)src 块从 src/(asys|msaicerr)/ 删 asys → src/(msaicerr)/(msaicerr 保留,不在本 PR 范围) - 四钩子 test 行从 | test/ 改为 | test/(?!(ut|st)/asys/)(负向前瞻,只摘 asys 测试,其他测试目录保留屏蔽) ### 代码侧修复(src/asys,零 noqa/disable/nosec) - **ruff**: F401 重导出用 __all__(53 项,不删公共 API);F541/F841 真实修复;PLR6301×8 @staticmethod;T201 spinner 改 sys.stdout.write(保 \r 覆写) - **pylint**: W0718 broad-except 收窄为具体异常(ctypes→(OSError, AttributeError, TypeError);文件 I/O→OSError;二进制解析→(OSError, TypeError, IndexError, KeyError));W1514 open 补 encoding='utf-8';W0612/W0613 未用变量/参数;W0622 重定义内建 dir→dir_path;W0603 global 改可变容器;W0212 getattr;W0125 常量条件;W1510 subprocess.run 补 check=False;W1509 preexec_fn→start_new_session=True;W0123 eval→getattr;W0246 删无用 __init__ 委托;W1309/W0611 修生成源 .in/.cmake 模板 - **bandit**: B602 shell=True→[BASH, "-c", cmd] + shell=False(BASH=shutil.which);B605 os.popen→subprocess.run arg list;B307 eval→getattr ### 安全加固(src/asys) - cmd_run.py: check_command 改 shutil.which;run_command/run_cmd_output/run_linux_cmd/real_time_output/popen_run_cmd 去 shell=True 改 [BASH, "-c", cmd] + check=False + try/except 保返回语义 - asys_launch.py: Popen(shell=True) → [BASH, "-c", cmd] + start_new_session=True - asys_profiling.py: subprocess.run(shell=True) → [BASH, "-c", cmd] - ops_collect.py: os.popen(grep)×3 → subprocess.run([GREP, args]) - param_dict.py: eval(f"args.{arg_name}") → getattr(args, arg_name) ### 测试侧修复(test/{ut,st}/asys) - ruff: E402 sys.path/sys.argv 收敛到现有 conftest;F401/F541/F841/F811/E722 修复 - pylint: 文件级 disable pytest 固有写法(protected-access/unused-argument/broad-exception-caught 等);W1514/W1510 真实修复 - bandit: B103 chmod 测试断言用 # nosec 注明;B108 /tmp→tempfile.gettempdir();B602 测试 mock 用 # nosec 注明 - codespell: finsh/Unknow/utiliza/flie 等拼写修复 ### 暴露并修复的真实缺陷 - F811 重复测试 test_asys_config_get_mode(同名函数互相遮蔽,前者从未执行);重命名影子测试后发现其在 VM 上失败(config 命令不可执行),skip 并注明 ### 生成文件根因(chip_handler.py,gitignored) - .in 模板删未用 import os/log_error;ascend910B.cmake rf"910B\d"→r"910B\d"(去掉多余 f 前缀) ## 关联的 Issue 无(独立 PR,参照 msaicerr commit 2e60c0a 范式) ## 如何测试 bash bash build.sh -u --component asys # 本地验证:ruff/pylint/bandit/incremental-codecheck/codespell 五钩子全通过 # UT: asys 596 passed、msaicerr 723 passed/15 skipped(rebase 后含 master 新增用例) # ST 281 passed > 本地未覆盖 msprof gtest(需编译),依赖云端 UT_Test。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 - **已 rebase 到 master 070f767**(PR #533 msaicerr 摘除已合入)。冲突仅 .pre-commit-config.yaml,两侧意图正交、按叠加解决:src/ 屏蔽块两组件均已摘除故整块删除;test/ 负向前瞻合并为 test/(?!(ut|st)/(asys|msaicerr)/);保留 msaicerr 侧 test/(ut|st)/msaicerr/res/ 例外(asys 测试树的 data/ 无 Python 文件,无需对应例外)。非配置文件的改动逐字节一致。 - rebase 后 master 带入的 asys 文件(src/asys/view/table.py、test/ut/asys/testcase/view/test_table.py、test_run_tests_parsing.py)此前被 exclude 屏蔽,摘除后已实跑五钩子确认通过。 - 负例参数化 'Unknow' → 'Unknown'(3 文件 6 处):回退到 upstream 原值后被 codespell 判为 typo,而这些文件在本 PR 改动列表内、codespell 钩子无 exclude 按整文件扫描,会卡云端 precommit。get_supported_chip_info 仅做 910B\d/910_93/910_96/950 正则匹配,Unknown 同样不匹配、仍返回 False,负例语义不变。 - src/asys 零内联屏蔽(grep -rnE 'noqa|pylint: disable|nosec' src/asys 为空,不含 gitignored 的 chip_handler.py) - 保留 msaicerr 于各 exclude(msaicerr 由其自己的 PR 摘除) - 本 PR 与 hccl_test/msprof PR 代码改动零重叠(仅 .pre-commit-config.yaml 共享,语义不重叠) See merge request: cann/oam-tools!552 | 1 天前 | |
文档优化 Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !213 merge dev_master_fixinstallmd into master 文档优化 Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. quick_install.md 添加手动安装方式的说明 2. AGENTS.md中补充SKILL.md 的跳转链接 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#79](https://gitcode.com/cann/oam-tools/issues/79) [#77](https://gitcode.com/cann/oam-tools/issues/77) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> AGENTS.md quick_install.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!213 | 3 个月前 | |
【文档翻译】部分文档翻译成英文。 Co-authored-by: lwx1255555<liuxiaofang17@huawei-partners.com> # message auto-generated for no-merge-commit merge: !238 merge master into master 【文档翻译】部分文档翻译成英文。 Created-by: lwx1255555 Commit-by: lwx1255555 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> md文档翻译成英文 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 不涉及 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 已经自检 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新的文档如下。 .claude/CLAUDE_en.md .claude/skills/default-skills/SKILL_en.md .gitcode/PULL_REQUEST_TEMPLATE.en-US.md .opencode/README_en.md AGENTS_en.md CONTRIBUTING_en.md README_en.md SECURITY_en.md docs/en/quick_install.md src/hccl_test/README_en.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!238 | 3 个月前 | |
protobuf生成切换工程函数。 Co-authored-by: Feiteng Zheng<zhengfeiteng1@h-partners.com> # message auto-generated for no-merge-commit merge: !537 merge 20260825-switch-cmake-protobuf-generate into master protobuf生成切换工程函数。 Created-by: zhengfeiteng Commit-by: Feiteng Zheng Merged-by: cann-robot Description: ## 描述 protobuf生成切换工程函数。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 对比修改前后oam-tools包,一致。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!537 | 5 天前 | |
delete empty conf folders and fix documents Co-authored-by: starchen_<hongwenchen1@huawei.com> # message auto-generated for no-merge-commit merge: !37 merge master into master delete empty conf folders and fix documents Created-by: starchen_ Commit-by: starchen_ Merged-by: cann-robot Description: ## 描述 1.删除run包中的的空文件夹 2.文档更新 ## 关联的Issue 关联Issue [#8](https://gitcode.com/cann/oam-tools-dev/issues/8) 关联Issue [#9](https://gitcode.com/cann/oam-tools-dev/issues/9) ## 测试 UT/ST通过,冒烟无问题 ## 文档更新 更新了README.md和CONTRIBUTING.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/oam-tools!37 | 6 个月前 | |
【文档翻译】部分文档翻译成英文。 Co-authored-by: lwx1255555<liuxiaofang17@huawei-partners.com> # message auto-generated for no-merge-commit merge: !238 merge master into master 【文档翻译】部分文档翻译成英文。 Created-by: lwx1255555 Commit-by: lwx1255555 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> md文档翻译成英文 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 不涉及 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 已经自检 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新的文档如下。 .claude/CLAUDE_en.md .claude/skills/default-skills/SKILL_en.md .gitcode/PULL_REQUEST_TEMPLATE.en-US.md .opencode/README_en.md AGENTS_en.md CONTRIBUTING_en.md README_en.md SECURITY_en.md docs/en/quick_install.md src/hccl_test/README_en.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!238 | 3 个月前 | |
Initial commit | 8 个月前 | |
Initial commit | 8 个月前 | |
docs: 优化 README 结构,功能示例合并至 examples(#168) Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !443 merge docs/issue-168-readme into master docs: 优化 README 结构,功能示例合并至 examples(#168) Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 优化 OAM-Tools 文档结构,落实 issue #168 的三项改进,并保持**中英文档同步**: 1. **功能示例合并至 examples**:将根 README.md 的「功能运行示例」章节(asys / msaicerr / msprof 的环境准备与命令示例)迁移至 examples/README.md,根 README 仅保留一句话导引指向 examples。 2. **重构 examples/README.md**:新增目录导航;章节结构调整为「环境准备 → 一键运行脚本 → 各组件命令示例」;将原先抽象的「样例/说明」表格升级为指向仓内真实脚本(asys/run.sh、msaicerr/run.sh、msprof/run.sh、deploy.sh)的可点击链接,并修正描述与脚本实际行为的对应关系。 3. **删除「相关文档」章节,链接并入核心特性表格**:「核心特性」表格新增「文档」列,四个组件分别指向**仓内**文档(docs/zh/{asys,msaicerr,profiling,hccl_test}/README.md),替换原先的 hiascend.com 外链;删除整个「📚 相关文档」章节,其中唯一不重复的「快速安装指南」「环境变量参考」并入「相关信息」章节以免丢失链接。 4. **英文文档同步(本仓文档成对维护)**:README_en.md 按上述同一结构调整(核心特性表格新增 Documentation / Examples 两列、删除 ▶️ Usage Examples 与 📚 Related Documentation 章节、Quick Start 精简为一句导引、其余链接并入 Related Information);新增 examples/README_en.md 作为 examples/README.md 的英文版。组件用户指南目前仅有中文(docs/zh/),英文版链接指向中文文档并加说明,避免死链。 5. **快速开始恢复为可执行步骤**:原实现把「快速开始」压缩成一句导航句(「请先参考 X,随后按 Y,再参考 Z」),读者读完仍不知该敲什么命令、且要跳三个章节。按业界惯例(快速开始 = 从零到跑通的最短路径,而非导航目录)恢复为 4 步可复制命令:安装依赖 → 编译 → 安装 → 验证,并补一个可验证终点(asys -h)。参数穷举、离线编译、调试构建等仍留在「编译参数与依赖说明」,与快速开始分工。 6. **锚点落到无 emoji 的 h3 子标题**:源码编译 原为一整段无子标题,按内容拆为「加载环境变量 / 执行编译 / 编译参数与依赖说明」;安装与验证 沿用既有「安装 / 验证」。h2 的 emoji 全部保留不动,锚点一律指向这些 h3,且指向语义最贴近的子节(正文「按[源码编译](#执行编译)构建」落在「执行编译」,「[安装](#安装)与[验证](#验证)」分别落在两个子节)。原因见下方「锚点冲突」一节。 ## 锚点冲突(本 PR 曾因此 FAILED 两轮) 本仓锚点要同时满足两个判定方,二者对**含 emoji** 与**含 / ** 的标题给出的 slug 不同,这两类标题没有两边皆可的写法: | 标题形态 | GitCode 渲染(决定网页能否跳转) | 流水线 StaticCheck_link_validity(决定门禁) | | | --- | --- | --- | --- | | ## 🔧 源码编译 | #源码编译 | #-源码编译 | ⚠️ 冲突 | | ## asys(故障信息收集 / 诊断) | #asys故障信息收集-诊断 | #asys故障信息收集--诊断 | ⚠️ 冲突 | | ### 安装(纯文字) | #安装 | 同 | ✅ 一致 | | ## msprof(性能调优)(有括号无 emoji 无 /) | #msprof性能调优 | 同 | ✅ 一致 | 依据是门禁产物 link_validity_check.csv 的逐条对照:README.md 第 147–149 行同时含 #源码编译 与 #安装,**只有前者被拒**。 故本 PR 让锚点只落在「两边一致」的标题上:h2 保留 emoji 但不作锚点目标,其下拆出无 emoji 的 h3 承接锚点;asys 标题的 / 改为「与」后即可正常深链,因此核心特性表「运行示例」列三个组件保持统一的深链风格。该约定已写入仓内 gitcode-pr skill(另提 PR #464)。 ## 评审意见处理 - **@jinyingqi(major,已采纳)**:examples/README.md 中 9 处 ${ASCEND_INSTALL_PATH} 统一改为 ${ASCEND_HOME_PATH}。核实依据:build.sh:79 为 ASCEND_INSTALL_PATH="${ASCEND_HOME_PATH}",该变量由 build.sh 自行派生而非 set_env.sh 导出;examples/msaicerr/run.sh:19、examples/msprof/run.sh:19 亦用 ${ASCEND_INSTALL_PATH:-${ASCEND_HOME_PATH:-...}} 兜底,反证其不保证存在。英文版同步采用 ${ASCEND_HOME_PATH}。 - **@newstarzj**:四条意见已逐条核实并回复。其中「脚本未创建」经核实不成立(四个脚本由 ee4b95c 早已合入 master,属仓内既有文件,故不在本 PR diff 中);两条锚点死链不成立(README.md 存在 ## 📦 安装与验证,#-安装与验证 为其 emoji 剥离后的锚点,同写法在 master 已广泛使用);「保留 hiascend 外链」与 issue #168 第 3 条「链接指向仓内的组件文档」的验收要求冲突,已说明理由待评审确认。 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 关联 Issue #168 ## 如何测试 - 校验所有仓内文档链接目标存在:docs/zh/{asys,msaicerr,profiling,hccl_test}/README.md、docs/en/quick_install.md、examples/README_en.md、CONTRIBUTING_en.md、SECURITY_en.md 均存在。 - 校验 examples/README.md / examples/README_en.md 中相对链接(asys/run.sh、msaicerr/run.sh、msprof/run.sh、deploy.sh、../docs/zh/...、../README.md / ../README_en.md)均可解析。 - 校验中英锚点各自自洽:中文 #-源码编译、#-安装与验证;英文 #-source-code-compilation、#-installation-and-verification,以及 examples 英文版三个组件锚点。 - 确认根 README 与 README_en 均已无「相关文档」/「Related Documentation」章节,章节结构完整无断链。 - 本地全量 UT:python3 -m pytest test/ut/asys/ test/ut/msaicerr/ -q → 1104 passed(test_compile_op_ascend950.py::test_get_ub_size_not_tbe 为存量失败,在未含本 PR 改动的干净工作区复跑同样失败,与本次纯文档改动无关)。msprof gtest 需编译,本地未覆盖,依赖云端 UT_Test。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 本次为纯文档改动,涉及 README.md、README_en.md、examples/README.md 与新增 examples/README_en.md 四个文件,不含代码逻辑变更。 See merge request: cann/oam-tools!443 | 15 天前 | |
docs: 优化 README 结构,功能示例合并至 examples(#168) Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !443 merge docs/issue-168-readme into master docs: 优化 README 结构,功能示例合并至 examples(#168) Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 优化 OAM-Tools 文档结构,落实 issue #168 的三项改进,并保持**中英文档同步**: 1. **功能示例合并至 examples**:将根 README.md 的「功能运行示例」章节(asys / msaicerr / msprof 的环境准备与命令示例)迁移至 examples/README.md,根 README 仅保留一句话导引指向 examples。 2. **重构 examples/README.md**:新增目录导航;章节结构调整为「环境准备 → 一键运行脚本 → 各组件命令示例」;将原先抽象的「样例/说明」表格升级为指向仓内真实脚本(asys/run.sh、msaicerr/run.sh、msprof/run.sh、deploy.sh)的可点击链接,并修正描述与脚本实际行为的对应关系。 3. **删除「相关文档」章节,链接并入核心特性表格**:「核心特性」表格新增「文档」列,四个组件分别指向**仓内**文档(docs/zh/{asys,msaicerr,profiling,hccl_test}/README.md),替换原先的 hiascend.com 外链;删除整个「📚 相关文档」章节,其中唯一不重复的「快速安装指南」「环境变量参考」并入「相关信息」章节以免丢失链接。 4. **英文文档同步(本仓文档成对维护)**:README_en.md 按上述同一结构调整(核心特性表格新增 Documentation / Examples 两列、删除 ▶️ Usage Examples 与 📚 Related Documentation 章节、Quick Start 精简为一句导引、其余链接并入 Related Information);新增 examples/README_en.md 作为 examples/README.md 的英文版。组件用户指南目前仅有中文(docs/zh/),英文版链接指向中文文档并加说明,避免死链。 5. **快速开始恢复为可执行步骤**:原实现把「快速开始」压缩成一句导航句(「请先参考 X,随后按 Y,再参考 Z」),读者读完仍不知该敲什么命令、且要跳三个章节。按业界惯例(快速开始 = 从零到跑通的最短路径,而非导航目录)恢复为 4 步可复制命令:安装依赖 → 编译 → 安装 → 验证,并补一个可验证终点(asys -h)。参数穷举、离线编译、调试构建等仍留在「编译参数与依赖说明」,与快速开始分工。 6. **锚点落到无 emoji 的 h3 子标题**:源码编译 原为一整段无子标题,按内容拆为「加载环境变量 / 执行编译 / 编译参数与依赖说明」;安装与验证 沿用既有「安装 / 验证」。h2 的 emoji 全部保留不动,锚点一律指向这些 h3,且指向语义最贴近的子节(正文「按[源码编译](#执行编译)构建」落在「执行编译」,「[安装](#安装)与[验证](#验证)」分别落在两个子节)。原因见下方「锚点冲突」一节。 ## 锚点冲突(本 PR 曾因此 FAILED 两轮) 本仓锚点要同时满足两个判定方,二者对**含 emoji** 与**含 / ** 的标题给出的 slug 不同,这两类标题没有两边皆可的写法: | 标题形态 | GitCode 渲染(决定网页能否跳转) | 流水线 StaticCheck_link_validity(决定门禁) | | | --- | --- | --- | --- | | ## 🔧 源码编译 | #源码编译 | #-源码编译 | ⚠️ 冲突 | | ## asys(故障信息收集 / 诊断) | #asys故障信息收集-诊断 | #asys故障信息收集--诊断 | ⚠️ 冲突 | | ### 安装(纯文字) | #安装 | 同 | ✅ 一致 | | ## msprof(性能调优)(有括号无 emoji 无 /) | #msprof性能调优 | 同 | ✅ 一致 | 依据是门禁产物 link_validity_check.csv 的逐条对照:README.md 第 147–149 行同时含 #源码编译 与 #安装,**只有前者被拒**。 故本 PR 让锚点只落在「两边一致」的标题上:h2 保留 emoji 但不作锚点目标,其下拆出无 emoji 的 h3 承接锚点;asys 标题的 / 改为「与」后即可正常深链,因此核心特性表「运行示例」列三个组件保持统一的深链风格。该约定已写入仓内 gitcode-pr skill(另提 PR #464)。 ## 评审意见处理 - **@jinyingqi(major,已采纳)**:examples/README.md 中 9 处 ${ASCEND_INSTALL_PATH} 统一改为 ${ASCEND_HOME_PATH}。核实依据:build.sh:79 为 ASCEND_INSTALL_PATH="${ASCEND_HOME_PATH}",该变量由 build.sh 自行派生而非 set_env.sh 导出;examples/msaicerr/run.sh:19、examples/msprof/run.sh:19 亦用 ${ASCEND_INSTALL_PATH:-${ASCEND_HOME_PATH:-...}} 兜底,反证其不保证存在。英文版同步采用 ${ASCEND_HOME_PATH}。 - **@newstarzj**:四条意见已逐条核实并回复。其中「脚本未创建」经核实不成立(四个脚本由 ee4b95c 早已合入 master,属仓内既有文件,故不在本 PR diff 中);两条锚点死链不成立(README.md 存在 ## 📦 安装与验证,#-安装与验证 为其 emoji 剥离后的锚点,同写法在 master 已广泛使用);「保留 hiascend 外链」与 issue #168 第 3 条「链接指向仓内的组件文档」的验收要求冲突,已说明理由待评审确认。 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 关联 Issue #168 ## 如何测试 - 校验所有仓内文档链接目标存在:docs/zh/{asys,msaicerr,profiling,hccl_test}/README.md、docs/en/quick_install.md、examples/README_en.md、CONTRIBUTING_en.md、SECURITY_en.md 均存在。 - 校验 examples/README.md / examples/README_en.md 中相对链接(asys/run.sh、msaicerr/run.sh、msprof/run.sh、deploy.sh、../docs/zh/...、../README.md / ../README_en.md)均可解析。 - 校验中英锚点各自自洽:中文 #-源码编译、#-安装与验证;英文 #-source-code-compilation、#-installation-and-verification,以及 examples 英文版三个组件锚点。 - 确认根 README 与 README_en 均已无「相关文档」/「Related Documentation」章节,章节结构完整无断链。 - 本地全量 UT:python3 -m pytest test/ut/asys/ test/ut/msaicerr/ -q → 1104 passed(test_compile_op_ascend950.py::test_get_ub_size_not_tbe 为存量失败,在未含本 PR 改动的干净工作区复跑同样失败,与本次纯文档改动无关)。msprof gtest 需编译,本地未覆盖,依赖云端 UT_Test。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 本次为纯文档改动,涉及 README.md、README_en.md、examples/README.md 与新增 examples/README_en.md 四个文件,不含代码逻辑变更。 See merge request: cann/oam-tools!443 | 15 天前 | |
fix(docs): update SECURITY.md protobuf version Co-authored-by: halaxy<2966011847@qq.com> # message auto-generated for no-merge-commit merge: !372 merge fix/docs-security-protobuf-version into master fix(docs): update SECURITY.md protobuf version Created-by: 2401_86136928 Commit-by: halaxy Merged-by: cann-robot Description: fix protobuf version in SECURITY.md. Closes #139 See merge request: cann/oam-tools!372 | 2 个月前 | |
fix(docs): update SECURITY.md protobuf version Co-authored-by: halaxy<2966011847@qq.com> # message auto-generated for no-merge-commit merge: !372 merge fix/docs-security-protobuf-version into master fix(docs): update SECURITY.md protobuf version Created-by: 2401_86136928 Commit-by: halaxy Merged-by: cann-robot Description: fix protobuf version in SECURITY.md. Closes #139 See merge request: cann/oam-tools!372 | 2 个月前 | |
feat: 支持 rpm/deb 包构建,修正文件缺失问题 Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !520 merge feat/rpm-deb-package-support into master feat: 支持 rpm/deb 包构建,修正文件缺失问题 Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 rpm 和 deb 包安装后缺少以下关键文件,导致工具无法使用: 1. tools/ascend_system_advisor/ - 系统诊断工具 2. tools/hccl_test/ - HCCL 测试工具 3. tools/msaicerr/ - AI Core 错误分析工具 4. tools/profiler/ - 性能分析工具(包含 msprof、acp) 5. lib64/libascend_dump_parser.so - dump 数据解析库 ## 变更类型 - [x] ✨ 新功能 - [ ] 🐛 Bug 修复 - [ ] 💄 代码风格更新 - [ ] ♻️ 重构 - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 根本原因 INSTALL_LIBRARY_DIR 在 rpm/deb 模式下设置为相对路径 .,但各组件的 install 规则硬编码为 ${INSTALL_LIBRARY_DIR}/tools/...,导致实际路径变成 ./tools/...,被 CPack 的文件收集逻辑遗漏。 此外还存在: - rpmbuild 对 Ascend NPU 的 .o 文件(非标准 ELF 格式)执行 strip 失败 - 二进制文件安装后缺少执行权限 ## 解决方案 ### 1. 引入条件化变量 cmake if(PACKAGE_TYPE STREQUAL "rpm" OR PACKAGE_TYPE STREQUAL "deb") set(INSTALL_LIBRARY_DIR .) set(INSTALL_TOOLS_DIR tools) # 新增 set(INSTALL_LIB64_DIR lib64) # 新增 else() set(INSTALL_LIBRARY_DIR ${OAM_STAGING_DIR}) set(INSTALL_TOOLS_DIR ${OAM_STAGING_DIR}/tools) set(INSTALL_LIB64_DIR ${OAM_STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/lib64) endif() - **rpm/deb 包**:使用相对路径(tools/, lib64/),符合 FHS 标准 - **run 包**:保持绝对路径,行为完全不变 ### 2. 禁用 rpm 的 brp-strip cmake if(PACKAGE_TYPE STREQUAL "rpm") set(CPACK_RPM_SPEC_MORE_DEFINE "%define __strip /bin/true %define __objdump /bin/true %define debug_package %{nil}") endif() 避免对 bundle/opp/built-in 中的 Ascend NPU .o 文件执行 strip 失败。 ### 3. 显式设置二进制执行权限 cmake install(TARGETS msprofbin ${INSTALL_OPTIONAL} RUNTIME DESTINATION ${INSTALL_TOOLS_DIR}/profiler/bin PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT oam-tools ) ## 修改内容 | 文件 | 修改内容 | |------|----------| | CMakeLists.txt | 添加 INSTALL_TOOLS_DIR 和 INSTALL_LIB64_DIR 条件化变量 | | cmake/package.cmake | 禁用 rpm 的 brp-strip | | src/asys/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR | | src/msaicerr/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR | | src/msaicerr/proto_parse/CMakeLists.txt | 使用 INSTALL_LIB64_DIR | | src/hccl_test/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR | | src/operator_cmp/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR | | src/msprof/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR | | src/msprof/collector/dvvp/msprofbin/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR + 添加 PERMISSIONS | | src/msprof/collector/dvvp/acp/CMakeLists.txt | 使用 INSTALL_TOOLS_DIR + 添加 PERMISSIONS | **总计**:10 个文件,~50 行代码,18 处修改点 ## 验证结果 ### RPM 包 ✅ bash bash build.sh --pkg-type=rpm -j16 - ✅ 构建成功(241 MB) - ✅ 包含所有缺失组件 - ✅ 文件路径符合 FHS 标准 ### DEB 包 ✅ bash bash build.sh --pkg-type=deb -j16 sudo dpkg -i build_out/cann-oam-tools_*.deb - ✅ 构建成功(241 MB) - ✅ 安装测试通过 - ✅ 功能测试通过 **功能验证**: bash python3 /usr/local/Ascend/cann-9.1.0/tools/ascend_system_advisor/asys/asys.py --help ✅ /usr/local/Ascend/cann-9.1.0/tools/profiler/bin/msprof --help ✅ python3 -c "import ctypes; ctypes.CDLL('/usr/local/Ascend/cann-9.1.0/lib64/libascend_dump_parser.so')" ✅ ### RUN 包兼容性 ✅ bash bash build.sh --pkg-type=run -j16 - ✅ 构建成功 - ✅ 文件内容与修改前一致(1143 个共同文件) - ✅ 路径结构保持不变 **路径对比**: | 项目 | RPM/DEB | RUN | |------|---------|-----| | lib64 | lib64/ | aarch64-linux/lib64/ | | 设计理由 | FHS 标准 | makeself 自解压,支持多架构 | ## 如何测试 ### 构建验证 bash # 构建所有包类型 bash build.sh --pkg-type=rpm -j16 bash build.sh --pkg-type=deb -j16 bash build.sh --pkg-type=run -j16 # 验证包内容 rpm -qpl build_out/cann-oam-tools_*.rpm | grep -E "tools/|lib64/" dpkg-deb -c build_out/cann-oam-tools_*.deb | grep -E "tools/|lib64/" ### 安装测试 bash # DEB 包 sudo dpkg -i build_out/cann-oam-tools_*.deb ls -la /usr/local/Ascend/cann-9.1.0/tools/ ls -la /usr/local/Ascend/cann-9.1.0/lib64/libascend_dump_parser.so # RPM 包 sudo rpm -ivh build_out/cann-oam-tools_*.rpm ls -la /usr/local/Ascend/cann-9.1.0/tools/ ### 功能测试 bash # asys python3 /usr/local/Ascend/cann-9.1.0/tools/ascend_system_advisor/asys/asys.py --help # msprof /usr/local/Ascend/cann-9.1.0/tools/profiler/bin/msprof --help # 库加载 python3 -c "import ctypes; ctypes.CDLL('/usr/local/Ascend/cann-9.1.0/lib64/libascend_dump_parser.so')" ## 参考 - hixl#621 - PACKAGE_TYPE 条件判断方案 - hccl#2317 - set_cann_cpack_config 参数传递 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 ### 影响范围 - **正面影响**:rpm/deb 包用户可以正常使用所有 oam-tools 工具 - **兼容性**:run 包不受影响,现有用户无感知 - **风险**:低(仅影响 rpm/deb 构建路径,不改变运行时逻辑) See merge request: cann/oam-tools!520 | 5 天前 | |
[Profiling]文档补充说明 msprof/msprobe 子仓的 gitcode 访问凭证要求 Co-authored-by: z296249221<zhengkai40@huawei.com> # message auto-generated for no-merge-commit merge: !441 merge docs/submodule-credential-notice into master [Profiling]文档补充说明 msprof/msprobe 子仓的 gitcode 访问凭证要求 Created-by: z296249221 Commit-by: z296249221 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 文档补充说明 msprof/msprobe 子仓的 gitcode 访问凭证要求 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> Issue [#154](https://gitcode.com/cann/oam-tools/issues/154) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!441 | 1 个月前 | |
fix: init_env自动同步版本并安装依赖(#148) Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !419 merge fix/init-env-issue148 into master fix: init_env自动同步版本并安装依赖(#148) Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 本 PR 解决 Issue #148 中 init_env.sh 默认安装版本硬编码为 8.5.0 的问题,并补齐初始化脚本在管道执行、依赖安装、异常路径下的行为。 主要改动: - init_env.sh 默认从 version.cmake 解析 CANN 版本号,不再硬编码默认版本;本地缺少 version.cmake 时支持从 OAM_TOOLS_RAW_BASE_URL 远程获取。 - install_python_deps 改为安装仓库 requirements.txt,本地缺失时支持远程获取;获取或安装失败时返回错误,避免静默跳过。 - 远程 requirements 安装改用临时文件,不再依赖 /dev/stdin;pip 失败时保留最后几行错误输出,方便定位网络、权限或包冲突问题。 - 非 root 用户不会执行 apt/yum 安装;缺少必需系统命令时明确提示 skipping installation (non-root user) 并返回失败,避免后续编译阶段才暴露问题。 - CANN 版本解析失败或解析结果为空时显式报错并退出,避免拼接空版本下载 URL。 - 修正 ops 包芯片类型映射:910_93/910C/A3 使用 A3,910B/910b 使用 910b,950 显式使用 950。 - 中英文 quick_install 文档删除执行脚本后手动安装 Python 依赖的旧步骤,与脚本自动安装行为保持一致。 ## 关联的Issue 关联 Issue #148 ## 测试 - bash -n init_env.sh - bash init_env.sh --help - bash -c 'source <(sed "$ d" init_env.sh); get_cann_version_from_cmake version.cmake' - bash -c 'source <(sed "$ d" init_env.sh); get_ops_package_chip_type 910_93; get_ops_package_chip_type 910C; get_ops_package_chip_type 910B; get_ops_package_chip_type 910b; get_ops_package_chip_type 950' - 模拟远程 version.cmake 获取失败,验证输出明确错误并返回失败。 - 模拟非 root 缺少 cmake,验证 install_system_deps 输出 non-root 跳过安装说明并返回失败。 - 模拟远程 requirements.txt 获取失败,验证输出明确错误并返回失败。 - 模拟 pip 安装失败,验证输出最后几行 pip 错误信息并返回失败。 - git diff --check -- init_env.sh docs/zh/quick_install.md docs/en/quick_install.md - bash build.sh -u --ut --noexec ## 文档更新 更新 docs/zh/quick_install.md 和 docs/en/quick_install.md,删除过时的手动 pip install -r requirements.txt 步骤。 ## 类型标签 - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!419 | 1 个月前 | |
chore: 精简未使用 Python 依赖(#166) Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !433 merge fix/issue-166-python-deps into master chore: 精简未使用 Python 依赖(#166) Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 - 从 requirements.txt 中移除未被项目运行时直接使用的 pytest-cov、ruff、yapf、PyYAML、requests。 - coverage 已由 scripts/run_tests.sh 通过 python3 -m coverage 直接调用,无需 pytest-cov 插件。 - ruff 由 pre-commit hook 的隔离环境管理,requirements.txt 中不再重复声明。 - pandas 和 h5py 暂保留:构建同步出的 msaccucmp 比对能力中存在 CSV/HDF5 解析使用点,直接删除会带来运行时缺依赖风险。 ## 移除依赖的核实证据(可追溯性) 每个被移除依赖均已全局搜索确认在本项目代码( src/、scripts/)中无 import 引用,仅测试虚拟环境 .venv_test/ 下的第三方包使用(非项目运行时代码): | 依赖 | 核实结论 | |------|----------| | PyYAML | src/、scripts/ 无 import yaml / from yaml;仅 .venv_test/ 第三方包(torch 等)使用 | | requests | src/、scripts/ 无 import requests / from requests;仅 .venv_test/ 第三方包(fsspec、sympy 等)使用 | | pytest-cov | 覆盖率收集在 scripts/run_tests.sh:471 用 python3 -m coverage run --source=... -m pytest,非 pytest --cov;全仓无 pytest --cov 用法,coverage 依赖已保留 | | ruff | 由 pre-commit 隔离环境统一管理(.pre-commit-config.yaml),scripts/incremental_codecheck.py 作为 pre-commit 钩子在该环境运行,不依赖 requirements.txt | | yapf | 本项目代码无任何引用 | ## 关联的Issue 关联 Issue #166 ## 测试 - python3 -m pip install --dry-run --no-deps -r requirements.txt - python3 -m pytest test/ut/asys/ test/ut/msaicerr/ -q(1011 passed, 5 skipped) - git diff --check ## 文档更新 无 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [x] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/oam-tools!433 | 1 个月前 | |
feat: 补充rpm/deb包依赖声明并新增dpkg版本要求 Co-authored-by: sinat_31531339<yuanyue23@huawei.com> # message auto-generated for no-merge-commit merge: !554 merge feat/rpm-deb-depends into master feat: 补充rpm/deb包依赖声明并新增dpkg版本要求 Created-by: sinat_31531339 Commit-by: sinat_31531339 Merged-by: cann-robot Description: ## 描述 补充 rpm/deb 包构建的依赖声明,并在文档中新增 dpkg 版本要求(>= 1.19.0.5)。 主要改动: - version.cmake:补充 rpm/deb 包构建所需的依赖声明(runtime、bisheng-compiler、ops-cv、ops-math、ops-legacy、metadef、hcomm、hccl、ge-executor、ge-compiler、tbe-tik、asc-devkit、graph-autofusion、opbase、ops-nn、ops-transformer 等)。 - docs/zh/quick_install.md:前置依赖新增 dpkg >= 1.19.0.5(仅构建 deb 包时依赖)。 - docs/en/quick_install.md:同步新增 dpkg 版本要求说明。 ## 变更类型 请选择本次引入的变更类型(勾选对应项): - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 bash # 构建 deb 包(依赖 dpkg >= 1.19.0.5) bash build.sh --pkg-type=deb # 构建 rpm 包 bash build.sh --pkg-type=rpm # 构建 run 包(默认) bash build.sh ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 无 See merge request: cann/oam-tools!554 | 4 天前 |
📖 项目简介
OAM-Tools(Operations, Administration, and Maintenance)是华为 CANN 的开源运维工具集,为昇腾 AI 处理器开发者提供故障定位与性能调优两大核心能力。工具集覆盖从故障信息采集、AI Core Error 分析到 AI 任务性能采集与分析的完整运维链路,帮助开发者快速定位软硬件问题、优化 AI 任务性能。
适用场景:
- AI 训练/推理任务运行异常时,一键采集故障信息、分析 AI Core Error 根因
- AI 任务性能调优,采集各运行阶段关键性能指标,定位性能瓶颈
- 分布式训练场景下,测试集合通信(HCCL)的功能与性能
✨ 核心特性
OAM-Tools 包含四大核心组件,协同覆盖昇腾 AI 处理器的运维全场景:
| 组件 | 功能定位 | 核心能力 | 文档 | 运行示例 |
|---|---|---|---|---|
| asys(故障信息收集) | 一键式故障信息采集与诊断 | 故障信息收集、业务复跑+信息收集、软硬件/Device 状态展示、健康检查、综合检测、组件检测、trace/coredump/stackcore/coretrace/UB 文件解析、实时堆栈导出、AI Core Error 故障信息解析、性能数据采集 | 用户指南 | 示例 |
| msaicerr(AI Core Error 分析) | AI Core Error 问题定位 | AI Core Error 问题分析、Dump 文件解析与数据类型转换、运行环境检查 | 用户指南 | 示例 |
| msprof(性能调优) | AI 任务性能采集与分析 | 采集 AI 任务运行性能数据、AI 处理器系统数据、Host 侧系统数据、msproftx 数据;支持动态/延迟采集;提供 ACL/Ascend Graph/acl.json/环境变量多种采集方式 | 用户指南 | 示例 |
| hccl_test(HCCL 性能测试) | 集合通信功能与性能测试 | 分布式训练/推理场景下,基于 HCCL 单算子 API 测试集合通信的功能正确性与性能 | 用户指南 | — |
🏗️ 项目架构
OAM-Tools 采用模块化设计,四大组件相互独立又协同工作:asys 与 msaicerr 聚焦故障诊断,msprof 聚焦性能分析,hccl_test 聚焦通信测试。所有组件共享 CANN 运行时环境,通过统一的构建系统(CMake + build.sh)编译打包为 .run 安装包,安装后释放到 CANN 安装目录的 tools/ 子目录下。
目录结构:
oam-tools/
├── cmake/ # 构建配置(CMake 模块、第三方库下载脚本)
├── scripts/ # 辅助构建与检查脚本(oat_check.sh 等)
├── src/ # 源代码
│ ├── asys/ # asys:故障信息收集工具(Python)
│ ├── msaicerr/ # msaicerr:AI Core Error 分析工具(Python)
│ ├── msprof/ # msprof:性能调优工具(C++ collector + Python 分析脚本)
│ ├── hccl_test/ # hccl_test:HCCL 性能测试工具(C++)
│ ├── operator_cmp/ # 算子比对工具
│ └── third_party/ # 依赖的第三方库头文件
├── test/ # UT/ST 测试用例
├── docs/ # 项目文档(中/英文)
│ ├── zh/ # 中文文档(asys/msaicerr/profiling/hccl_test 用户指南)
│ ├── en/ # 英文文档
│ └── figures/ # 图片资源
├── init_env.sh # 开发环境一键安装脚本
├── build.sh # 项目编译脚本
├── CMakeLists.txt # CMake 主配置文件
└── version.cmake # 版本与依赖声明
🧩 支持的硬件环境
在搭建环境之前,请先确认硬件在本工具的支持范围内,若无昇腾设备也可以通过 docker 方式编译构建(详见快速安装)。
-
CPU 架构:
aarch64、x86_64 -
昇腾 AI 处理器:
npu-smi infoName 列适用产品 对应 CANN ops 包代号 910BAtlas A2 训练系列产品 / Atlas 800I A2 推理产品 910b910_93Atlas A3 训练系列产品 / Atlas A3 推理系列产品(业内"910C"对应此项) A3950Atlas 950 系列产品 950npu-smi info实际可能显示带子型号的字符串(如910B1/910B2/910B3/910B4),按"Name 列包含上述关键字"的规则匹配即可。- "910C"是商用别称。自 CANN 8.5.0 起,ops 包统一命名为
Ascend-cann-A3-ops_*,请勿在包名中拼写为910c、910_c、910_93等形式。 - 其它芯片暂不支持,欢迎提交 issue 反馈。CANN ops 包名拼接规则与下载详见快速安装。
🚀 快速开始:从零编译到验证
以下为 root 用户默认安装路径下从零跑通的最短路径,四步即可得到可用的工具。第三方库定制、离线编译、调试构建等完整参数,以及分组件的测试验证方式,见后续的「源码编译」与「安装与验证」章节。
1. 安装依赖
参考快速安装指南完成 CANN 软件包与编译依赖的安装。
2. 编译
# 非 root 用户将 /usr/local 替换为 ${HOME}
source /usr/local/Ascend/cann/set_env.sh
bash build.sh
编译产物为 build_out/cann-oam-tools_<cann_version>_linux-<arch>.run(<arch> 为 x86_64 或 aarch64)。
3. 安装
./build_out/cann-oam-tools_<cann_version>_linux-<arch>.run --full
4. 验证
重新加载环境变量后调用 asys,能正常打印帮助信息即表示安装成功:
source /usr/local/Ascend/cann/set_env.sh
asys -h
需要在真实环境中跑通各组件功能,见运行示例。
🔧 源码编译
加载环境变量
编译前请先根据 CANN 安装路径加载环境变量:
source <CANN安装路径>/set_env.sh
root 用户默认路径为
/usr/local/Ascend/cann;非 root 用户默认为${HOME}/Ascend/cann;指定路径安装时为${install_path}/cann。
执行编译
执行以下命令进行编译:
bash build.sh
如需指定第三方库路径,可通过 --cann_3rd_lib_path 参数传入:
bash build.sh --cann_3rd_lib_path=${third_party_path}
编译参数与依赖说明
--cann_3rd_lib_path:第三方库存储目录,默认值为./third_party。若本地不存在第三方库,编译脚本将自动从 gitcode 开源仓库下载各第三方库源码。- 编译过程中会自动下载闭源二进制包,该包含有保证功能正常运行所需的库及头文件,且仅提供 release 版本,即使编译选项指定为 debug,也只会下载 release 版本的 tar 包。
- 闭源二进制包按分支拉取:不指定时,编译脚本会依据当前 git 提交自动探测所属发布分支(从
master拉出的分支拉 master 包,从 9.1.0 线拉出的分支拉 9.1.0 包),探测不出时回退master。也可通过--bundle_branch=<NAME>显式指定分支,个人分支探测不准时建议显式指定。当前 OBS 上提供包的分支为master与9.1.0;指定其它分支会在配置阶段报错。 - 编译过程中会通过
git clone拉取msprof和msprobe子仓(分别用于构建 msprof 分析 wheel 和同步 msaccucmp 工具)。子仓源码位于 gitcode,使用 HTTPS 协议克隆前需配置 gitcode 个人访问令牌以替代登录密码,否则克隆会失败。 - 若编译环境无法访问网络,请参考离线编译环境准备提前完成依赖包的下载与配置,并通过
--cann_3rd_lib_path参数指定依赖包所在目录后再执行编译。离线预置脚本cmake/download_libs.py同样支持--bundle_branch指定要预置的闭源包分支(默认自动探测),须与联编时的分支保持一致。 - 闭源二进制包会解压到仓库根目录的
bundle/下。若bundle/已存在且非空,构建会复用该目录并跳过下载;如需强制重新下载或修复残缺的bundle/目录,可执行bash build.sh --make_clean后重新编译,也可手动删除bundle/后再次执行bash build.sh。 - 更多编译参数请通过
bash build.sh -h查看。
编译完成后,build_out 目录下会生成 cann-oam-tools_<cann_version>_linux-<arch>.run 软件包,其中 <cann_version> 为版本号,<arch> 为操作系统架构(可选值:x86_64 或 aarch64)。
📦 安装与验证
安装
可执行如下命令安装编译生成的 oam-tools 软件包:
./build_out/cann-oam-tools_<cann_version>_linux-<arch>.run --full --install-path=${install_path}
安装完成之后,用户编译生成的 oam-tools 软件包会替换已安装 CANN 开发套件包中的 oam-tools 相关软件。
如果您的环境上
grep版本大于 3.8.0,安装时会出现告警,例如grep: warning: stray \ before -,这是由于 grep 高版本对表达式有更严格的校验,但并不影响安装和使用。
验证
编译完成后,用户可以进行测试验证项目功能是否正常。
Python 依赖安装已在环境准备中处理,无需额外操作。
# 执行所有组件测试
bash build.sh -u
# 指定单独组件测试(可选:asys / msaicerr / msprof / install / upgrade / uninstall / all)
bash build.sh -u --component msprof
--component 与测试范围、环境准备章节的对应关系如下:
| component | 测试范围 | 环境准备索引 | 示例 |
|---|---|---|---|
asys |
asys Python UT + ST | 环境准备、环境变量配置 | bash build.sh -u --component asys |
msaicerr |
msaicerr Python UT + ST | 环境准备、环境变量配置 | bash build.sh -u --component msaicerr |
msprof |
msprof C++ gtest UT | 源码编译、离线编译环境准备 | bash build.sh -u --component msprof --ut |
install |
安装包安装 ST | 源码编译、安装 | bash build.sh -u --component install --st |
upgrade |
安装包升级 ST | 源码编译、安装 | bash build.sh -u --component upgrade --st |
uninstall |
安装包卸载 ST | 源码编译、安装 | bash build.sh -u --component uninstall --st |
all |
全部可用 UT + ST | 环境准备、源码编译 | bash build.sh -u |
install、upgrade、uninstall仅包含 ST,用例依赖build_out/cann-oam-tools_<cann_version>_linux-<arch>.run。推荐通过上表中的build.sh -u --component ... --st运行,脚本会先完成构建打包;若直接执行scripts/run_tests.sh,需先确保build_out/下已有可用.run包。
UT 测试用例编译输出目录为 build,如果想清除历史编译记录:
rm -rf build_out/ build/
🅿️ Pre-commit
pre-commit 是一个用于管理和维护 Git 预提交钩子(hooks)的框架,通过在代码提交前自动化执行代码检查、格式化和安全扫描,确保代码质量并统一团队规范,显著减少 CI/CD 流水线失败并提升协作效率。
本仓已配置 pre-commit,用户可以参考 CANN 社区的pre-commit 配置指导书中第 3 章节安装 pre-commit。OAT 检查工具已改用 Python 版本 oat-py(通过 pip install oat-py>=1.0.0 安装),无需配置 Java/Maven 环境;首次运行时 pre-commit 会为各 hook 创建隔离的虚拟环境,耗时稍长。