版本 0.60.0 (2024年6月13日)

这是一个主要的 Numba 版本。Numba 现在已二进制支持 NumPy 2.0。用户应注意,这尚不包括与 NEP 50 相关的类型级别更改,这些更改仍在进行中。此版本不保证与 NumPy 2.0 的执行级别兼容性,因此用户在使用 Numba 与 NumPy 2.0 时,应预期在类型和数值方面可能与正常的 Python 行为存在一些偏差。

请参阅以下所有值得注意的项的摘要。

亮点

NumPy 2.0 二进制支持

增加了对 NumPy 2.0 的二进制支持。然而,这尚不包括与 NEP 50 相关的类型级别更改,这些更改仍在进行中。

以下是面向用户的更改摘要:

  • 之前可用于数组的 ptp() 方法已弃用。建议改用 np.ptp(arr) 函数。

  • 数据类型 np.bool8 已弃用,并替换为 np.bool

  • 函数 np.product 已弃用;建议用户改用 np.prod

  • 从 NumPy 2.0 版本开始,itemset() 方法已从 ndarray 类中移除。要实现相同的功能,请使用赋值操作 arr[index] = value

  • 弃用的常量 np.PINFnp.NINF 应分别替换为表示正无穷的 np.inf 和表示负无穷的 -np.inf

(PR-#9466)

新功能

增强 JIT 代码中 guvectorize 的支持

广义通用函数支持得到扩展,现在可以在 JIT 编译函数中调用使用 @guvectorize 装饰的函数。但是,请注意尚不支持广播。在需要广播的场景中调用 guvectorize 函数可能会导致不正确的行为。

(PR-#8984)

添加对 ufunc.at 的实验性支持

添加了对 ufunc.at 的实验性支持。

(PR-#9239)

添加 float(<string literal>) 构造函数

添加了对 float(<string literal>) 的支持。

(PR-#9378)

添加对 math.log2 的支持。

添加了对 math.log2 的支持。

(PR-#9416)

添加对 nopython 模式下 math.nextafter 的支持。

在 nopython 模式下支持 math.nextafter

(PR-#9438)

添加对 parfor 二元操作归约的支持。

以前,只有像 += 这样的就地操作才能用作 prange 中的归约。现在,通过此 PR,可以使用形式为 a = a binop b 的二元操作归约。

(PR-#9521)

改进

扩展 isinstance() 对 NumPy datetime 类型的支持

isinstance() 中添加了对 numpy.datetime64numpy.timedelta64 类型的支持。

(PR-#9455)

Numba 的调度器中添加了对 Python 3.12 sys.monitoring 的支持。

Python 3.12 引入了一个新模块 sys.monitoring,它提供了一个事件驱动的监控 API,供需要监控执行的工具使用,例如调试器或性能分析器。Numba 的调度器类(处理 Python 解释器和编译代码之间控制流的代码)已更新,以适当地发出 sys.monitoring.events.PY_STARTsys.monitoring.events.PY_RETURN 事件。这使得监听这些事件的工具能够识别何时控制进入并从编译代码中返回。由于这一更改,Numba 编译的代码现在可以像以前一样被 cProfile 识别,即它将出现在性能分析报告中。

(PR-#9482)

NumPy 支持

添加了对 np.size() 的支持

添加了对 NumPy 中 np.size() 的支持,此前该功能不受支持。

(PR-#9504)

CUDA API 更改

支持编译到 LTO-IR

在编译 API 中添加了将设备函数编译到 LTO-IR 的支持。

(PR-#9274)

CUDA 中支持 math.log、math.log2 和 math.log10

CUDA 目标现在支持 np.lognp.log2np.log10

(PR-#9417)

错误修复

修复 parfor 变量提升分析。

如果一个变量用于构建容器(例如,tuple、list、map、set)或作为参数传递给函数调用,则保守地假设它可能会脱离当前 parfor 迭代范围,因此不应被提升。

(PR-#9532)

弃用

弃用 old_style 错误捕获

根据弃用计划,old_style 错误捕获已被弃用,现在 默认new_style

(PR-#9549)

已过期弃用

移除 numba.core.retarget

numba.core.retarget 中实现的实验性功能已被移除。这些功能主要用于 numba-dpex,但该项目已将其对 numba.core.retarget 的使用替换为偏好 target extension API

(PR-#9539)

文档更改

numba.cuda.gpus.current 文档更正

numba.cuda.gpus.current 曾被错误地描述为一个函数,现在被描述为一个属性。

(PR-#9394)

CUDA 12 conda 安装文档

已为 CUDA 12 conda 用户添加了安装说明。

(PR-#9487)

拉取请求: