3.15。 CUDA 阵列接口
原文: http://numba.pydata.org/numba-doc/latest/cuda/cuda_array_interface.html
_cuda 数组接口 _ 是为各种项目中类似 GPU 阵列的对象的不同实现之间的互操作性而创建的。这个想法来自 numpy 数组接口。
注意
目前,我们只定义了 Python 端接口。将来,我们可能会添加一个 C 端接口,以便在编译代码中有效地交换信息。
3.15.1。 Python 接口规范
注意
实验功能。规格可能会改变。
__cuda_array_interface__
属性是类似字典的对象,必须包含以下条目:
-
形状:
(integer, ...)
int
(或long
)的元组,表示每个维度的大小。 -
typestr :
str
类型字符串。这与 numpy 阵列接口中的 typestr 具有相同的定义。
-
数据:
(整数,布尔值)
数据是 2 元组。第一个元素数据指针为 Python
int
(或long
)。数据必须是设备可访问的。第二个元素是 Pythonbool
的只读标志。因为接口的用户可能在同一个上下文中,也可能不在同一个上下文中,最常见的情况是在 CUDA 驱动程序 API(或等效的 CUDA Runtime API)中使用
cuPointerGetAttribute
和CU_POINTER_ATTRIBUTE_DEVICE_POINTER
来检索设备指针可用于当前活动的上下文中。 -
版:
整数
要导出的接口版本的整数。目前的版本是 0 ,因为它仍处于试验阶段。
以下是可选条目:
-
跨步:
None
或(integer, ...)
int
(或long
)的元组,表示要跳过以访问每个维度的下一个元素的字节数。如果是None
,则假定该数组采用 C 连续布局。 -
descr
这是为了描述更复杂的类型。这遵循与 numpy 阵列接口中相同的规范。
可以使用cuPointerGetAttribute
或cudaPointerGetAttributes
检索有关数据指针的其他信息。这些信息包括:
- 拥有指针的 CUDA 上下文;
- 指针主机可访问?
- 指针是一个托管内存?