Skip to content

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 )的元组,表示每个维度的大小。

  • typestrstr

    类型字符串。这与 numpy 阵列接口中的 typestr 具有相同的定义。

  • 数据(整数,布尔值)

    数据是 2 元组。第一个元素数据指针为 Python int (或 long )。数据必须是设备可访问的。第二个元素是 Python bool 的只读标志。

    因为接口的用户可能在同一个上下文中,也可能不在同一个上下文中,最常见的情况是在 CUDA 驱动程序 API(或等效的 CUDA Runtime API)中使用cuPointerGetAttributeCU_POINTER_ATTRIBUTE_DEVICE_POINTER来检索设备指针可用于当前活动的上下文中。

  • 整数

    要导出的接口版本的整数。目前的版本是 0 ,因为它仍处于试验阶段。

以下是可选条目:

  • 跨步None(integer, ...)

    int (或 long )的元组,表示要跳过以访问每个维度的下一个元素的字节数。如果是None,则假定该数组采用 C 连续布局。

  • descr

    这是为了描述更复杂的类型。这遵循与 numpy 阵列接口中相同的规范。

可以使用cuPointerGetAttributecudaPointerGetAttributes检索有关数据指针的其他信息。这些信息包括:

  • 拥有指针的 CUDA 上下文;
  • 指针主机可访问?
  • 指针是一个托管内存?

我们一直在努力

apachecn/AiLearning

【布客】中文翻译组