aclmdlRICaptureBegin

本接口为试验特性,后续版本可能会存在变更,不支持应用于商用产品中。
产品支持情况
产品 |
是否支持 |
---|---|
√ |
|
√ |
|
x |
|
x |
|
x |
|
x |
功能说明
开始捕获Stream上下发的任务。
在aclmdlRICaptureBegin和aclmdlRICaptureEnd接口之间,所有在指定Stream上下发的任务不会立即执行,而是被暂存在系统内部模型运行实例中,只有在调用aclmdlRIExecuteAsync接口执行模型推理时,这些任务才会被真正执行,以此减少Host侧的任务下发开销。任务执行完毕后,若无需再使用内部模型,可调用aclmdlRIDestroy接口及时销毁该资源。
aclmdlRICaptureBegin和aclmdlRICaptureEnd接口要成对使用,且两个接口中的Stream应相同。在这两个接口之间,可以调用aclmdlRICaptureGetInfo接口获取捕获信息,调用aclmdlRICaptureThreadExchangeMode接口切换当前线程的捕获模式。此外,在调用aclmdlRICaptureEnd接口之后,还可以调用aclmdlRIDebugPrint接口打印模型信息,这在维护和测试场景下有助于问题定位。
在aclmdlRICaptureBegin和aclmdlRICaptureEnd接口之间捕获的任务,若要更新任务(包含任务本身以及任务的参数信息),则需在aclmdlRICaptureTaskGrpBegin、aclmdlRICaptureTaskGrpEnd接口之间下发后续可能更新的任务,给任务打上任务组的标记,然后在aclmdlRICaptureTaskUpdateBegin、aclmdlRICaptureTaskUpdateEnd接口之间更新任务的输入、输出信息。

在aclmdlRICaptureBegin和aclmdlRICaptureEnd接口之间捕获到的任务会暂存在系统内部模型运行实例中,随着任务数量的增加,以及通过Event推导、内部任务的操作,导致更多的Stream进入捕获状态,Stream资源被不断消耗,最终可能会导致Stream资源不足(Stream数量限制请参见aclrtCreateStream),因此需提前规划好Stream的使用、关注捕获的任务数量。
函数原型
aclError aclmdlRICaptureBegin(aclrtStream stream, aclmdlRICaptureMode mode)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
stream |
输入 |
指定Stream。 |
mode |
输入 |
捕获模式,用于限制非安全函数(包括aclrtMemset、aclrtMemcpy、aclrtMemcpy2d)的调用范围。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。