你需要一份华为昇腾(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 list | grep ascend` | 检查昇腾Python依赖包(如mindspore-ascend、torch_npu) |
cat /usr/local/Ascend/ascend-toolkit/version.info | 查看CANN工具包版本 | 输出:CANN_Version: 7.0.RC1、Build_time: 2024-01-01 |
| `env | grep 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 -ef | grep ascend` | 查看占用NPU的进程 |
npu-smi list -t process -i 0 | 查看指定NPU卡的进程占用(更精准) | 输出进程PID、占用内存、所属用户 |
三、编译与运行指令(适配NPU)
针对昇腾NPU的代码编译、运行,重点覆盖MindSpore/Ascend PyTorch框架。
1. MindSpore(昇腾版)运行指令
| |
2. Ascend PyTorch运行指令
| |
3. CANN算子编译指令
| |
四、性能调优指令
用于分析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