Ir al contenido

Numba

De Mexpedia
Numba
Información general
Autor Continuum Analytics
Desarrollador Proyecto comunitario
Versiones
Última versión estable 0.50.0 (2020 de marzo del 30)
Enlaces
Página no enlazada a Wikidata y añade el enlace en español: Numba.

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]

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

Referencias

[editar | editar código]
  1. ↑ 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. ↑ 2,0 2,1 «Numba: A High Performance Python Compiler». numba.pydata.org. Consultado el 22 de septiembre de 2020.