张芷铭的个人博客

你需要一份华为昇腾(Ascend)NPU开发中常用指令的总结,我会按环境检查、设备管理、编译运行、性能调优、日志调试五大核心场景分类整理,覆盖从基础环境验证到高级调优的全流程指令,方便你日常开发和问题排查。

一、基础环境与版本检查指令

这类指令用于验证NPU驱动、CANN、框架等核心组件的安装和版本适配情况,是开发前的基础检查步骤。

指令功能说明示例输出(关键信息)
npu-smi info查看NPU设备状态、硬件信息、驱动版本(最核心指令)```+—————————————————————————–+
npu-smi 23.0.RC2 Version: 23.0.RC2
+——————-+——————————-+————————————–+```
ascend-dmi查看NPU硬件详细信息(型号、序列号、固件版本)输出包含:NPU型号(Ascend 910B)、SN号、BMC版本、固件版本等
`pip listgrep ascend`检查昇腾Python依赖包(如mindspore-ascend、torch_npu)
cat /usr/local/Ascend/ascend-toolkit/version.info查看CANN工具包版本输出:CANN_Version: 7.0.RC1Build_time: 2024-01-01
`envgrep ASCEND`检查昇腾环境变量配置(关键路径)

二、NPU设备管理指令

用于管理NPU设备状态、算力分配、进程监控等,解决设备占用、资源冲突问题。

指令功能说明常用参数/示例
npu-smi set -t power -i 0 -d 150设置指定NPU设备的功耗上限(单位:W)-i 0:设备0;-d 150:功耗150W
npu-smi set -t reset -i 0重置指定NPU设备(解决设备卡死)-i 0:重置第0卡;-i all:重置所有卡
npu-smi info -t board -i 0查看单卡硬件详情(电压、频率、温度)-t board:硬件板卡信息;-t memory:内存信息
`ps -efgrep ascend`查看占用NPU的进程
npu-smi list -t process -i 0查看指定NPU卡的进程占用(更精准)输出进程PID、占用内存、所属用户

三、编译与运行指令(适配NPU)

针对昇腾NPU的代码编译、运行,重点覆盖MindSpore/Ascend PyTorch框架。

1. MindSpore(昇腾版)运行指令

1
2
3
4
5
6
7
8
# 单卡运行(指定NPU设备)
python train.py --device_target=Ascend --device_id=0

# 多卡分布式运行(昇腾910B常用8卡)
mpirun -n 8 python train.py --device_target=Ascend --distribute=True

# 静态图模式运行(MindSpore NPU推荐)
python -m mindspore.run --mode=0 train.py --device_target=Ascend

2. Ascend PyTorch运行指令

1
2
3
4
5
6
7
8
# 配置NPU可见设备
export ASCEND_DEVICE_ID=0

# 单卡运行
python train.py --device=npu

# 多卡运行(使用昇腾CCL)
python -m torch.distributed.launch --nproc_per_node=8 train.py --device=npu

3. CANN算子编译指令

1
2
3
4
5
6
7
# 昇腾算子编译(ATC工具,模型转换)
atc --model=model.onnx --framework=5 --output=model_om \
    --input_format=NCHW --input_shape="input:1,3,224,224" \
    --soc_version=Ascend910B # 适配硬件型号

# 查看ATC版本
atc --version

四、性能调优指令

用于分析NPU算力利用率、内存占用、算子耗时,定位性能瓶颈。

指令功能说明示例
npu-smi info -t usages -i 0实时查看NPU算力(AICore)、内存、带宽利用率输出:AICore Usage: 85%Memory Usage: 70%
ascend-perf-tool profile性能分析工具(采集算子耗时、NPU资源使用)```bash

采集运行时性能数据

ascend-perf-tool profile –command “python train.py” –output perf_data

生成性能报告

ascend-perf-tool analyze –input perf_data –output report

| `msnpureport` | MindSpore NPU性能分析工具 | ```bash
# 启动性能采集
msnpureport -g on -o msnpureport_log
# 运行脚本
python train.py
# 停止采集并生成报告
msnpureport -g off -o msnpureport_log
``` |
| `profiler.sh` | 昇腾原生性能分析脚本(CANN自带) | ```bash
# 进入CANN工具目录
cd /usr/local/Ascend/ascend-toolkit/latest/tools/profiler
# 启动性能分析
./profiler.sh -d 0 -o profiler_result --cmd "python train.py"
``` |

### 五、日志与调试指令
用于查看NPU驱动日志、框架日志,定位运行报错(如算子适配、内存溢出)。

| 指令 | 功能说明 | 示例 |
|------|----------|------|
| `tail -f /var/log/messages | grep ascend` | 查看昇腾驱动系统日志 | 定位NPU硬件/驱动层面的报错(如设备离线、权限问题) |
| `export ASCEND_SLOG_PRINT_TO_STDOUT=1` | 开启昇腾SLOG日志打印到控制台 | 运行脚本时实时输出NPU底层日志,定位算子执行失败 |
| `export MS_LOG_LEVEL=DEBUG` | 开启MindSpore DEBUG级日志 | 输出MindSpore适配NPU的详细日志,定位框架层报错 |
| `export TORCH_NPU_LOG_LEVEL=DEBUG` | 开启Ascend PyTorch DEBUG日志 | 输出PyTorch-NPU适配的详细日志,定位算子不支持问题 |
| `ascend-log-tool` | 昇腾日志解析工具 | ```bash
# 解析SLOG日志
ascend-log-tool --input slog.log --output slog_analysis.log
# 过滤错误日志
ascend-log-tool --input slog.log --level ERROR
``` |

### 总结
1. **基础检查**:核心用 `npu-smi info` 验证设备状态,`cat version.info` 检查CANN版本,确保环境适配。
2. **设备管理**:用 `npu-smi set` 重置/配置设备,`npu-smi list -t process` 排查进程占用。
3. **性能调优**:优先用 `ascend-perf-tool` 分析算子耗时,`npu-smi info -t usages` 监控算力利用率。
4. **调试排错**:开启 `ASCEND_SLOG_PRINT_TO_STDOUT=1` 输出底层日志,结合 `tail /var/log/messages` 定位硬件/驱动问题。

这些指令覆盖了昇腾NPU开发的90%以上日常场景,建议根据使用的框架(MindSpore/Ascend PyTorch)重点记忆对应运行和调试指令。

Comments