Tipus | compilador, programari lliure i numerical software (en) |
---|---|
Versió estable | |
Llicència | llicència BSD de 2 clàusules |
Característiques tècniques | |
Escrit en | C i Python |
Equip | |
Desenvolupador(s) | Travis E. Oliphant (en) |
Més informació | |
Lloc web | numba.pydata.org |
| |
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.[1]
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.[2]
Numba es pot utilitzar simplement aplicant el decorador numba.jit
a una funció de Python que fa càlculs numèrics: [3]
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_samples
La compilació just-in-time es fa de manera transparent quan es crida la funció:
>>> monte_carlo_pi(1000000)
3.14
El lloc web de Numba conté molts més exemples, així com informació sobre com obtenir un bon rendiment de Numba.[4]
Numba pot compilar funcions de Python al codi GPU. Inicialment hi ha dos backends disponibles:
Des de la versió 0.56.4, [5] AMD ROCm HSA s'ha traslladat oficialment a l'estat sense manteniment i s'ha creat un taló de repositori separat per a això.