Numba

De Wikipedia, la enciclopedia libre
Numba
Información general
Tipo de programa compilador
Autor Continuum Analytics
Desarrollador Proyecto comunitario
Información técnica
Programado en
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 subset 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]

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 / nsamples

La compilación en tiempo de ejecución ocurre de forma transparente cuando se llama a la función:

>>> monte_carlo_pi(1000000)
3.14

El 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]

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]

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]

Referencias[editar]

  1. a b 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. a b «Numba: A High Performance Python Compiler». numba.pydata.org. Consultado el 22 de septiembre de 2020.