Numba
原作者 | Continuum Analytics |
---|---|
开发者 | 社区计划 |
首次发布 | 2012年8月15日 |
当前版本 | 0.60.0[1](2024年1月13日 ) |
预览版本 | 0.61.0dev0(2024年5月15日 | )
原始码库 | |
编程语言 | Python, C |
操作系统 | 跨平台 |
类型 | 科学计算 |
许可协议 |
|
网站 | numba |
Numba是开源的JIT编译器,它通过llvmlite绑定包,使用LLVM将包括很多NumPy函数的聚焦数值计算的Python子集,翻译成快速的机器码。它为在CPU和GPU上并行化Python代码提供了大量选项,而经常只需要微小的代码变更。
Numba由Travis Oliphant在2012年开创并在github[2]上活跃开发而经常有新的发行。这个计划由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的网站[3]包含了更多的例子,还有如何从Numba获得更好的性能的资讯。
GPU支持
Numba可以把Python函数编译成GPU代码。目前能获得二个后端:
替代方式
Numba是使Python快速的方法之一,它编译包含Python和Numpy代码的特定函数。存在很多用Python进行快速数值计算的替代方式,比如Cython、TensorFlow、PyTorch、Chainer、Pythran[6]和PyPy。