3.5。 CUDA Python 中支持的 Python 功能

原文: http://numba.pydata.org/numba-doc/latest/cuda/cudapysupported.html

此页面列出了 CUDA Python 支持的 Python 功能。这包括使用@cuda.jit和针对 CUDA GPU 的其他更高级 Numba 装饰器编译的所有内核和设备函数。

3.5.1。语言

3.5.1.1。执行模型

CUDA Python 直接映射到 CUDA 的 单指令多线程 执行(SIMT)模型。每条指令由多个线程并行隐式执行。使用此执行模型,数组表达式不太有用,因为我们不希望多个线程执行相同的任务。相反,我们希望线程以合作的方式执行任务。

有关详细信息,请参阅 CUDA 编程指南

3.5.1.2。构造

不支持以下 Python 构造:

  • 异常处理(try .. excepttry .. finally
  • 上下文管理(with语句)
  • 理解(列表,字典,集合或生成器理解)
  • 生成器(任何yield语句)

支持raiseassert语句。参见 nopython 语言支持

3.5.2。内置类型

以下内置类型支持从 CPU nopython 模式继承。

  • INT
  • 浮动
  • 复杂
  • 布尔
  • 没有
  • 元组

参见 nopython 内置类型

3.5.3。内置功能

支持以下内置函数:

3.5.4。标准库模块

3.5.4.1。 cmath

支持 cmath 模块的以下功能:

3.5.4.2。 math

支持 math 模块的以下功能:

3.5.4.3。 operator

支持 operator 模块的以下功能:

3.5.5。 Numpy 支持

由于 CUDA 编程模型,内核内的动态内存分配效率低下且通常不需要。 Numba 不允许任何内存分配功能。这会禁用大量 NumPy API。为了获得最佳性能,用户应编写代码,以便每个线程一次处理单个元素。

支持的 numpy 功能:

  • 访问 <cite>ndarray</cite> 属性 <cite>.shape</cite> , <cite>.strides</cite> , <cite>.ndim</cite> , <cite>.size</cite> 等。
  • 标量 ufuncs 在<cite>数学</cite>模块中具有等价物;即np.sin(x[0]),其中 x 是 1D 阵列。
  • 索引和切片工作。

不受支持的 numpy 功能:

  • 数组创建 API。
  • 数组方法。
  • 返回新数组的函数。