stringtranslate.com

numba

Numba es un compilador JIT de código abierto que traduce un subconjunto de Python y NumPy a código de máquina rápido utilizando LLVM , a través del paquete llvmlite Python. Ofrece una variedad de opciones para paralelizar código Python para CPU y GPU, a menudo con solo cambios menores de código.

Numba fue iniciado por Travis Oliphant en 2012 y desde entonces ha estado en desarrollo activo en su repositorio 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 contribuyentes en GitHub .

Ejemplo

Numba se puede utilizar simplemente aplicando el numba.jitdecorador a una función de Python que realiza cálculos numéricos:

importar  numba importar  aleatorio@numba . jit def  monte_carlo_pi ( n_samples :  int )  ->  float : """Monte Carlo""" acc = 0 para i en el rango ( n_samples ): x = aleatorio . aleatorio () y = aleatorio . aleatorio () si ( x ** 2 + y ** 2 ) < 1.0 : acc += 1 devuelve 4.0 * acc / n_samples                             

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

>>> monte_carlo_pi ( 1000000 ) 3.14

El sitio web de Numba contiene muchos más ejemplos, así como información sobre cómo obtener un buen rendimiento de Numba.

Soporte de GPU

Numba puede compilar funciones de Python en código GPU. Inicialmente hay dos backends disponibles:

Desde la versión 0.56.4, [2] AMD ROCm HSA se ha movido oficialmente al estado sin mantenimiento y se ha creado un código auxiliar de repositorio separado para ello.

Aproximaciones alternativas

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 la computación numérica rápida con Python, como Cython , Pythran y PyPy .

Referencias

  1. ^ "Versión 0.59.0". 7 de febrero de 2024 . Consultado el 20 de febrero de 2024 .
  2. ^ "Notas de la versión: documentación de Numba 0.56.4+0.g288a38bbd.dirty-py3.7-linux-x86_64.egg".