加速Python函数

Numba在运行时使用行业标准有限责任公司编译器库。Numba用Python编译的数值算法可以接近C或FORTRAN的速度。

您不需要替换Python解释器、运行单独的编译步骤,甚至不需要安装了C/C++编译器。只需将其中一个Numba装饰器应用于Python函数,其余的就由Numba完成。

了解更多» 立即尝试»
来自numba import njit随机输入@国家统计局def monte_carlo_pi(示例):acc=0对于范围内的i(nsamples):x=random.random()y=random.random()如果(x**2+y**2)<1.0:acc+=1return 4.0*acc/nsamples(返回4.0*acc/nsamples)

为科学计算而构建

Numba设计用于NumPy数组和函数。Numba为生成专门的代码不同的数组数据类型和布局以优化性能。特殊的装饰师可以创建通用函数通过NumPy数组进行广播,就像NumPy函数一样。

Numba还可以与用于交互式计算的Jupyter笔记本以及分布式执行框架(如Dask和Spark)配合使用。

了解更多» 立即尝试»
@njit(平行=真)定义逻辑回归(Y、X、w、迭代):对于范围内的i(迭代):w-=np.dot(((1.0/(1.0+np.exp(-Y*np.dot(X,w))-1.0)*Y),X)返回w

并行化您的算法

Numba为CPU和GPU提供了一系列并行化代码的选项,通常只需对代码进行少量更改。

简化的线程

@njit(并行=真)def模拟器(输出):#并行迭代循环对于i in prange(out.shape[0]):out[i]=运行sim()

Numba可以在多个CPU内核上自动执行NumPy数组表达式,并且可以轻松编写并行循环。

了解更多» 立即尝试»

SIMD矢量化

LBB0_8:vmovups(%rax,%rdx,4),%ymm0vmovups(%rcx,%rdx,4),%ymm1vsubps%ymm1、%ymm0、%ymm2vaddps%ymm2、%ymm2和%ymm2

Numba可以自动将一些循环转换为矢量指令,从而提高2-4倍的速度。Numba适应您的CPU能力,无论您的CPU支持SSE、AVX还是AVX-512。

了解更多» 立即尝试»

GPU加速

NVIDIA CUDA标志

由于支持NVIDIA CUDA,Numba允许您完全使用Python编写并行GPU算法。

农巴大学»


可移植编译

发布高性能Python应用程序,而不必担心二进制编译和打包。您的源代码仍然是纯Python,而Numba在运行时处理编译。我们在200多种不同的平台配置中不断测试Numba。

Numba支持Intel和AMD x86、POWER8/9、ARM CPU(包括Apple M1)、NVIDIA GPU、Python 3.9-3.12以及Windows/macOS/Linux。大多数系统的预编译Numba二进制文件都可以作为conda包和pip安装轮使用。

了解更多»

致谢

Numba的发展是通过一些组织目前和/或过去的支持实现的:

蟒蛇标志
DARPA标志
摩尔基金会标志
Intel徽标
NVIDIA标志
AMD标志