运行管理资源释放与ACL去初始化
基本原理
Host、Device上所有数据处理都结束后,需要释放运行管理资源,包括Stream、Context、Device。释放资源时,需要按顺序释放,先释放Stream,再释放Context,最后再释放Device。
- 如果使用默认Context,则不能通过aclrtDestroyContext接口来释放。
- 如果使用默认Stream,则不能通过aclrtDestroyStream接口来释放。
- 默认Context、默认Stream,是在调用aclrtResetDevice接口后自动释放。
- 调用aclFinalize接口实现ACL去初始化。
示例代码
调用接口后,需增加异常处理的分支,同时通过ERROR_LOG记录报错日志、通过INFO_LOG记录各动作的提示日志,示例代码中不一一列举。
示例代码如下,您可以从acl_dvpp_resnet50样例的“src/sample_process.cpp”文件中查看完整样例代码。
1 2 3 4 5 6 7 8 | #include "acl/acl.h"
//......
aclError ret = aclrtDestroyStream(stream_);
ret = aclrtDestroyContext(context_);
ret = aclrtResetDevice(deviceId_);
ret = aclFinalize();
//......
|
