Odrętwienie

Odrętwienie
Oryginalni autorzy Analiza kontinuum
Deweloperzy Projekt społeczności
Pierwsze wydanie 15 sierpnia 2012 ; 10 lat temu ( 15.08.2012 )
Wersja stabilna
0,56,4 / 4 listopada 2022 ; 3 miesiące temu ( 2022-11-04 )
Wersja podglądu
0.54.0rc2 / 16 lipca 2021 ; 19 miesięcy temu ( 2021-07-16 )
Magazyn
Napisane w Pyton , C
System operacyjny Międzyplatformowe
Typ Obliczenia techniczne
Licencja BSD 2-klauzula
Strona internetowa numba .pydata .org

Numba to kompilator JIT typu open source , który tłumaczy podzbiór Pythona i NumPy na szybki kod maszynowy przy użyciu LLVM za pośrednictwem pakietu Python llvmlite. Oferuje szereg opcji równoległości kodu Pythona dla procesorów i procesorów graficznych, często z niewielkimi zmianami w kodzie.

Numba została założona przez Travisa Oliphanta w 2012 roku i od tego czasu jest aktywnie rozwijana na https://github.com/numba/numba z częstymi wydaniami. Projekt jest prowadzony przez programistów z Anaconda, Inc., przy wsparciu DARPA , Gordon and Betty Moore Foundation , Intel , Nvidia i AMD oraz społeczności współpracowników na GitHub .

Przykład

Numby można użyć, po prostu stosując dekorator numba.jit do funkcji Pythona, która wykonuje obliczenia numeryczne:

 
 


    
    
      0
       
          
          
          import  numba  import  losowo  @numba  .  jit  def  monte_carlo_pi  (  n_próbek  :  int  )  ->  float  :  """Monte Carlo"""  acc  =  dla  i  w  zakresie  (  n_próbek  ):  x  =  losowo  .  losowy  ()  y  =  losowy  .  losowo  ()  jeśli  (  x     
              
          **  2  +  y  **  2  )  <  1,0  :  acc  +=  1  return  4,0  *  acc  /  n_próbek 

Kompilacja just-in-time odbywa się w sposób przezroczysty, gdy funkcja jest wywoływana:


 >>>  monte_carlo_pi  (  1000000  )  3.14 

Witryna Numba pod adresem https://numba.pydata.org zawiera wiele innych przykładów, a także informacje o tym, jak uzyskać dobre wyniki z Numby.

Wsparcie GPU

Numba może kompilować funkcje Pythona do kodu GPU. Początkowo dostępne są dwa backendy:

Od wydania 0.56.4 AMD ROCm HSA został oficjalnie przeniesiony do stanu nieobsługiwanego i utworzono dla niego osobny kod pośredniczący repozytorium, patrz https://github.com/numba/numba-rocm

Alternatywne podejścia

Numba to jedno podejście do przyspieszenia Pythona poprzez kompilację określonych funkcji zawierających kod Pythona i Numpy. Istnieje wiele alternatywnych podejść do szybkich obliczeń numerycznych w Pythonie, takich jak Cython , TensorFlow , PyTorch , Chainer , Pythran i PyPy .