安装

兼容性

关于软件兼容性,请参阅 版本支持信息 部分以获取详细信息。

我们支持的平台有:

  • Linux x86_64

  • Linux ppcle64 (POWER8, POWER9)

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

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

  • *BSD (仅非官方支持)

  • 计算能力为5.0及以上的NVIDIA GPU

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

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

使用 @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 的二进制轮子也可以从 PyPI 获取。你可以使用 pip 安装 Numba:

$ pip install numba

这也会下载所有需要的依赖项。你不需要安装 LLVM 来使用 Numba(事实上,Numba 会忽略系统上安装的所有 LLVM 版本),因为所需的组件已经打包到 llvmlite 轮子中。

要使用通过 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 包),但由于需要特殊的 LLVM 构建,安装 llvmlite 可能会相当具有挑战性。如果你是为了 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 (default: not set)

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

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

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

NUMBA_DISABLE_TBB (default: not set)

要在构建时禁用 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 支持编译到 Numba 的线程后端的 TBB 头文件/库(需要版本 >= 2021.6)。

    • importlib_metadata (适用于 Python 版本 < 3.9)

  • 可选的运行时包括:

    • 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) 为使用 Numba 的 OpenMP 线程后端提供了一个替代的 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 - 用于某些控制流图检查功能。

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

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

    • cubinlinkerptxcompiler 以支持 次版本兼容性

  • 要构建文档:

    • sphinx

    • pygments

    • sphinx_rtd_theme

    • numpydoc

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

版本支持信息

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

Numba

发布日期

Python

NumPy

llvmlite

LLVM

TBB

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

(输出因长度截断)