作者:赵以书的话_256 | 来源:互联网 | 2023-05-19 06:27
Numba是一个可以利用GPUCPU和CUDA对python函数进行动态编译,大幅提高执行速度的加速工具包。利用修饰器@jit,@cuda.jit,@vector
Numba是一个可以利用GPU/CPU和CUDA 对python函数进行动态编译,大幅提高执行速度的加速工具包。
利用修饰器@jit,@cuda.jit,@vectorize
等对函数进行编译
JIT:即时编译,提高执行速度
基于特定数据类型
集中于数值计算(高效编译math,cmath,sub-numpy)
Numba是一个开源的JIT编译器,可以将python或者numpy 的一些数学计算编译为运算速度极快的机器码,从而大幅提升程序的运算效率。它使用通用的LLVM编译库,不仅可以编译用于CPU执行的代码,达到和C相比拟的速度,同时还可以调用GPU库(如NVIDIA的CUDA和AMD的ROCs等)来实现GPU加速,所左右这些,都可以简单的利用python中的装饰器
来实现。
注:本系列主要集中于GPU和CUDA加速的使用。
1. 安装
如果安装过anaconda以及tensorflow等软件,numba可能已经在环境中了。先检查避免重复安装 。 请仔细对照官网步骤以免GPU驱动 出错!!! 官网步骤>>>link
直接利用conda
或者pip
即可安装:
$ conda install numba
$ pip install numba
GPU 安装请注意驱动!!
对于NvidiaGPU需要安装驱动和CUDA(推荐CUDA 8.0 or later)
$ conda install cudatoolkit
但*pip 安装可能需要自行安装cuda,并设置环境变量 NUMBAPRO_CUDA_DRIVER
:Path to the CUDA driver shared library file NUMBAPRO_NVVM
:Path to the CUDA libNVVM shared library file NUMBAPRO_LIBDEVICE
:Path to the CUDA libNVVM libdevice directory which contains .bc files
最后使用:numba -s
来查看安装情况。
对于numba,如果安装不便的情况下可以使用云服务或者在线notebook来学习, 以及一个GPU的notebook
2.基本使用
Numba主要使用修饰器来对python函数进行编译加速,其中包括了@jit,@vectorize,@cuda.jit
等常用修饰器。
import numpy as np
def my_add ( a, b) :
return a+ b
使用Numpy加速:
from numba import jit
@jit
def my_numba_add ( x, y) :
return x + y
测试一下函数的表现
import time
def test ( n) :
a = np. array( ( n) )
b = np. array( ( n) )
tic1 = time. time( )
my_add( a, b)
t1 = time. time( ) - tic1
print ( 'python time:' , t1)
tic2 = time. time( )
my_numba_add( a, b)
t2 = time. time( ) - tic2
print ( 'Numba time:' , t2)
print ( 'Numba acclerated %f times' % ( t1/ t2) )
>> > test( 1000 )
python time: 2.956390380859375e-05
Numba time: 1.7881393432617188e-05
Numba acclerated 1.653333 times
pic from pexels.com
ref: http://numba.pydata.org/ https://www.jianshu.com/p/f342ecf11c26 https://blog.csdn.net/u013975830/article/details/78822919?utm_source=blogxgwz8