NumbaはPythonおよびNumPyのサブセットのソースコードを高速に実行する機械語に変換するJITコンパイラ。llvmliteにて、LLVMをバックエンドに使用し、CPU向けにコンパイルする。Anaconda, Inc.がスポンサーになっている。

かつてはNVIDIA CUDA向けもNumba内で開発されていたが、Numba 0.61より非推奨になり、Numba CUDAに分離され、NVIDIAが開発することになった。

実行時コンパイル

Pythonの関数に @jit のデコレーターを付けることで、実行時にJITコンパイルされる。

下記の例においては、Numba 0.27.0において、Pythonよりも200倍高速に動作し、NumPyの組み込みのsum()関数よりも30%高速に動作する。

Numba CUDA

Numba CUDAはNVIDIAが開発していて、通常はCUDAカーネルをC で記述するが、Numba CUDAはそれをPythonで記述できる。なお、CUDAカーネルをC で記述するので構わないが、CUDAをPythonで実行したい場合は、PyCUDAやCUDA Pythonなどがある。

Numba CUDAのCUDAカーネル内では、Pythonの記法で記載するが、メモリ確保が出来ないため、NumPyのほとんどの機能は使えない。Numba CUDAはCuPyと併用することが出来て、CUDAカーネル外になるが、CuPyではNumPyの機能が使える。以下、CuPyを併用したときのB = A A.Tのサンプルコード。

参照

関連項目

  • JAX (ライブラリ)

外部リンク

  • 公式ウェブサイト
  • numba/numba: NumPy aware dynamic Python compiler using LLVM - GitHub

Numba Deluxe (PC (Microsoft Windows)) SpieleRelease.de

Numba Examples

Numba Deluxe on Steam

Numba 3 by StarsStuff on DeviantArt

Numba Screenshots for Windows MobyGames