Numba
| Numba | ||
|---|---|---|
| Información general | ||
| Autor | Continuum Analytics | |
| Desarrollador | Proyecto comunitario | |
| Versiones | ||
| Última versión estable | 0.50.0 (2020 de marzo del 30) | |
| Enlaces | ||
Numba es un compilador JIT de código abierto que traduce un subconjunto de Python y NumPy en código de máquina usando LLVM, a través del paquete llvmlite de Python. Ofrece una gama de opciones para paralelizar código Python para CPU y GPU, a menudo con solo cambios menores en el código.[1]
Numba fue iniciado por Travis Oliphant en 2012 y desde entonces ha estado en desarrollo activo en GitHub 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.[1][2]
Ejemplo
[editar | editar código]
Numba se puede usar simplemente aplicando el decorador numba.jit a una función de Python que hace cálculos numéricos:
import numba
import random
@numba.jit
def monte_carlo_pi(nsamples: int):
acc = 0
for i in range(nsamples):
x = random.random()
y = random.random()
if (x**2 + y**2) < 1.0:
acc += 1
return 4.0 * acc / nsamplesLa compilación en tiempo de ejecución ocurre de forma transparente cuando se llama a la función:
>>> monte_carlo_pi(1000000)
3.14El sitio web de Numba en contiene más ejemplos, así como información sobre cómo obtener un buen rendimiento de Numba.
Soporte de GPU
[editar | editar código]Numba puede compilar funciones de Python en código de GPU. Actualmente hay dos backends disponibles: NVIDIA CUDA y AMD ROCm HSA.[2]
Aproximaciones alternativas
[editar | editar código]Numba es un enfoque para hacer que Python sea rápido, compilando funciones específicas que contienen código Python y NumPy. Existen muchos enfoques alternativos para cálculo numérico rápido con Python, como Cython, TensorFlow, PyTorch, Chainer, Pythran y PyPy .
Enlaces externos
[editar | editar código]- Sitio web de Numba
- Repositorio de Numba en GitHub
- Backends de Numba:
Referencias
[editar | editar código]- ↑ 1,0 1,1 Lanaro, Gabriele,. Python high performance : build robust application by implementing concurrent and distributed processing techniques (Second edition edición). ISBN 978-1-78728-243-8. OCLC 990086907. Consultado el 22 de septiembre de 2020.
- ↑ 2,0 2,1 «Numba: A High Performance Python Compiler». numba.pydata.org. Consultado el 22 de septiembre de 2020.