接口调用流程
开发应用时,如果涉及异步场景下的同步等待,则应用程序中必须包含相关的代码逻辑,关于该场景的接口调用流程,请参见下图。
图1 同步等待流程_Callback场景
关键接口说明如下:
- 回调函数需由用户提前创建,用于获取并处理模型推理或算子执行的结果。
- 线程需由用户提前创建,并自定义线程函数,在线程函数内调用acl.rt.process_report接口,等待指定时间后,触发1中的回调函数。
- 调用acl.rt.subscribe_report接口:指定处理Stream上回调函数的线程,线程与2中保持一致。
- 调用acl.rt.launch_callback接口:在Stream的任务队列中增加一个需要执行的回调函数,回调函数与1中保持一致。
- 调用acl.rt.unsubscribe_report接口:取消线程注册(Stream上的回调函数不再由指定线程处理)。
- 异步推理时调用acl.mdl.execute_async接口。对于异步接口,还需调用acl.rt.synchronize_stream接口阻塞应用程序运行,直到指定Stream中的所有任务都完成。
用户可以在acl.rt.synchronize_stream接口之后一次性获取所有图片的异步推理结果,但如果图片数据量较大的情况下,需要等待的时间比较长,这时可以使用Callback功能,每隔一段时间下发一次Callback任务,获取前一段时间内的异步推理结果。
父主题: 模型异步推理