Anar al contingut

Numba

De L'Enciclopèdia, la wikipedia en valencià

Numba és un compilador JIT de còdic obert que traduïx un subconjunt de Python i NumPy en còdic de màquina usant LLVM, a través del paquet llvmlite de Python. Oferix una gama d'opcions per a paralelizar còdic Python per a CPU i GPU, a sovint en sol canvis menors en el còdic.[1]

Numba va ser iniciat per Travis Oliphant en 2012 i des de llavors ha estat en desenroll actiu en GitHub en llançaments freqüents. El proyecte està impulsat per desenrolladors de Anaconda, Inc., en el respal de DARPA, la Fundació Gordon i Betty Moore, Intel, Nvidia i AMD, i una comunitat de colaboradors en GitHub.[1][2]

Eixemple

[editar | editar còdic]

Numba es pot usar simplement aplicant el decorador numba.jit a una funció de Python que fa càlculs numèrics:

import numba
import random

numba.jit
def monte_carlo_pi(nsamples: int):
    acc = 0
    for i in range(nsamples):
        x = random.random()
        i = random.random()
        if (x**2 + i**2) < 1.0:
            acc += 1
    return 4.0 * acc / nsamples

La compilació en temps d'eixecució ocorre de forma transparent quan es diu a la funció:

>>> mont_carlo_pi(1000000)
3.14

El lloc web de Numba en conté més eixemples, aixina com informació sobre cóm obtindre un bon rendiment de Numba.

Soport de GPU

[editar | editar còdic]

Numba pot compilar funcions de Python en còdic de GPU. Actualment hi ha dos backends disponibles: NVIDIA CUDA i AMD ROCm HSA.[2]

Referències

[editar | editar còdic]
  1. 1,0 1,1 Lanaro, Gabriele,. Python high performance : build robust application by implementing concurrent and distributed processing techniques, Second edition edició. OCLC 990086907. ISBN 978-1-78728-243-8.
  2. 2,0 2,1 «Numba: A High Performance Python Compiler». numba.pydata.org. Consultat el 2020-09-22.