CANN编码的一些报错汇编

  1. [acl_init]-841: aclInit failed with 100002.

介绍一下背景,就是CANN体验营里有2个小功能的串接。这样首先在形式上将2个小功能的代码串接起来,编译通过后,运行时报了这个错。
首先查看一下错误码的含义,在 include/acl/acl_base.h 里定义有:

static const int ACL_SUCCESS = 0;
static const int ACL_ERROR_INVALID_PARAM = 100000;
static const int ACL_ERROR_UNINITIALIZE = 100001;
static const int ACL_ERROR_REPEAT_INITIALIZE = 100002;

根据错误码100002,所以错误信息为:ACL_ERROR_REPEAT_INITIALIZE,也就是重复初始化的意思。
确实有做重复初始化,因为2个小功能在开头都做过初始化,虽然在结尾也都做了去初始化,但是去初始化后再初始化也是不行的,有点难理解哦,那来查阅一下 aclInit 的文档:
里面约束说明写的很清楚了:

一个进程内只能调用一次aclInit接口。

而媒体数据处理初始化 hi_mpi_sys_init 倒是可以重复做。

标准形态下,需在申请AscendCL运行管理资源后调用本接口。
一个进程内,可以调用本接口反复初始化,不返回失败。


[acl_destory_resource]-877: destroy context failed with 100000.
[acl_destory_resource]-881: reset device(0) failed with 507007.
[acl_destory_resource]-885: finalize acl failed with 100037.

这几个错误在一起列出来,都是在资源释放时报错的错误码。报错的原因与上面初始化的报错类似,即重复释放导致的。错误码定义分别在2个头文件里,如下。
头文件 include/acl/acl_base.h

static const int ACL_ERROR_INVALID_PARAM = 100000; //已释放后再释放content指针已为空,所以说content指针为无效参数
static const int ACL_ERROR_REPEAT_FINALIZE = 100037;

头文件 include/acl/error_codes/rt_error_codes.h 里面:

static const int32_t ACL_ERROR_RT_CONTEXT_RELEASE_ERROR      = 507007; 
// context release error

总结:

  1. acl 初始化、去初始化都不可以重复做
  2. 媒体数据预处理初始化 hi_mpi 可以重复做
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值