mcpField
A
ascend-dmi

ascend-dmi

github.com/ascend-ai-codingCloud & DevOps17842 installsUpdated 2w ago
Repository

About ascend-dmi

ascend-dmi is a procedural skill for querying and diagnosing Huawei Ascend NPU devices with the ascend-dmi utility. It guides environment checks, parameter selection, risk confirmation, command execution, and result interpretation.

Key features

  1. 01Checks ascend-dmi and required CANN environment
  2. 02Guides parameters for queries and tests
  3. 03Builds commands for diagnostics and NPU recovery
  4. 04Applies risk checks and confirmation steps
  5. 05Interprets test results and key metrics

Use cases

  1. 01Checking Ascend NPU device status
  2. 02Running bandwidth, compute, or power tests
  3. 03Performing health and performance checks
  4. 04Recovering an NPU after confirming risks

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/ascend-ai-coding/awesome-ascend-skills --skill ascend-dmi

After installing, type/ascend-dmiin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

assets/
report-template.md
references/
command-cheatsheet.md
constraints.md
environment-setup.md
execution-guide.md
output-interpretation.md
risk-assessment.md
references/parameters/
bandwidth.md
common.md
diagnosis.md
flops.md
power.md
scripts/templates/
bandwidth-test.sh
diagnose-test.sh
health-check.sh
stress-test.sh

Details

From the project README

Ascend DMI 工具使用指南

Ascend DMI(Ascend Device Management Interface)是华为昇腾 NPU 设备的管理和诊断工具。

你必须严格按照本文件的步骤顺序执行,不得跳步、不得自行发明替代方案。 每一步都有明确的通过条件,未通过则不能进入下一步。这不是参考文档,是你必须遵守的操作规程。

快速决策:根据操作类型选择路径

用户请求
  │
  ├─ 信息查询(-v/-i/-c/-h)或眼图测试(--sq)
  │   → 【快速路径】检查 ascend-dmi → 确认参数 → 构建命令 → 直接执行 → 解读输出
  │
  ├─ 性能测试(--bw/-f/-p)或 healthCheck/performanceCheck
  │   → 【标准路径】检查 ascend-dmi + CANN → 确认参数 → 构建命令 → 告知风险并确认 → 执行 → 解读输出
  │
  └─ 压力测试(--dg -s)或 NPU 恢复(-r)
      → 【高风险路径】检查 ascend-dmi + CANN → 确认参数 → 构建命令 → 二次确认 → 检查设备占用 → 执行 → 解读输出

注意:标准路径和高风险路径都必须完成 CANN 检查才能执行命令。见第 2 步。

第 1 步:远程还是本地?

  • 本地(用户未提及远程 IP/主机名):直接在当前服务器执行 ascend-dmi 命令

  • 远程(用户提到了 IP 地址、主机名或"远程服务器"):必须先调用 remote-server-guide skill 建立连接,不要自己尝试 SSH。原因:直接 ssh 无法在非交互环境中输入密码,会认证失败。remote-server-guide 会通过 tmux 等方式安全处理密码输入。连接建立后,再在远程执行后续步骤。

    禁止行为:不要直接执行 ssh user@host "command",这在 Claude 环境中一定会失败(无法输入密码)。

第 2 步:环境检查

环境检查分两部分,必须按顺序完成两部分后才能执行命令。

2a. 检查 ascend-dmi
which ascend-dmi && ascend-dmi -v

如果不可用:

source /usr/local/Ascend/toolbox/set_env.sh
which ascend-dmi

仍不可用则读取 [references/environment-setup.md] 按步骤安装 MindCluster ToolBox。

2b. 检查 CANN(性能测试、诊断、压力测试必须)

带宽测试(--bw)、算力测试(-f)、功耗测试(-p)、健康检查(--dg)、压力测试(-s)都依赖 CANN 环境。不完成 CANN 检查就执行这些命令一定会失败,没有例外。

验证命令(整个流程中反复使用这个命令来判断 CANN 是否可用):

python3 -c "import acl; print(acl.get_soc_name())"
  • 输出芯片型号(如 Ascend910B)= CANN 可用 ✓ → 进入第 3 步
  • 任何报错(ModuleNotFoundError、ImportError 等)= CANN 不可用 ✗ → 执行下方修复流程

CANN 不可用时的修复流程(必须按 1→2→3→4 顺序执行,不得跳步):

1. 先问用户。 向用户提问:"CANN 安装在哪个路径?"然后等待用户回复。

  • 用户给出路径 → source <路径>/set_env.sh → 运行验证命令 → 通过则进入第 3 步,失败则告知用户该路径不可用并继续步骤 2
  • 用户说不知道 → 进入步骤 2

2. 征得用户同意后自动查找。 先问用户"是否允许我自动搜索 CANN 路径?"得到同意后,按以下优先级逐个尝试(CANN 8.5.0+ 目录名为 cann,旧版为 ascend-toolkit):

优先级尝试的命令
②source /usr/local/Ascend/ascend-toolkit/set_env.sh → 验证
①source /usr/local/Ascend/cann/set_env.sh → 验证
①source /home/miniconda3/Ascend/cann/set_env.sh → 验证
③find /home -path "*/Ascend/cann/set_env.sh" -o -path "*/Ascend/ascend-toolkit/set_env.sh" 2>/dev/null,对找到的每个路径 source → 验证

每个优先级的处理方式完全相同:

source <路径>/set_env.sh → python3 -c "import acl; print(acl.get_soc_name())"
  ├─ 验证通过(输出芯片型号)→ 成功,进入第 3 步
  └─ 验证失败(任何报错)→ 放弃这个路径,尝试下一优先级

"看到目录存在"不等于"CANN 可用"。 目录存在、文件存在、set_env.sh 能 source,都不能代替验证命令。只有 python3 -c "import acl; print(acl.get_soc_name())" 成功才算 CANN 可用。验证失败直接放弃该路径。目录下不存在set_env.sh文件也直接放弃该路径。

3. 全部失败 → 停下来。 告知用户"自动查找 CANN 失败,请提供准确的 CANN 安装路径",然后停止操作,等待用户回复。不要继续执行 ascend-dmi 命令。


以下行为被禁止,因为它们会导致环境损坏或命令执行出错:

  • ✗ 跳过步骤 1 直接搜索(用户可能直接知道路径,搜索是浪费时间)
  • ✗ 用 export PATH=...、export PYTHONPATH=...、export LD_LIBRARY_PATH=... 手动拼凑环境
  • ✗ 验证失败后在同一个路径上反复尝试修复(换 python 版本、装 pip 包、改权限等)
  • ✗ 看到 /usr/local/Ascend/ascend-toolkit 或 /usr/local/Ascend/cann 目录存在就认为找到了,不运行验证命令
  • ✗ 所有路径都失败后仍然继续执行 ascend-dmi 测试命令

第 3 步:确认测试参数

在构建命令前,先向用户确认具体的测试参数。用户的请求中可能已包含部分参数,只需补全缺失的部分。如果用户已在请求中明确指定了全部参数,则无需重复询问。

先执行 npu-smi info 获取可用设备列表,以便向用户展示可选项。

各测试类型需确认的参数

带宽测试:

  • 测试模式:h2d / d2h / d2d / p2p(可多选)
  • 测试哪些卡(设备 ID),还是所有卡?
  • 是否指定数据大小(-s)?注意:D2D 在 A2/A3 上不支持 -s
  • P2P 是否指定源/目标设备(-ds/-dd)?不指定则测全部设备间矩阵

算力测试:

  • 数据类型:fp16 / fp32 / int8 / bf16 / hf32(默认 fp16,不同产品支持不同,详见 [references/constraints.md])
  • 测试哪些卡(-d),还是整机(--all)?两者互斥
  • 是否调整执行次数(--et,默认 60,单位十万)?

功耗测试:

  • 测试类型:edp(估计设计功耗)还是 tdp(热设计功耗)?
  • 测试时长(--dur,默认 600 秒)

健康检查 / 性能规格:

  • 测试哪些卡,还是所有卡?

压力测试:

  • 测试项目:aicore / hbm(片上内存)/ bandwidth(P2P)/ edp / tdp / aicpu?
  • 测试哪些卡?注意:aicpu 必须单独执行,不能与其他项组合

NPU 恢复:

  • 恢复哪张卡?(必须指定 -d)

眼图测试:

  • 测试类型:pcie / hbm / roce / all?
  • 测试哪些卡?

第 4 步:构建命令

根据用户确认的参数,按下表构建命令。

命令速查
操作命令模板风险
版本ascend-dmi -v无
设备状态ascend-dmi -i [-b|--dt]无
兼容性检查ascend-dmi -c无
眼图测试ascend-dmi --sq -t pcie|hbm|roce|all [-d ID]无
带宽测试ascend-dmi --bw -t h2d|d2h|d2d|p2p [-d ID] [-s SIZE] [-q]中
算力测试ascend-dmi -f -t fp16|fp32|int8|bf16|hf32 [-d ID] [--all] [-q]中
功耗测试ascend-dmi -p [-pt edp|tdp] [--dur SEC] [-q]中
健康检查ascend-dmi --dg --se healthCheck [-d ID] [-q]中
性能规格ascend-dmi --dg --se performanceCheck [-d ID] [-q]中
压力测试ascend-dmi --dg --se stressTest [-d ID] [-q] 或 -s -i ITEM高
NPU 恢复ascend-dmi -r -d ID [-q]高

完整命令和参数组合见 [references/command-cheatsheet.md]。具体参数说明见 [references/parameters/] 下的各文件。

注意事项
  • -q 参数:对中/高风险操作,在用户确认后添加 -q 跳过命令行交互提示

第 5 步:风险确认与执行

无风险操作(信息查询、眼图测试)

直接执行,无需额外确认。

中等风险操作(带宽/算力/功耗测试、健康检查、性能规格)

这些操作会独占 NPU 设备,中断正在运行的训练或推理任务。执行前:

  1. 告知用户影响:"该测试会独占 NPU,正在运行的训练/推理任务将被中断"
  2. 获取用户确认后执行
  3. 添加 -q 参数跳过命令行交互提示
高风险操作(压力测试、NPU 恢复)

这些操作可能导致长时间高负载、硬件过热或 NPU 暂时不可用。执行前:

  1. 明确告知具体风险(如"压力测试会持续数小时高负载运行,可能触发硬件保护机制")
  2. 检查设备占用:fuser -v /dev/davinci*
  3. 要求用户二次确认:确认已停止相关业务、了解风险
  4. 添加 -q 参数

详细风险矩阵见 [references/risk-assessment.md]。

第 6 步:解读输出

执行完成后,提取关键指标并给出结论:

带宽测试:关注 Bandwidth(GB/s) 值。典型参考:H2D 20-28 GB/s, D2H 25-30 GB/s, D2D 760-800 GB/s, P2P 25-55 GB/s。注意:D2D 在 A2/A3 上传输大小由 AI Core 决定、不支持 -s 参数;P2P 不指定 -ds/-dd 时输出的是设备间矩阵。

算力测试:关注 TFLOPS/TOPS 值。注意区分测试模式:使用 --all 时,TFLOPS 是整机所有卡的算力总和,不是单卡算力;不带 --all 时才是单卡算力。判断是否达标时必须对应正确的规格(整机规格 = 单卡规格 × 卡数)。如显著低于产品规格,可能是温度过高触发降频。

功耗测试:关注 Power(W) 和 Temperature(°C)。温度应低于 90°C。

诊断测试:PASS = 正常,FAIL = 需处理,SKIP = 当前产品不支持,WARN = 关注警告级别。

详细结果解读方法见 [references/output-interpretation.md]。

资源索引

需要时读取
安装/配置 ascend-dmi 或 CANN[references/environment-setup.md]
查看完整命令和参数[references/command-cheatsheet.md] + [references/parameters/]
详细风险评估[references/risk-assessment.md]
深入解读测试结果[references/output-interpretation.md]
使用约束和限制[references/constraints.md]
命令模板示例[scripts/templates/]
测试报告模板[assets/report-template.md]

Comments

Markdown supported