安装
兼容性
有关软件兼容性,请参阅版本支持信息部分了解详情。
我们支持的平台有
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-nvcc
和 cuda-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-64
和gxx_linux-64
Linux
POWER
:gcc_linux-ppc64le
和gxx_linux-ppc64le
Linux
ARM
: 无 conda 包,请使用系统编译器Mac OSX:
clang_osx-64
和clangxx_osx-64
或/usr/bin/clang
处的系统编译器 (Mojave 及更高版本)Mac OSX (M1):
clang_osx-arm64
和clangxx_osx-arm64
Windows: 适用于当前 Python 版本的 Visual Studio 版本
然后您可以从源代码树的顶层构建并安装 Numba
$ python setup.py install
如果您希望运行测试套件,请参阅开发者文档中的说明。
依赖列表
Numba 具有许多必需和可选的依赖项,这些依赖项还可能因目标操作系统和硬件而异。以下列出了所有这些依赖项(截至 2020 年 7 月)。
必需的构建时依赖
setuptools
numpy
llvmlite
上述编译器工具链
必需的运行时依赖
numpy
llvmlite
可选的构建时依赖
有关这些可选组件的配置和规范的其他选项的更多详细信息,请参阅构建时环境变量和可选组件配置。
llvm-openmp
(OSX) - 提供用于将 OpenMP 支持编译到 Numba 线程后端的头文件tbb-devel
- 提供 TBB 头文件/库,用于将 TBB 支持编译到 Numba 的线程后端中(要求版本 >= 2021.6)。
可选运行时依赖有
scipy
- 提供 Numbanp.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 或更高。cubinlinker
和ptxcompiler
以支持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
(输出因长度截断)