函数:reset_overflow_status
函数:get_context
| C函数原型 | aclError aclrtGetCurrentContext(aclrtContext *context) |
|---|---|
| Python函数 | context, ret = acl.rt.get_context() |
| 函数功能 | 获取线程的Context,同步接口。 如果用户多次调用acl.rt.set_context接口设置当前线程的Context,则获取的是最后一次设置的Context。 |
| 输入说明 | 无 |
| 返回值说明 | context:int,表示创建的Context对象指针地址。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 无 |
父主题: Context管理
函数:get_overflow_status
| C函数原型 | aclError aclrtGetOverflowStatus(void *outputAddr, size_t outputSize, aclrtStream stream) |
|---|---|
| Python函数 | ret = acl.rt.get_overflow_status(outputAddr, outputSize, stream) |
| 函数功能 | 获取当前Context下所有Stream上任务的溢出状态,并将状态值拷贝到用户申请的Device内存中。异步接口。 |
| 输入说明 | outputAddr:int,用户申请的Device内存,需通过acl.rt.malloc接口申请。如果需要在Host侧查看数据,可调用acl.rt.memcpy或acl.rt.memcpy_async接口,将Device侧的数据传输到Host侧。 outputSize:int,需申请的Device内存大小,单位Byte,固定大小为64Byte。 stream:int,指定Stream的指针地址,用于下发溢出状态查询任务。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 本接口是异步接口,在调用之后,需调用acl.rt.synchronize_stream接口阻塞应用程序运行,直到指定Stream中的溢出状态查询任务已完成。 |
父主题: Context管理
函数:reset_overflow_status
| C函数原型 | aclError aclrtResetOverflowStatus(aclrtStream stream) |
|---|---|
| Python函数 | ret = acl.rt.reset_overflow_status(stream) |
| 函数功能 | 清除当前Context下所有Stream上任务的溢出状态。异步接口。 |
| 输入说明 | stream:int,指定Stream的指针地址,用于下发溢出状态复位任务。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 本接口是异步接口,在调用之后,需调用acl.rt.synchronize_stream接口阻塞应用程序运行,直到指定Stream中的溢出状态复位任务已完成。 |
父主题: Context管理
函数:create_stream
| C函数原型 | aclError****aclrtCreateStream(aclrtStream *stream) |
|---|---|
| Python函数 | stream, ret = acl.rt.create_stream() |
| 函数功能 | 在当前进程或线程中创建一个Stream,同步接口。 |
| 输入说明 | 无 |
| 返回值说明 | stream:int,返回创建的Stream的指针地址。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 每个Context对应一个默认Stream,该默认Stream是调用acl.rt.set_device接口或acl.rt.create_context接口隐式创建的。推荐调用acl.rt.create_stream接口显式创建Stream。 - 隐式创建Stream:适合简单、无复杂交互逻辑的应用,但缺点在于,在多线程编程中,执行结果取决于线程调度的顺序。 - 显式创建Stream:推荐显式,适合大型、复杂交互逻辑的应用,且便于提高程序的可读性、可维护性。 对于Atlas 200/500 A2推理产品,硬件资源最多支持512个Stream,如果已存在多个默认Stream,只能显式创建N个Stream(N=512-默认Stream个数-执行内部同步的Stream个数),例如,若已存在一个默认Stream和一个执行内部同步的Stream,则只能显式创建510个Stream。 |
| 参考资源 | 接口调用流程与示例,请参见运行管理资源申请与释放、同步等待。 |
父主题: Stream管理
函数:create_stream_with_config
| C函数原型 | aclError aclrtCreateStreamWithConfig(aclrtStream *stream, uint32_t priority, uint32_t flag) |
|---|---|
| Python函数 | stream, ret = acl.rt.create_stream_with_config(priority, flag**)** |
| 函数功能 | 在当前进程或线程中创建一个Stream,同步接口。 使用本接口与acl.rt.create_stream接口相比是等价的。 |
| 输入说明 | priority:int,优先级。 Atlas 200/500 A2推理产品****上,当前固定设置为0,预留参数,暂不使用。 flag:int,Stream的flag。 取值范围: - ACL_STREAM_FAST_LAUNCH = 1,使用该模式创建出来的Stream,在使用Stream时,下发任务的速度更快。 相比acl.rt.create_stream接口创建出来的Stream,在使用Stream时才会申请系统内部资源,导致下发任务的时长增加,使用本接口的“ACL_STREAM_FAST_LAUNCH”模式创建Stream时,会在创建Stream时预申请系统内部资源,因此创建Stream的时长增加,下发任务的时长缩短,总体来说,创建一次Stream,使用多次的场景下,总时长缩短,但创建Stream时预申请内部资源会增加内存消耗。 - ACL_STREAM_FAST_SYNC = 2,使用该模式创建出来的Stream,在调用acl.rt.synchronize_stream接口时,会阻塞当前线程,主动查询任务的执行状态,一旦任务完成,立即返回。 相比acl.rt.create_stream接口创建出来的Stream,在调用acl.rt.synchronize_stream接口时,会一直被动等待Device上任务执行完成的通知,等待时间长,使用本接口的“ACL_STREAM_FAST_SYNC”模式创建的Stream,没有被动等待,总时长缩短,但主动查询的操作会增加CPU的性能消耗。 (说明:配置取值范围之外的值,本接口创建出来的Stream等同于 acl.rt.create_stream 接口。) |
| 返回值说明 | stream:int,表示创建的Stream对象的指针地址。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
父主题: Stream管理
函数:destroy_stream
| C函数原型 | aclError aclrtDestroyStream(aclrtStream stream) |
|---|---|
| Python函数 | ret = acl.rt.destroy_stream(stream) |
| 函数功能 | 销毁指定Stream,销毁通过acl.rt.create_stream或acl.rt.create_stream_with_config接口创建的Stream,若Stream上有未完成的任务,会等待任务完成后再销毁Stream。同步接口。 |
| 输入说明 | stream:int,待销毁的Stream的指针地址。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | - 在调用acl.rt.destroy_stream接口销毁指定Stream前,需要先调用acl.rt.synchronize_stream接口确保Stream中的任务都已完成。 - 调用acl.rt.destroy_stream接口销毁指定Stream时,需确保该Stream在当前Context下。 - 在调用acl.rt.destroy_stream接口销毁指定Stream时,需确保其它接口没有正在使用该Stream。 |
| 参考资源 | 接口调用流程与示例,请参见运行管理资源申请与释放、同步等待。 |
父主题: Stream管理
在线提单