Numba
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
Numba는 파이썬 함수를 JIT 컴파일하여 수치 계산의 속도를 높이는 오픈 소스 프로젝트이다. `@jit` 데코레이터를 사용하여 파이썬 함수에 적용하며, 함수가 호출될 때 컴파일이 수행된다. Numba는 CPU에서 빠른 성능을 보이며, 엔비디아 CUDA 및 AMD ROCm HSA를 통해 GPU 코드로 컴파일하여 대규모 병렬 연산을 지원한다. 파이썬에서 빠른 수치 계산을 위한 다른 방법으로는 Cython, Pythran, PyPy 등이 있다.
Numba는 `numba.jit` 데코레이터를 파이썬 함수에 적용하여 사용할 수 있다. 다음은 몬테카를로 방법을 사용하여 원주율(π) 값을 추정하는 예제 코드이다. JIT 컴파일은 함수가 호출될 때 투명하게 발생한다.
Numba는 `@jit` 데코레이터를 통해 지정된 파이썬 함수를 실행 시점에 JIT 컴파일한다. 단순 반복문을 사용하는 코드의 경우, Numba는 일반적인 파이썬 코드보다 훨씬 빠른 속도로 동작하며, NumPy 내장 함수와 비교해도 경쟁력 있는 성능을 보인다[2][3].
Numba는 파이썬 함수를 GPU 코드로 컴파일할 수 있다. 초기에는 다음 두 가지 백엔드를 지원했다.
Numba는 파이썬과 NumPy 코드를 포함하는 특정 함수를 컴파일하여 파이썬의 속도를 높이는 한 가지 방법이다. 파이썬을 사용한 빠른 수치 계산을 위한 다른 접근 방식으로는 Cython, [https://pythran.readthedocs.io/en/latest/ Pythran], PyPy가 있다.
[1]
웹사이트
Release Notes — Numba 0.56.4+0.g288a38bbd.dirty-py3.7-linux-x86_64.egg documentation
https://numba.readth[...]
2. 예시
import numba
import random
@numba.jit
def monte_carlo_pi(n_samples: int) -> float:
"""몬테 카를로"""
acc = 0
for i in range(n_samples):
x = random.random()
y = random.random()
if (x2 + y2) < 1.0:
acc += 1
return 4.0 * acc / n_samples
>>> monte_carlo_pi(1000000)
3.14
Python 함수에 `@jit` 데코레이터를 붙이면 실행 시점에 JIT 컴파일된다.
다음 예제에서 Numba 0.27.0 버전에서는 Python보다 200배 빠르게 동작하며, NumPy 내장 함수 `sum()`보다 30% 더 빠르게 동작한다[2][3].
from numba import jit
@jit
def sum1d(ary):
total = 0.0
for i in range(ary.shape[0]):
total += ary[i]
return total
3. 실행 방식
4. GPU 지원
0.56.4 버전부터,[1] AMD ROCm HSA는 공식적으로 유지 관리되지 않는 상태로 이전되었으며, 이를 위한 별도의 저장소 스텁이 생성되었다.
5. 다른 접근 방식
참조
[2]
웹사이트
A Speed Comparison Of C, Julia, Python, Numba, and Cython on LU Factorization
https://www.ibm.com/[...]
2019-01-25
[3]
웹사이트
Numba vs. Cython: Take 2
https://jakevdp.gith[...]
2019-01-25
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com