Numba

De la Viquipèdia, l'enciclopèdia lliure
Numba

Tipuscompilador, programari lliure i numerical software (en) Tradueix Modifica el valor a Wikidata
Versió estable
0.59.1 (19 març 2024) Modifica el valor a Wikidata
Llicènciallicència BSD de 2 clàusules Modifica el valor a Wikidata
Característiques tècniques
Escrit enC i Python Modifica el valor a Wikidata
Equip
Desenvolupador(s)Travis E. Oliphant (en) Tradueix Modifica el valor a Wikidata
Més informació
Lloc webnumba.pydata.org Modifica el valor a Wikidata

GitHub: numba

Numba és un compilador JIT de codi obert que tradueix un subconjunt de Python i NumPy en codi de màquina ràpid mitjançant LLVM, mitjançant el paquet llvmlite Python. Ofereix una sèrie d'opcions per paral·lelitzar el codi de Python per a CPU i GPU, sovint amb només canvis de codi menors.[1]

Numba va ser iniciat per Travis Oliphant el 2012 i des de llavors ha estat en desenvolupament actiu al seu repositori a GitHub amb llançaments freqüents. El projecte està impulsat per desenvolupadors d'Anaconda, Inc., amb el suport de DARPA, la Fundació Gordon i Betty Moore, Intel, Nvidia i AMD i una comunitat de col·laboradors a GitHub.[2]

Exemple[modifica]

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

import numba
import random

@numba.jit
def monte_carlo_pi(n_samples: int) -> float:
    """Monte Carlo"""
    acc = 0
    for i in range(n_samples):
        x = random.random()
        y = random.random()
        if (x**2 + y**2) < 1.0:
            acc += 1
    return 4.0 * acc / n_samples

La compilació just-in-time es fa de manera transparent quan es crida la funció:

>>> monte_carlo_pi(1000000)
3.14

El lloc web de Numba conté molts més exemples, així com informació sobre com obtenir un bon rendiment de Numba.[4]

Suport GPU[modifica]

Numba pot compilar funcions de Python al codi GPU. Inicialment hi ha dos backends disponibles:

  • Nvidia CUDA, vegeu numba.pydata.org/numba-doc/dev/cuda
  • AMD ROCm HSA, vegeu numba.pydata.org/numba-doc/dev/roc

Des de la versió 0.56.4, [5] AMD ROCm HSA s'ha traslladat oficialment a l'estat sense manteniment i s'ha creat un taló de repositori separat per a això.

Referències[modifica]

  1. «Numba documentation — Numba 0.50.1 documentation» (en anglès). [Consulta: 25 març 2024].
  2. «A ~5 minute guide to Numba — Numba 0+untagged.2155.g9ce83ef.dirty documentation» (en anglès). [Consulta: 25 març 2024].
  3. «numba/numba» (en anglès), 25-03-2024. [Consulta: 25 març 2024].
  4. «Introduction to Numba: CUDA Programming» (en anglès). [Consulta: 25 març 2024].
  5. «Release Notes — Numba 0.56.4+0.g288a38bbd.dirty-py3.7-linux-x86_64.egg documentation» (en anglès).