Skip to main content

函数:bytes_to_ptr

函数:numpy_contiguous_to_ptr

note

须知

该接口即将废弃,建议使用acl.util.bytes_to_ptr接口。

C函数原型
Python函数ptr, data_out = acl.util.numpy_contiguous_to_ptr(data_in)
函数功能获取numpy.ndarry数组的内存数据指针地址。 若传入的numpy.ndarry数组在内存上是非行连续的,则先将其内存转行连续,然后再获取转换后的numpy.ndarry数组转换成为内存数据指针地址。
输入说明data****_in:numpy类型数据。
返回值说明ptr:int,可以被C语言访问的数据。 data****_out:numpy类型数据,若传入的numpy数组“data_in”内存非行连续,则返回值“data_out”即为其内存转行连续后的numpy数组。
约束说明访问的是int类型的数据,需要将numpy.ndarray对象的内存数据指针地址转换为int。
注意事项- 修改示例如下:
text<br> np_ptr, data_out = acl.util.numpy_contiguous_to_ptr(np_arr_in)<br>
修改后使用:
text<br> bytes_in = np_arr_in.tobytes()<br> bytes_ptr = acl.util.bytes_to_ptr(bytes_in)<br>
- 若要继续使用该接口,需要运行环境为python ≥ 3.8且numpy ≥ 1.22.0。
- 使用本函数返回的指针地址前,需要确保传入的numpy.ndarry对象生命周期还没有结束(没有被删除或被Python的GC回收),否则将会产生未定行为。

父主题: Util模块

函数:ptr_to_numpy

note

须知

该接口即将废弃,建议使用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

在线提单