您当前的位置: 首页 >  ar

RuiH.AI

暂无认证

  • 3浏览

    0关注

    274博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

RuiH.AI 发布时间:2021-08-06 22:39:39 ,浏览量:3

目录
  • 前言
  • 报错信息以及原因
    • 错误提示
    • 出错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

完事收工

关注
打赏
1658651101
查看更多评论
立即登录/注册

微信扫码登录

0.0398s