你需要一份华为昇腾(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) | 输出示例:mindspore-ascend 2.3.0、torch_npu 2.1.0 |
| cat /usr/local/Ascend/ascend-toolkit/version.info | 查看CANN工具包版本 | 输出:CANN_Version: 7.0.RC1、Build_time: 2024-01-01 |
| env | grep ASCEND | 检查昇腾环境变量配置(关键路径) | 输出:ASCEND_HOME=/usr/local/Ascend、ASCEND_CANN_VERSION=7.0.RC1 |
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的进程 | 找到占用进程后用kill -9 [PID]终止 |
npu-smi list -t process -i 0 | 查看指定NPU卡的进程占用(更精准) | 输出进程PID、占用内存、所属用户 |
编译与运行指令(适配NPU)
针对昇腾NPU的代码编译、运行,重点覆盖MindSpore/Ascend PyTorch框架。
MindSpore(昇腾版)运行指令
# 单卡运行(指定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=AscendAscend PyTorch运行指令
# 配置NPU可见设备
export ASCEND_DEVICE_ID=0
# 单卡运行
python train.py --device=npu
# 多卡运行(使用昇腾CCL)
python -m torch.distributed.launch --nproc_per_node=8 train.py --device=npuCANN算子编译指令
# 昇腾算子编译(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 | 性能分析工具(采集算子耗时、NPU资源使用) | 命令见下方代码块 |
msnpureport | MindSpore NPU性能分析工具 | 命令见下方代码块 |
profiler.sh | 昇腾原生性能分析脚本(CANN自带) | 命令见下方代码块 |
# ascend-perf-tool:采集运行时性能数据并生成报告
ascend-perf-tool profile --command "python train.py" --output perf_data
ascend-perf-tool analyze --input perf_data --output report
# msnpureport:MindSpore 性能采集三步(开→跑→关)
msnpureport -g on -o msnpureport_log
python train.py
msnpureport -g off -o msnpureport_log
# profiler.sh: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 | 昇腾日志解析工具 | 命令见下方代码块 |
# 解析SLOG日志并过滤错误级别
ascend-log-tool --input slog.log --output slog_analysis.log
ascend-log-tool --input slog.log --level ERROR总结
- 基础检查:核心用
npu-smi info验证设备状态,cat version.info检查CANN版本,确保环境适配。 - 设备管理:用
npu-smi set重置/配置设备,npu-smi list -t process排查进程占用。 - 性能调优:优先用
ascend-perf-tool分析算子耗时,npu-smi info -t usages监控算力利用率。 - 调试排错:开启
ASCEND_SLOG_PRINT_TO_STDOUT=1输出底层日志,结合tail /var/log/messages定位硬件/驱动问题。
这些指令覆盖了昇腾NPU开发的90%以上日常场景,建议根据使用的框架(MindSpore/Ascend PyTorch)重点记忆对应运行和调试指令。