Numba
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/03/08 09:24 UTC 版)
開発元 | Anaconda, Inc. |
---|---|
初版 | 2012年8月15日 |
最新版 | |
リポジトリ | |
プログラミング 言語 | Python, C言語 |
プラットフォーム | x86-64, ARM64, POWER |
ライセンス | 二条項BSDライセンス |
公式サイト |
numba |
NumbaはPythonおよびNumPyのサブセットのソースコードを高速に実行する機械語に変換するJITコンパイラ。llvmliteにて、LLVMをバックエンドに使用し、CPU向けにコンパイルする。Anaconda, Inc.がスポンサーになっている。
かつてはNVIDIA CUDA向けもNumba内で開発されていたが、Numba 0.61より非推奨になり、Numba CUDAに分離され、NVIDIAが開発することになった。[2]
実行時コンパイル
Pythonの関数に @jit のデコレーターを付けることで、実行時にJITコンパイルされる。
下記の例においては、Numba 0.27.0において、Pythonよりも200倍高速に動作し、NumPyの組み込みのsum()関数よりも30%高速に動作する[3][4]。
from numba import jit
@jit
def sum1d(ary):
total = 0.0
for i in range(ary.shape[0]):
total += ary[i]
return total
Numba CUDA
開発元 | NVIDIA |
---|---|
最新版 |
0.6.0
/ 2025年3月7日[5] |
リポジトリ | numba-cuda - GitHub |
プラットフォーム | NVIDIA GPU Maxwell マイクロアーキテクチャ以降[2] |
ライセンス | 二条項BSDライセンス |
公式サイト |
nvidia |
Numba CUDAはNVIDIAが開発していて、通常はCUDAカーネルをC++で記述するが、Numba CUDAはそれをPythonで記述できる[6]。なお、CUDAカーネルをC++で記述するので構わないが、CUDAをPythonで実行したい場合は、PyCUDA[7]やCUDA Python[8]などがある。
Numba CUDAのCUDAカーネル内では、Pythonの記法で記載するが、メモリ確保が出来ないため、NumPyのほとんどの機能は使えない[9]。Numba CUDAはCuPyと併用することが出来て、CUDAカーネル外になるが、CuPyではNumPyの機能が使える。以下、CuPyを併用したときのB = A + A.Tのサンプルコード。
import cupy as cp
from numba import cuda
@cuda.jit
def add_kernel(A, B):
y, x = cuda.grid(2)
B[y, x] = A[y, x] + A[x, y]
A = cp.array([[1, 2], [3, 4]], dtype=cp.float32)
B = cp.zeros(A.shape, dtype=cp.float32)
add_kernel[1, A.shape](A, B)
print(B)
print(A + A.T)
参照
- ^ “Release 0.61.0” (21 1月 2025). 26 1月 2025閲覧。
- ^ a b “Overview — Numba 0+untagged.1829.g8ec16ce.dirty documentation”. numba.readthedocs.io. 16 February 2025閲覧。
- ^ “A Speed Comparison Of C, Julia, Python, Numba, and Cython on LU Factorization”. 2019年1月25日閲覧。
- ^ “Numba vs. Cython: Take 2”. 2019年1月25日閲覧。
- ^ “Tags · NVIDIA/numba-cuda”. February 16, 2025閲覧。
- ^ “Writing CUDA Kernels — Numba CUDA documentation”. nvidia.github.io. 8 March 2025閲覧。
- ^ “pycuda 2025.1 documentation”. documen.tician.de. 8 March 2025閲覧。
- ^ “CUDA Python 12.8.0 documentation”. nvidia.github.io. 8 March 2025閲覧。
- ^ “Supported Python features in CUDA Python — Numba CUDA documentation”. nvidia.github.io. 8 March 2025閲覧。
関連項目
外部リンク
- Numbaのページへのリンク