Numba
- 0.60.0 (2024年6月13日;穩定版本)[1]
![編輯維基數據鏈接](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png)
- github
.com /numba /numba
![編輯維基數據鏈接](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png)
- 2句版BSD许可证
![編輯維基數據鏈接](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png)
Numba是开源的JIT编译器,它通过llvmlite绑定包,使用LLVM将包括很多NumPy函数的聚焦数值计算的Python子集,翻译成快速的机器码。它为在CPU和GPU上并行化Python代码提供了大量选项,而经常只需要微小的代码变更。
Numba由Travis Oliphant(英语:Travis Oliphant)在2012年开创并在github[3]上活跃开发而经常有新的发行。这个计划由Anaconda公司的开发者驱动,并受到DARPA、Gordon和Betty Moore基金会、Intel、Nvidia、AMD和GitHub上的社区贡献者的支持。
例子
Numba可以通过简单的在进行数值计算的Python函数上应用numba.jit
修饰符来使用:
import numba import random @numba.jit def monte_carlo_pi(n_samples: int): acc = 0 for i in range(n_samples): x = random.random() y = random.random() if (x**2 + y**2) < 1.0: acc += 1 return 4.0 * acc / n_samples
即时编译在函数被调用时透明地进行:
>>> monte_carlo_pi(1000000) 3.14
Numba的网站[4]包含了更多的例子,还有如何从Numba获得更好的性能的信息。
GPU支持
Numba可以把Python函数编译成GPU代码。目前能获得二个后端:
- NVIDIA CUDA[5]
- AMD ROCm HSA(英语:Heterogeneous System Architecture)[6]
替代方式
Numba是使Python快速的方法之一,它编译包含Python和Numpy代码的特定函数。存在很多用Python进行快速数值计算的替代方式,比如Cython、TensorFlow、PyTorch、Chainer(英语:Chainer)、Pythran[7]和PyPy。
引用
- ^ Release 0.60.0. 2024年6月13日 [2024年6月22日].
- ^ Releases · numba/numba. GitHub. [2021-08-09]. (原始内容存档于2022-08-31) (英语).
- ^ github(页面存档备份,存于互联网档案馆)
- ^ 网站 (页面存档备份,存于互联网档案馆)
- ^ Numba for CUDA GPUs. [2020-09-29]. (原始内容存档于2019-04-16).
- ^ Numba for AMD ROC GPUs. [2020-09-29]. (原始内容存档于2019-04-16).
- ^ Pythran(页面存档备份,存于互联网档案馆)
|