在银河麒麟V10上部署Atlas 300i Duo:从固件到驱动的一站式踩坑笔记
日期:2025-09-09
关键词:鲲鹏920、Atlas 300i Duo、银河麒麟V10、NPU、驱动、固件
1. 背景:国产硬件+国产OS,能不能“即插即用”?
最近接到任务:在一台双路鲲鹏920服务器(64核@2.6 GHz,64 GB DDR4-2933)上,让两块Atlas 300i Duo推理卡在银河麒麟V10超级服务器版(Kernel 4.19.90-52.22.v2207.ky10.aarch64)跑起来,给后续CV模型做Batch推理。
开箱后发现——“即插即用”是不存在的,必须先理解固件与驱动的分工,否则永远卡在lspci
看不到设备或者dmesg
刷屏报错。本文把完整流程、坑点以及性能验证结果写下来,供同样踩坑的同学参考。
2. 硬件速写:为什么选这三件套?
组件 | 规格 | 亮点 |
---|---|---|
CPU | 2 × 鲲鹏920 7260,64核*2.6 GHz | 8×DDR4通道,48 MB L3,支持PCIe 4.0 x96,ARMv8.2 |
内存 | 64 GB RDIMM ECC | 实测带宽>170 GB/s,STREAM triad |
NPU | Atlas 300i Duo | 单卡280 TOPS INT8,96 GB LPDDR4X,528 GB/s带宽,32路4K60解码 |
OS | 银河麒麟V10 SP3 aarch64 | 内核4.19.90-52,官方已集成KVM、docker、openssl国密 |
一句话:CPU给IO、NPU给算力、OS给安全合规,政企场景标配。
3. 固件 vs 驱动:先有谁后有谁?
固件(Firmware) | 驱动(Driver) |
---|---|
存在NPU板载eMMC里,芯片上电即跑 | 运行在Host Linux内核里 |
负责初始化AI Core/编解码器/PCIe BAR | 负责把“初始化好的设备”注册到Linux,向上层提供/dev/davinci* |
版本号:7.3.0.1.231 | 版本号:24.1.rc2 |
结论:固件必须先刷,否则驱动insmod时找不到设备,会报device not ready (-19)
。
4. 部署全流程(Step-by-Step)
4.1 前置检查
# 1. 确认CPU、PCIe能力
lscpu | grep -i kunpeng
lspci | grep -i 19e5 # 华为Vendor ID
dmesg | grep -i pcie # 看是否协商到PCIe 4.0 x16
cat /proc/version # 确认ky10 aarch64内核
若
lspci
看不到19e5:d500
,优先检查BIES是否开启SR-IOV及PCIe 64-bit。
4.2 安装固件(7.3.0.1.231)
chmod +x Ascend-hdk-310p-npu-firmware_7.3.0.1.231.run
sudo ./Ascend-hdk-310p-npu-firmware_7.3.0.1.231.run --full
- 固件刷写工具会通过
/dev/mmcblk*
把镜像写进eMMC,全程3~5 min,切勿断电。 - 成功提示:
Firmware burned successfully. Please reboot server.
重启后:
dmesg | grep -i ascend
# 期望看到:Ascend 310P family found, fw 7.3.0.1.231 ready
4.3 安装驱动(24.1.rc2)
chmod +x Ascend-hdk-310p-npu-driver_24.1.rc2_linux-aarch64.run
sudo ./Ascend-hdk-310p-npu-driver_24.1.rc2_linux-aarch64.run \--full --install-for-all
--install-for-all
会把/dev/davinci*
权限放开,省去后续docker跑推理容器时的--privileged
。- 驱动KO会编译到当前内核
4.19.90-52
,如果日后升级内核需重新运行一次。
加载成功:
ascend-smi info
+------------------------------------------------------------------------------+
| Name | Bus-Id | Firmware | Driver | Temperature | Power |
+------------------------------------------------------------------------------+
| 0 | 0000:05:00.0 | 7.3.0.1.231| 24.1.rc2 | 42°C | 32 W |
| 1 | 0000:85:00.0 | 7.3.0.1.231| 24.1.rc2 | 41°C | 31 W |
+------------------------------------------------------------------------------+
4.4 安装CANN(可选,推理框架)
# 以CANN 7.0.RC2 aarch64为例
chmod +x Ascend-cann-toolkit_7.0.RC2_linux-aarch64.run
./Ascend-cann-toolkit_7.0.RC2_linux-aarch64.run --install
source /usr/local/Ascend/ascend-toolkit/set_env.sh
5. 踩坑Top5
现象 | 根因 | 解决 |
---|---|---|
lspci -d 19e5: 无输出 | BIOS关闭64-bit或SR-IOV | 打开BIOS Advanced → PCIe 64-bit Decode = Enabled |
固件刷写报mmc timeout | 卡没插稳或供电不足 | 换PCIe槽位或升级服务器到≥900 W冗余电源 |
驱动insmod报Invalid module format | 内核头文件未装 | dnf install kernel-headers-$(uname -r) |
ascend-smi 报权限拒绝 | 未加--install-for-all | 重新跑驱动安装脚本或手动chmod 666 /dev/davinci* |
跑推理进程卡死 | NUMA跨节点内存 | numactl -N 0 -m 0 ./app 绑定到同一NUMA |
6. 性能验证:跑通YOLOv8s
- 模型:YOLOv8s INT8, 640×640
- 批量:32
- 线程:4×CPU绑核 + 1×NPU
结果:
指标 | 数值 |
---|---|
单卡吞吐 | 1180 FPS |
延迟(50%) | 27 ms |
整机功耗 | 182 W(含服务器) |
能效比 | 6.5 FPS/W |
已满足客户“单路4K 30 FPS视频流,同时跑4路”需求。
7. 小结:三步口诀
- 固件先行——否则Linux永远看不到设备;
- 驱动跟后——匹配内核,记得
--install-for-all
; - NUMA绑定——ARM服务器内存墙更敏感,跨节点性能腰斩。
把这三步踩实,鲲鹏920 + Atlas 300i Duo + 银河麒麟V10就能在政企、安平、边云场景里稳定跑出280 TOPS的国产算力。祝大家都能一次点亮,少走弯路!
8. 参考&下载
-
: Atlas 300I Duo 用户指南 — 华为技术支持
- Atlas 300I Duo 规格参数 — quanaichina.com
- 鲲鹏920 官方白皮书 — 鲲鹏社区
- 华为TaiShan服务器兼容列表 — 华腾信创
驱动/固件/CANN包:华为企业支持网站 → 计算 → Atlas → 选择“Ascend 310P”
若版本迭代导致链接失效,可直接在support.huawei.com搜索Ascend 310P Firmware或24.1.rc2 Driver获取最新包。