Skip to main content

函数:bytes_to_ptr

函数:bytes_to_ptr

C函数原型
Python函数ptr = acl.util.bytes_to_ptr(data)
函数功能将bytes对象转换成为void*数据,可以将转换好的数据传递给C函数直接使用。
输入说明data:bytes类型数据。
返回值说明ptr:int,可以被C语言访问的数据。
约束说明该函数输入的生命周期需要大于输出的生命周期,否则可能会产生未定义行为。
注意事项推荐使用acl.util.bytes_to_ptr替代acl.util.ptr_to_bytes。 修改示例:
text<br>bytes_in = np_arr_in.tobytes()<br>bytes_ptr = acl.util.bytes_to_ptr(bytes_in)<br>

父主题: Util模块

函数:ptr_to_bytes

C函数原型
Python函数bytes_out = acl.util.ptr_to_bytes(ptr, size)
函数功能将void*数据转换为bytes对象,可以使python代码直接访问。
输入说明ptr:int,C语言中的指针地址,能够访问的数据的首地址。 size:int,数据的大小,单位Byte。
返回值说明bytes_out :bytes对象。
约束说明
注意事项由于acl.util.ptr_to_bytes会导致数据性能下降,建议使用函数:bytes_to_ptr
text<br>bytes_out = acl.util.ptr_to_bytes(bytes_ptr, size)<br>

父主题: Util模块

函数:start_thread

C函数原型
Python函数thr_id, ret = acl.util.start_thread(thr_func, args_list)
函数功能创建线程,在线程中执行传入的Python函数。
输入说明thr_func:Python函数对象,表示用户自定义的Python函数。 例如: python<br>def thr_func(args_list):<br>pass<br> args_list:list,表示用户自定义的python函数(thr_func)需要的传入参数。
返回值说明thr_id:int,线程ID号。 ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明新建线程,无法自动获取Context,需要调用acl.rt.set_context接口显式指定Context。

父主题: thread

函数:stop_thread

C函数原型
Python函数ret = acl.util.stop_thread(thr_id)
函数功能等待由acl.util.start_thread接口创建的线程退出。
输入说明thr_id:int,线程ID号。需指定由acl.util.start_thread接口获得的线程ID号。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明

父主题: thread

函数:set_device

C函数原型aclError aclrtSetDevice(int32_t deviceId)
Python函数ret = acl.rt.set_device(device_id)
函数功能指定当前进程或线程中用于运算的Device,同时隐式创建默认Context,同步接口。 对于Atlas 200/500 A2推理产品,该默认Context中包含1个默认Stream。
输入说明device_id:int,Device设备号。 用户调用acl.rt.get_device_count接口获取可用的Device数量后,取值范围:[0, (可用的Device数量 - 1)]。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明如果多次调用acl.rt.set_device接口而不调用acl.rt.reset_device接口释放本进程使用的Device资源,功能上不会有问题,因为在进程退出时也会释放本进程使用的Device资源。建议acl.rt.set_device接口和acl.rt.reset_device接口配对使用,在不使用Device上资源时,通过调用acl.rt.reset_device接口及时释放本进程使用的Device资源。 支持以下使用场景:
- 在不同进程或线程中支持调用acl.rt.set_device接口指定同一个Device用于运算。在同一个进程中的多个线程中,如果调用acl.rt.set_device接口指定同一个Device用于运算,这时隐式创建的默认Context是同一个。
- 在某一进程中指定Device,该进程内的多个线程可共用此Device显式创建Context(acl.rt.create_context接口)。
- 多Device场景下,可在进程中通过acl.rt.set_device接口切换到其它Device。但利用Context(调用acl.rt.set_context接口)来切换Device,比使用acl.rt.set_device接口效率高。
参考资源接口调用流程与示例,请参见运行管理资源申请与释放同步等待

父主题: Device管理

函数:reset_device

C函数原型aclError aclrtResetDevice(int32_t deviceId)
Python函数ret = acl.rt.reset_device(device_id)
函数功能复位当前运算的Device,释放Device上的资源,包括默认Context、默认Stream以及默认Context下创建的所有Stream,同步接口。若默认Context或默认Stream下的任务还未完成,系统会等待任务完成后再释放。
输入说明device_id:int,Device设备号。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明若要复位的Device上存在显式创建的Context、Stream、Event,在复位前,建议遵循如下接口调用顺序,否则可能会导致业务异常。 接口调用顺序:调用acl.rt.destroy_event接口释放Event/调用acl.rt.destroy_stream接口释放显式创建的Stream-->调用acl.rt.destroy_context释放显式创建的Context-->调用acl.rt.reset_device接口。
参考资源接口调用流程与示例,请参见运行管理资源申请与释放同步等待

父主题: Device管理

在线提单