调用接口后,需增加异常处理的分支,并记录报错日志、提示日志,此处不一一列举。以下是关键步骤的代码示例,不可以直接拷贝编译运行,仅供参考。
#include "acl/acl.h" // ...... int32_t deviceId = 0 ; uint32_t modelId1 = 0; uint32_t modelId2 = 1; aclrtContext context; aclrtStream stream1; aclrtStream stream2; // 如果只创建了一个Context,线程默认将这个Context作为线程当前的Context; // 如果是多个Context,则需要调用aclrtSetCurrentContext接口设置当前线程的Context aclrtCreateContext(&context, deviceId); aclrtCreateStream(&stream1); // 调用触发任务的接口,例如异步模型推理,任务下发在stream1 aclmdlDataset *input1; aclmdlDataset *output1; aclmdlExecuteAsync(modelId1, input1, output1, stream1); aclrtCreateStream(&stream2); // 调用触发任务的接口,例如异步模型推理, 任务下发在stream2 aclmdlDataset *input2; aclmdlDataset *output2; aclmdlExecuteAsync(modelId2, input1, output2, stream2); // 流同步 aclrtSynchronizeStream(stream1); aclrtSynchronizeStream(stream2); // 释放资源 aclrtDestroyStream(stream1); aclrtDestroyStream(stream2); aclrtDestroyContext(context); // ....