ナンバーロゴ | |
| 原作者 | 連続分析 |
|---|---|
| 開発者 | コミュニティプロジェクト |
| 初回リリース | 2012年8月15日 |
| 安定リリース | 0.60.0 [1]
/ 2024年6月13日 |
| リポジトリ |
|
| 書かれた | Python、C |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | 技術計算 |
| ライセンス | BSD 2節 |
| Webサイト | numba.pydata.org |
Numba は、 llvmlite Python パッケージを介してLLVMを使用してPythonとNumPyのサブセットを高速マシン コードに変換するオープンソースの JIT コンパイラです。CPU と GPU 用に Python コードを並列化するためのさまざまなオプションが提供され、多くの場合、わずかなコード変更のみで済みます。
Numba は 2012 年にTravis Oliphant氏によって開始され、それ以来 GitHub のリポジトリで活発に開発され、頻繁にリリースされてきました。このプロジェクトは Anaconda, Inc. の開発者によって推進されており、DARPA、Gordon and Betty Moore Foundation、Intel、Nvidia、AMD 、およびGitHubの貢献者コミュニティによるサポートを受けています。
例
numba.jitNumba は、数値計算を行う Python 関数にデコレータを
適用するだけで使用できます。
numba
をインポートランダムをインポート
@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 ( x ** 2 + y ** 2 ) < 1.0 : acc += 1 return 4.0 * acc / n_samples
関数が呼び出されると、ジャストインタイム コンパイルが透過的に実行され ます。
>>>モンテカルロ_pi ( 1000000 )
3.14
Numba の Web サイトには、さらに多くの例と、Numba から優れたパフォーマンスを得る方法に関する情報が掲載されています。
GPUサポート
Numba は Python 関数を GPU コードにコンパイルできます。最初は 2 つのバックエンドが利用可能です:
- Nvidia CUDAについては、numba.pydata.org/numba-doc /dev/cuda を参照してください。
- AMD ROCm HSA、numba.pydata.org/numba-doc/dev/ roc を参照
リリース0.56.4以降、[2] AMD ROCm HSAは正式にメンテナンス対象外の状態に移行し、別のリポジトリスタブが作成されました。
代替アプローチ
Numba は、Python と NumPy コードを含む特定の関数をコンパイルすることで Python を高速化する 1 つの方法です。Python で数値計算を高速化する代替方法は、 Cython、 Pythran 、PyPyなど、数多く存在します。
参考文献
- ^ “リリース 0.60.0”. 2024年6月13日. 2024年6月22日閲覧。
- ^ 「リリースノート — Numba 0.56.4+0.g288a38bbd.dirty-py3.7-linux-x86_64.egg ドキュメント」。
