安装

兼容性

有关软件兼容性,请参阅版本支持信息部分了解详情。

我们支持的平台有

  • Linux x86_64

  • Windows 10 及更高版本 (64位)

  • OS X 10.9 及更高版本 (64位,M1/Arm64 上非官方支持)

  • 计算能力 5.0 及更高版本的 NVIDIA GPU

    • 计算能力 3.5 和 3.7 受支持,但已弃用。

  • ARMv8 (64位小端,例如 NVIDIA Jetson)

  • Linux ppcle64,例如 POWER8, POWER9 (非官方支持)

  • BSD (仅非官方支持)

使用 @jit 进行自动并行化 仅在 64 位平台上可用。

在 x86/x86_64/POWER 平台上使用 conda 安装

安装 Numba 并获取更新最简单的方法是使用 conda,一个由 Anaconda, Inc. 维护的跨平台包管理器和软件分发工具。您可以选择使用 Anaconda 一次性下载完整栈,或者使用 Miniconda 来安装 conda 环境所需的最小包。

安装 conda 后,只需输入

$ conda install numba

$ conda update numba

请注意,Numba 和 Anaconda 一样,仅支持 64 位小端模式下的 PPC。

要为 Numba 启用 CUDA GPU 支持,请为您的平台安装最新的 NVIDIA 显卡驱动。(请注意,许多 Linux 发行版默认附带的开源 Nouveau 驱动不支持 CUDA。)然后安装 CUDA Toolkit 包。

对于 CUDA 12,需要 cuda-nvcccuda-nvrtc

$ conda install -c conda-forge cuda-nvcc cuda-nvrtc "cuda-version>=12.0"

对于 CUDA 11,需要 cudatoolkit

$ conda install -c conda-forge cudatoolkit "cuda-version>=11.2,<12.0"

您不需要安装 NVIDIA 的 CUDA SDK。

在 x86/x86_64 平台上使用 pip 安装

Windows、Mac 和 Linux 的二进制 wheel 包也可从 PyPI 获取。您可以使用 pip 安装 Numba

$ pip install numba

这也会下载所有必需的依赖项。您不需要安装 LLVM 即可使用 Numba(实际上,Numba 将忽略系统上安装的所有 LLVM 版本),因为所需的组件已捆绑到 llvmlite wheel 包中。

要在通过 pip 安装的 Numba 中使用 CUDA,您需要从 NVIDIA 安装 CUDA SDK。详情请参阅设置 CUDA 安装路径。Numba 还可以检测 Linux 系统范围内安装的 CUDA 库。

在 Linux ARMv8 (AArch64) 平台上安装

我们在 NVIDIA Jetson TX2 上构建和测试 conda 包,但它们可能适用于其他 AArch64 平台。(请注意,虽然 Raspberry Pi 3、4 和 Zero 2 W 中的 CPU 是 64 位,但 Raspberry Pi OS 可能根据使用的操作系统镜像运行在 32 位模式下)。

Conda-forge 对 AArch64 的支持仍处于实验阶段,包数量有限,但它足以让 Numba 构建并通过测试。要设置环境,请执行以下操作

  • 安装 miniforge。这将创建一个最小的 conda 环境。

  • 然后您可以从 numba 频道安装 Numba

    $ conda install -c numba numba
    

在支持 CUDA 的系统上,例如 Jetson,CUDA 工具包应该在环境中自动检测到。

从源代码安装

从源代码安装 Numba 相当简单(类似于其他 Python 包),但安装 llvmlite 可能非常具有挑战性,因为它需要特殊的 LLVM 构建。如果您为了 Numba 开发目的从源代码构建,请参阅构建环境,了解如何使用 conda 创建 Numba 开发环境的详细信息。

如果您出于其他原因从源代码构建 Numba,请首先按照 llvmlite 安装指南进行操作。完成后,您可以从 Github 下载最新的 Numba 源代码

$ git clone https://github.com/numba/numba.git

最新版本的源代码归档文件也可以在 PyPI 上找到。除了 llvmlite,您还需要

  • 与您的 Python 安装兼容的 C 编译器。如果您使用的是 Anaconda,可以使用以下 conda 包:

    • Linux x86_64: gcc_linux-64gxx_linux-64

    • Linux POWER: gcc_linux-ppc64legxx_linux-ppc64le

    • Linux ARM: 无 conda 包,请使用系统编译器

    • Mac OSX: clang_osx-64clangxx_osx-64/usr/bin/clang 处的系统编译器 (Mojave 及更高版本)

    • Mac OSX (M1): clang_osx-arm64clangxx_osx-arm64

    • Windows: 适用于当前 Python 版本的 Visual Studio 版本

  • NumPy

然后您可以从源代码树的顶层构建并安装 Numba

$ python setup.py install

如果您希望运行测试套件,请参阅开发者文档中的说明。

构建时环境变量和可选组件配置

以下是适用于更改 Numba 默认构建方式的环境变量以及配置选项的信息。

NUMBA_DISABLE_OPENMP (默认: 未设置)

要禁用 OpenMP 线程后端的编译,请在构建时将此环境变量设置为非空字符串。如果未设置(默认)

  • 对于 Linux 和 Windows,需要提供与上述编译器工具链兼容的 OpenMP C 头文件和运行时库,并且这些文件必须通过标准标志可供编译器访问。

  • 对于 OSX,conda 包 llvm-openmp 提供了合适的 C 头文件和库。如果编译要求未满足,OpenMP 线程后端将不会被编译。

NUMBA_DISABLE_TBB (默认: 未设置)

要禁用 TBB 线程后端的编译,请在构建时将此环境变量设置为非空字符串。如果未设置(默认),TBB C 头文件和库必须在编译时可用。如果使用 conda build 构建,可以通过安装 tbb-devel 包来满足此要求。如果不是使用 conda build 构建,可以通过系统安装 TBB 或通过使用 TBBROOT 环境变量提供 TBB 安装位置来满足要求。有关设置 TBBROOT 的更多信息,请参阅 Intel 文档

依赖列表

Numba 具有许多必需和可选的依赖项,这些依赖项还可能因目标操作系统和硬件而异。以下列出了所有这些依赖项(截至 2020 年 7 月)。

  • 必需的构建时依赖

    • setuptools

    • numpy

    • llvmlite

    • 上述编译器工具链

  • 必需的运行时依赖

    • numpy

    • llvmlite

  • 可选的构建时依赖

    有关这些可选组件的配置和规范的其他选项的更多详细信息,请参阅构建时环境变量和可选组件配置

    • llvm-openmp (OSX) - 提供用于将 OpenMP 支持编译到 Numba 线程后端的头文件

    • tbb-devel - 提供 TBB 头文件/库,用于将 TBB 支持编译到 Numba 的线程后端中(要求版本 >= 2021.6)。

  • 可选运行时依赖有

    • scipy - 提供 Numba np.linalg.* 支持中使用的 cython 绑定

    • tbb - 提供 Numba TBB 线程后端使用的 TBB 运行时库(要求版本 >= 2021)。

    • jinja2 - 用于通过 numba CLI 生成“漂亮”的类型注解输出 (HTML)

    • cffi - 允许在 Numba 编译的函数中使用 CFFI 绑定

    • llvm-openmp - (OSX) 为 Numba 的 OpenMP 线程后端提供 OpenMP 库支持。

    • intel-openmp - (OSX) 提供一个替代的 OpenMP 库,用于 Numba 的 OpenMP 线程后端。

    • ipython - 如果在使用中,缓存将使用 IPython 的缓存目录/缓存仍可工作

    • pyyaml - 允许使用 .numba_config.yaml 文件存储每个项目的配置选项

    • colorama - 使错误消息高亮显示生效

    • intel-cmplr-lib-rt - 允许 Numba 使用 Intel SVML 以获得额外性能

    • pygments - 用于“漂亮”的类型注解

    • gdb 作为 $PATH 上的可执行文件 - 如果您希望使用 gdb 支持

    • setuptools - 允许使用 pycc 进行提前 (AOT) 编译

    • 上述编译器工具链,如果您想使用 pycc 进行提前 (AOT) 编译

    • r2pipe - 汇编 CFG 检查所需。

    • radare2 作为 $PATH 上的可执行文件 - 汇编 CFG 检查所需。有关获取和安装的信息,请参见此处

    • graphviz - 用于某些 CFG 检查功能。

    • typeguard - 由 runtests.py 用于运行时类型检查

    • cuda-python - NVIDIA CUDA Python 绑定。请参阅CUDA 绑定。Numba 需要版本 11.6 或更高。

    • cubinlinkerptxcompiler 以支持CUDA 次要版本兼容性

  • 要构建文档

    • sphinx

    • pygments

    • sphinx_rtd_theme

    • numpydoc

    • make 作为 $PATH 上的可执行文件

版本支持信息

这是关于 Numba 依赖项的哪些版本经过测试并已知与给定版本的 Numba 兼容的规范参考。其他版本的依赖项(尤其是 NumPy)可能也能正常工作,但未经测试。版本号中使用 x 表示支持所有补丁级别。版本中使用 ? 是因为信息缺失。

Numba

发布日期

Python

NumPy

llvmlite

LLVM

TBB

0.61.2

2025-04-07

3.10.x <= 版本 < 3.14

1.24 <= 版本 < 1.27 ; 2.0 <= 版本 < 2.3 ;

0.44.x

15.x

2021.6 <= 版本

0.61.1

未发布

0.61.0

2025-01-16

3.10.x <= 版本 < 3.14

1.24 <= 版本 < 1.27 ; 2.0 <= 版本 < 2.2 ;

0.44.x

15.x

2021.6 <= 版本

0.60.0

2024-06-13

3.9.x <= 版本 < 3.13

1.22 <= 版本 < 1.27 ; 版本 == 2.0 †

0.43.x

14.x

2021.6 <= 版本

0.59.1

2024-03-18

3.9.x <= 版本 < 3.13

1.22 <= 版本 < 1.27

0.42.x

14.x

2021.6 <= 版本

0.59.0

2024-01-31

3.9.x <= 版本 < 3.13

1.22 <= 版本 < 1.27

0.42.x

14.x

2021.6 <= 版本

0.58.1

2023-10-17

3.8.x <= 版本 < 3.12

1.22 <= 版本 < 1.27 。

0.41.x

14.x

2021.6 <= 版本

0.58.0

2023-09-20

3.8.x <= 版本 < 3.12

1.22 <= 版本 < 1.26

0.41.x

14.x

2021.6 <= 版本

0.57.1

2023-06-21

3.8.x <= 版本 < 3.12

1.21 <= 版本 < 1.25

0.40.x

14.x

2021.6 <= 版本

0.57.0

2023-05-01

3.8.x <= 版本 < 3.12

1.21 <= 版本 < 1.25

0.40.x

14.x

2021.6 <= 版本

0.56.4

2022-11-03

3.7.x <= 版本 < 3.11

1.18 <= 版本 < 1.24

0.39.x

11.x

2021.x

0.56.3

2022-10-13

3.7.x <= 版本 < 3.11

1.18 <= 版本 < 1.24

0.39.x

11.x

2021.x

0.56.2

2022-09-01

3.7.x <= 版本 < 3.11

1.18 <= 版本 < 1.24

0.39.x

11.x

2021.x

0.56.1

未发布

0.56.0

2022-07-25

3.7.x <= 版本 < 3.11

1.18 <= 版本 < 1.23

0.39.x

11.x

2021.x

0.55.2

2022-05-25

3.7.x <= 版本 < 3.11

1.18 <= 版本 < 1.23

0.38.x

11.x

2021.x

0.55.{0,1}

2022-01-13

3.7.x <= 版本 < 3.11

1.18 <= 版本 < 1.22

0.38.x

11.x

2021.x

0.54.x

2021-08-19

3.6.x <= 版本 < 3.10

1.17 <= 版本 < 1.21

0.37.x

11.x

2021.x

0.53.x

2021-03-11

3.6.x <= 版本 < 3.10

1.15 <= 版本 < 1.21

0.36.x

11.x

2019.5 <= 版本 < 2021.4

0.52.x

2020-11-30

3.6.x <= 版本 < 3.9

1.15 <= 版本 < 1.20

0.35.x

10.x (aarch64 为 9.x)

2019.5 <= 版本 < 2020.3

0.51.x

2020-08-12

3.6.x <= 版本 < 3.9

1.15 <= 版本 < 1.19

0.34.x

10.x (aarch64 为 9.x)

2019.5 <= 版本 < 2020.0

0.50.x

2020-06-10

3.6.x <= 版本 < 3.9

1.15 <= 版本 < 1.19

0.33.x

9.x

2019.5 <= 版本 < 2020.0

0.49.x

2020-04-16

3.6.x <= 版本 < 3.9

1.15 <= 版本 < 1.18

0.31.x <= 版本 < 0.33.x

9.x

2019.5 <= 版本 < 2020.0

0.48.x

2020-01-27

3.6.x <= 版本 < 3.9

1.15 <= 版本 < 1.18

0.31.x

8.x (ppc64le 为 7.x)

2018.0.5 <= 版本 < ?

0.47.x

2020-01-02

3.5.x <= 版本 < 3.9; 版本 == 2.7.x

1.15 <= 版本 < 1.18

0.30.x

8.x (ppc64le 为 7.x)

2018.0.5 <= 版本 < ?

  • †: 仅二进制兼容

检查您的安装

您应该能够从 Python 提示符导入 Numba

$ python
Python 3.10.2 | packaged by conda-forge | (main, Jan 14 2022, 08:02:09) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numba
>>> numba.__version__
'0.55.1'

您还可以尝试执行 numba --sysinfo(或简写为 numba -s)命令,以报告有关系统功能的信息。有关更多信息,请参阅命令行界面

$ numba -s
System info:
--------------------------------------------------------------------------------
__Time Stamp__
Report started (local time)                   : 2022-01-18 10:35:08.981319

__Hardware Information__
Machine                                       : x86_64
CPU Name                                      : skylake-avx512
CPU Count                                     : 12
CPU Features                                  :
64bit adx aes avx avx2 avx512bw avx512cd avx512dq avx512f avx512vl bmi bmi2
clflushopt clwb cmov cx16 cx8 f16c fma fsgsbase fxsr invpcid lzcnt mmx
movbe pclmul pku popcnt prfchw rdrnd rdseed rtm sahf sse sse2 sse3 sse4.1
sse4.2 ssse3 xsave xsavec xsaveopt xsaves

__OS Information__
Platform Name                                 : Linux-5.4.0-94-generic-x86_64-with-glibc2.31
Platform Release                              : 5.4.0-94-generic
OS Name                                       : Linux
OS Version                                    : #106-Ubuntu SMP Thu Jan 6 23:58:14 UTC 2022

__Python Information__
Python Compiler                               : GCC 9.4.0
Python Implementation                         : CPython
Python Version                                : 3.10.2
Python Locale                                 : en_GB.UTF-8

__LLVM information__
LLVM Version                                  : 11.1.0

__CUDA Information__
Found 1 CUDA devices
id 0      b'Quadro RTX 8000'                              [SUPPORTED]
                      Compute Capability: 7.5
                           PCI Device ID: 0
                              PCI Bus ID: 21
                                    UUID: GPU-e6489c45-5b68-3b03-bab7-0e7c8e809643
                                Watchdog: Enabled
             FP32/FP64 Performance Ratio: 32

(输出因长度截断)