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 - 공식 웹사이트