华为Atlas200DK(番外篇)ACL初始化报错: std::bad_alloc ;通过gparted给SD卡(Ubuntu)分配空间;升级CANN软件包;查看升级后的系统软件版本

本文记录了在CANNYOLOX转C++开发过程中遇到的初始化报错,涉及旧版NPU固件驱动的bug。详细介绍了如何下载、升级官方NPU固件,处理空间不足导致的'CheckPartitionSpace'报错,并提供了CANN推理软件包升级指南。
摘要由CSDN通过智能技术生成

前言

这几天在把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

完事收工

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值