函数:ptr_to_bytes
函数:ptr_to_numpy
备注
须知
该接口即将废弃,建议使用acl.util.ptr_to_bytes接口。
| C函数原型 | 无 |
|---|---|
| Python函数 | output = acl.util.ptr_to_numpy(ptr, shape, type) |
| 函数功能 | 将指针地址数据转换为numpy数组,可以使Python代码直接访问。 |
| 输入说明 | ptr:int,C语言中的指针地址,是能够访问的数据的首地址。 shape:tuple,需要构造的numpy的shape。 type:int,表示ptr中数据的数据类型。 下面举例一些常用的类型(未列出类型详见Numpy手册,NumPy C-API中的数据类型API,以下列出类型以手册中数据为准): - 0:NPY_BOOL - 1:NPY_BYTE,NPY_INT8 - 2:NPY_UINT8 - 3:NPY_SHORT,NPY_INT16 - 4:NPY_USHORT,NPY_UINT16 - 5:NPY_INT,NPY_INT32 - 6:NPY_UINT,NPY_UINT32 - 7:NPY_INT64 - 8:NPY_UINT64 - 9:NPY_LONGLONG - 10:NPY_ULONGLONG - 11:NPY_FLOAT32 - 12:NPY_DOUBLE - 23:NPY_HALF,NPY_FLOAT16 |
| 返回值说明 | output:numpy类型。 |
| 约束说明 | 无 |
| 注意事项 | - 修改示例如下:text<br> np_arr_out = acl.util.ptr_to_numpy(host_ptr, np_arr_in.shape, NPY_INT32)<br> 修改后使用: text<br> bytes_out = acl.util.ptr_to_bytes(ptr, size)<br> np_arr_out = np.frombuffer(bytes_out, dtype=np.int32).reshape(np_arr_in.shape)<br> - 若要继续使用该接口,需要运行环境为python ≥ 3.8且numpy ≥ 1.22.0。 |
父主题: Util模块
函数: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管理
在线提单