Numba
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]
Exemple
[modifica]
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]
Suport GPU
[modifica]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, [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ò.
Referències
[modifica]- ↑ «Numba documentation — Numba 0.50.1 documentation» (en anglès). [Consulta: 25 març 2024].
- ↑ «A ~5 minute guide to Numba — Numba 0+untagged.2155.g9ce83ef.dirty documentation» (en anglès). [Consulta: 25 març 2024].
- ↑ «numba/numba» (en anglès), 25-03-2024. [Consulta: 25 març 2024].
- ↑ «Introduction to Numba: CUDA Programming» (en anglès). [Consulta: 25 març 2024].
- ↑ «Release Notes — Numba 0.56.4+0.g288a38bbd.dirty-py3.7-linux-x86_64.egg documentation» (en anglès).