Numba

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Numba
Original author(s)Continuum Analytics
Developer(s)Community project
Initial release15 August 2012; 7 years ago (2012-08-15)
Stable release
0.43.1 / 26 March 2019; 7 months ago (2019-03-26)
Repository Edit this at Wikidata
Written inPython, C
Operating systemCross-platform
TypeTechnical computing
Websitenumba.pydata.org

Numba is an open-source JIT compiler that translates a subset of Python and NumPy into fast machine code using LLVM, via the llvmlite Python package. It offers a range of options for parallelising Python code for CPUs and GPUs, often with only minor code changes.

Numba was started by Travis Oliphant in 2012 and has since been under active development at https://github.com/numba/numba with frequent releases. The project is driven by developers at Anaconda, Inc., with support by DARPA, the Gordon and Betty Moore Foundation, Intel, nvidia and AMD, and a community of contributors on GitHub.

Example[edit]

Numba can be used by simply applying the numba.jit decorator to a Python function that does numerical computations:

import numba
import random

@numba.jit
def monte_carlo_pi(nsamples):
    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

The Just-in-time compilation happens transparently when the function is called:

>>> monte_carlo_pi(1000000)
3.14

The Numba website at https://numba.pydata.org contains many more examples, as well as information how to get good performance from Numba.

GPU support[edit]

Numba can compile Python functions to GPU code. Currently two backends are available:

Alternative approaches[edit]

Numba is one approach to make Python fast, by compiling specific functions that contain Python and Numpy code. Many alternative approaches for fast numeric computing from Python exist, e.g. Cython, TensorFlow, PyTorch, Chainer, Pythran, PyPy, ...

References[edit]