Numba

로고

Numba는 llvmlite 파이썬 패키지를 통해 LLVM을 사용하여 파이썬 및 NumPy의 하위 집합을 빠른 기계 코드로 변환하는 오픈 소스 JIT 컴파일러이다. 이는 종종 사소한 코드 변경만으로 CPU 및 GPU용 Python 코드를 병렬화하기 위한 다양한 옵션을 제공한다.

Numba는 2012년 트래비스 올리펀트(Travis Oliphant)에 의해 시작되었으며 이후 깃허브 저장소에서 자주 릴리스되면서 활발한 개발이 진행되었다. 이 프로젝트는 DARPA, 고든 앤드 베티 무어 재단(Gordon and Betty Moore Foundation), 인텔, 엔비디아AMD, 깃허브의 기여자 커뮤니티의 지원을 받아 아나콘다(Anaconda, Inc.)의 개발자가 주도한다.

예시

Numba는 수치 계산을 수행하는 Python 함수에 numba.jit 데코레이터를 적용하여 사용할 수 있다.

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

JIT 컴파일은 함수가 호출될 때 투명하게 발생한다.

>>> monte_carlo_pi(1000000)
3.14

외부 링크

  • Numba - 공식 웹사이트