你需要一份华为昇腾(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.0torch_npu 2.1.0 | | cat /usr/local/Ascend/ascend-toolkit/version.info | 查看CANN工具包版本 | 输出:CANN_Version: 7.0.RC1Build_time: 2024-01-01 | | env | grep ASCEND | 检查昇腾环境变量配置(关键路径) | 输出:ASCEND_HOME=/usr/local/AscendASCEND_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=Ascend

Ascend 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=npu

CANN算子编译指令

# 昇腾算子编译(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资源使用)命令见下方代码块
msnpureportMindSpore 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

总结

  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)重点记忆对应运行和调试指令。