C函数原型 |
无 |
Python函数 |
ptr = acl.util.numpy_to_ptr(data) |
函数功能 |
将numpy数组转换成为void*数据,可以将转换好的数据传递给C函数直接使用。 |
输入说明 |
data:numpy类型数据。 |
返回值说明 |
ptr:int,可以被C语言访问的数据。 |
约束说明 |
访问的是int类型的数据,需要将void*转换为int*。 |
注意事项 |
- 该函数输入的生命周期需要大于输出的生命周期,否则可能会产生未定义行为。
- 若传入的numpy数组在内存上是非行连续的,在接口调用时会打印如下提示信息:
Warning:The input ndarray is discontiguous. Please use acl.util.numpy_contiguous_to_ptr instead. 请使用acl.util.numpy_contiguous_to_ptr接口获取numpy数组的地址对象,否则在使用acl.rt.memcpy拷贝数据时,由于acl.rt.memcpy拷贝的是连续内存地址,会导致拷贝的数据和目标拷贝数据不一致的问题。
- 可以通过numpy数组的flags属性来查看numpy数组在内存上是否连续:
print(data.flags) 得到结果如下: C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False 其中C_CONTIGUOUS : True,则说明numpy数组在内存上行连续。F_CONTIGUOUS : False,则说明numpy数组在内存上列不连续。
|