Numba es un compilador JIT de código abierto que traduce un subconjunto de Python y NumPy a código máquina rápido mediante LLVM , a través del paquete llvmlite de Python. Ofrece diversas opciones para paralelizar código Python para CPU y GPU, a menudo con solo pequeños cambios en el código.
Numba fue creado por Travis Oliphant en 2012 y desde entonces se encuentra en desarrollo activo con lanzamientos frecuentes. El proyecto está impulsado por desarrolladores de Anaconda, Inc., con el apoyo de DARPA , la Fundación Gordon y Betty Moore , Intel , Nvidia y AMD , y una comunidad de colaboradores en GitHub .
Ejemplo
Numba se puede usar simplemente aplicando el numba.jitdecorador a una función de Python que realice cálculos numéricos:
importar numba importar 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ón justo a tiempo se produce de forma transparente cuando se llama a la función:
>>> monte_carlo_pi ( 1000000 ) 3.14Compatibilidad con GPU
Numba puede compilar funciones de Python a código GPU. Inicialmente, hay dos backends disponibles:
- NVIDIA CUDA , consulte numba.readthedocs.io/en/stable/cuda/index.html
- AMD ROCm HSA , consulte numba
.pydata .org /numba-doc /dev /roc
Desde la versión 0.56.4, [ 3 ] AMD ROCm HSA se ha movido oficialmente a un estado sin mantenimiento y se ha creado un repositorio independiente para él.
Enfoques alternativos
Numba es una forma de acelerar Python mediante la compilación de funciones específicas que contienen código Python y NumPy. Existen muchas alternativas para realizar cálculos numéricos rápidos con Python, como Cython , Pythran y PyPy .
Referencias
Enlaces externos
- Python (lenguaje de programación)
- Implementaciones de Python (lenguaje de programación)