- 前言
- 报错信息以及原因
- 错误提示
- 出错Atlas200DK上的软硬件版本
- 出错原因
- 解决方法
- 下载官方NPU固件包
- 解压缩固件包,运行升级脚本
- 升级时报错“CheckPartitionSpace partition space check failed”
- 为SD卡重新分配空间
- CANN推理软件包升级
- 下载CANN升级脚本和软件包
- 执行升级脚本
- 查看升级后的固件版本
这几天在把CANN YOLOX从Py版改写为C++版,又是一路踩坑。
这里记录一个Atlas200DK自身驱动BUG导致的初始化报错:bad_alloc,以及对应的解决方法
报错信息以及原因 错误提示在执行以下设备管理操作时,
ret = aclrtSetDevice(deviceId);
出现以下报错
[INFO] Acl init ok
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted
出错Atlas200DK上的软硬件版本
CANN社区版5.0.2.alpha003 固件与驱动版本1.0.10.alpha NPU驱动21.0.1(旧版)
出错原因旧版NPU固件驱动本身含有BUG
解决方法升级新版NPU固件驱动即可,但在升级时可能遇到一些小问题。升级操作步骤如下
下载官方NPU固件包官方固件包
把该固件包下载到主机上,然后通过ssh scp把固件包传到Atlas200DK上,可以根据我之前的博客操作。
解压缩固件包,运行升级脚本把固件包上传到Atlas200DK后,在Atlas上进行如下操作
su
cp package_file_path /opt/mini # package_file_path是固件包在Atlas中的位置
# /opt/mini下可能已经有一个minirc_install_phase1.sh,但不影响以下操作
tar --no-same-owner -zxf A200dk-npu-driver-{software version}-ubuntu18.04-aarch64-minirc.tar.gz --strip-components 2 driver/scripts/minirc_install_phase1.sh
# 运行升级脚本
./minirc_install_phase1.sh
# 脚本运行完后会提示please reboot完成升级
reboot
# 升级完成
升级时报错“CheckPartitionSpace partition space check failed”
这个报错的原因是在给Atlas200DK制卡时,没有预留0.5G的空间来升级固件。
解决方法就是使用gparted来重新给SD卡划分空间。
为SD卡重新分配空间用读卡器把SD卡与ubuntu服务器连接后,在服务器上,
sudo apt-get install gparted
gparted
在gparted界面上,找到SD卡对应设备,例如32G的SD卡就如下所示: 卸载分区:
调整分区大小,比如调整/dev/sdb3分区的空间大小:
Free space following指的是给/dev/sdb3下方提供unallocated的空间 New size指的是给/dev/sdb3调整空间 Free space preceding指的是给/dev/sdb3上方,也就是/dev/sdb2下方提供unallocated空间。 如果你想要给/dev/sdb1和/dev/sdb2分区增加空间,不能直接对这俩分区Resize,而是要先把未分配的空间一个一个移到相应分区的上方或者下方,然后再Resize。
例如以下的unallocated空间就只能个/dev/sdb3分区Resize。 点击红框中的绿色勾来完成Unallocated空间以及分区Resize的操作。(下图就生成了一个新的Unallocated空间)
把每个分区都调整成不少于512MB的Unused空间就能够进行NPU固件驱动升级了。
CANN推理软件包升级既然这次因为BUG要升级固件,那下次可能就要升级软件包,因此提前在这记录一下CANN软件包的升级方法。
下载CANN升级脚本和软件包官方升级脚本 官方CANN推理软件包
也可以通过wget获取升级脚本
wget https://gitee.com/ascend/tools/raw/master/update_200dk/update_200dk.sh
然后把脚本和软件包通过ssh scp传到Atlas200DK中,放到同一目录下。
执行升级脚本su
cd package_path
bash update_200dk.sh
# 升级完成后
exit
source ~/.bashrc
查看升级后的固件版本
su
# 查看driver版本
cat /var/davinci/driver/version.info
# 查看固件系统版本号
cd /var/davinci/driver/
./upgrade-tool --device_index -1 --system_version
# 查看固件的组件版本号
cd /var/davinci/driver/
./upgrade-tool --device_index -1 --component -1 --version
# 查看AI CPU版本号
cat /home/HwHiAiUser/Ascend/opp/Ascend310RC/aicpu/version.info
# 查看ACL版本号
cat /home/HwHiAiUser/Ascend/acllib/version.info
完事收工