Numba
From Wikipedia, the free encyclopedia
| 開発元 | 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]
Numba CUDA
| 開発元 | NVIDIA |
|---|---|
| 最新版 |
0.23.0
/ 2025年12月18日[5] |
| リポジトリ | numba-cuda - GitHub |
| プラットフォーム | NVIDIA GPU Maxwell アーキテクチャ以降[6] |
| ライセンス | 二条項BSDライセンス |
| 公式サイト |
nvidia |
Numba CUDAはNVIDIAが開発していて、通常はCUDAカーネルをC++で記述するが、Numba CUDAはそれをPythonで記述できる[7]。なお、CUDAカーネルをC++で記述するので構わないが、CUDAをPythonで実行したい場合は、PyCUDA[8]やCUDA Python[9]などがある。
Numba CUDAのCUDAカーネル内では、Pythonの記法で記載するが、メモリ確保が出来ないため、NumPyのほとんどの機能は使えない[10]。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)