Numba

Numba
原作者Continuum Analytics
開發者社区计划
首次发布2012年8月15日,​10年前​(2012-08-15
目前版本
  • 0.56.4 (2022年11月4日)[1]
編輯維基數據鏈接
源代码库
  • github.com/numba/numba
編輯維基數據鏈接
编程语言Python, C
操作系统跨平台
类型科学计算英语List of numerical analysis software
许可协议
  • 2句版BSD许可证
編輯維基數據鏈接
网站numba.pydata.org

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英语ROCm HSA英语Heterogeneous System Architecture[6]

替代方式

Numba是使Python快速的方法之一,它编译包含Python和Numpy代码的特定函数。存在很多用Python进行快速数值计算的替代方式,比如CythonTensorFlowPyTorchChainer英语Chainer、Pythran[7]PyPy

引用

  1. ^ Release 0.56.4. 2022年11月4日 [2022年11月22日]. 
  2. ^ Releases · numba/numba. GitHub. [2021-08-09]. (原始内容存档于2022-08-31) (英语). 
  3. ^ github(页面存档备份,存于互联网档案馆
  4. ^ 网站 (页面存档备份,存于互联网档案馆
  5. ^ Numba for CUDA GPUs. [2020-09-29]. (原始内容存档于2019-04-16). 
  6. ^ Numba for AMD ROC GPUs. [2020-09-29]. (原始内容存档于2019-04-16). 
  7. ^ Pythran(页面存档备份,存于互联网档案馆
Python
实现
Python-logo-notext.svg
IDE
专题