Numba és un compilador JIT de codi obert que tradueix un subconjunt de Python i NumPy en codi de màquina ràpid mitjançant LLVM, mitjançant el paquet llvmlite Python. Ofereix una sèrie d'opcions per paral·lelitzar el codi de Python per a CPU i GPU, sovint amb només canvis de codi menors.
Numba va ser iniciat per Travis Oliphant el 2012 i des de llavors ha estat en desenvolupament actiu al seu repositori a GitHub amb llançaments freqüents. El projecte està impulsat per desenvolupadors d'Anaconda, Inc., amb el suport de DARPA, la Fundació Gordon i Betty Moore, Intel, Nvidia i AMD i una comunitat de col·laboradors a GitHub.
Exemple Numba es pot utilitzar simplement aplicant el decorador numba.jit a una funció de Python que fa càlculs numèrics:import numba import random
@numba.jit def monte_carlo_pi(n_samples: int) -> float: """Monte Carlo""" 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_samplesLa compilació just-in-time es fa de manera transparent quan es crida la funció:>>> monte_carlo_pi(1000000) 3.14El lloc web de Numba conté molts més exemples, així com informació sobre com obtenir un bon rendiment de Numba.
Suport GPU Numba pot compilar funcions de Python al codi GPU. Inicialment hi ha dos backends disponibles:
Nvidia CUDA, vegeu numba.pydata.org/numba-doc/dev/cuda AMD ROCm HSA, vegeu numba.pydata.org/numba-doc/dev/roc
Des de la versió 0.56.4, AMD ROCm HSA s'ha traslladat oficialment a l'estat sense manteniment i s'ha creat un taló de repositori separat per a això.
Referències
Categoria:Compiladors