2022-03-17

【備忘録】Numba を試す

Numba は、Python と NumPy のコードのサブセットを、高速な機械語に変換するオープンソースの JIT コンパイラです。Numba のサイト [1] によると、Numba デコレータを Python 関数に適用するだけで、実行時に機械語に変換されるということです。

Numba のサイトで紹介されている簡単なサンプルで、Numba の有無で実行速度の差がどのぐらい違うのかを確認してみました。

下記の OS 環境で動作確認をしました。

Fedora Silverblue 35 x86_64
Python 3.10.2
Numba 0.55.1

Numbe は pip コマンドでインストールしました。

(venv) $ pip install numba

以下のサンプルの処理部分は、Numba のサイト [1] で紹介されているモンテカルロ法のサンプルの丸写しです。Numba のデコレータ指定の有無での実行速度の差を計測してみました。

test_numba.py

非力な CPU (Intel Celeron N4020) を搭載した PC による結果です。

monte_carlo_pi_1 function tool 11921.090 ms
Pi = 3.140964
monte_carlo_pi_2 function tool 2346.997 ms
Pi = 3.1419032

monte_carlo_pi_1 が Numba 指定無し、monte_carlo_pi_2 が Numba 指定有りです。簡単な処理とはいえ、一億回ループを回して、計算時間が一桁違うのであれば、使ってみる価値は十分ありそうです。また、並列演算にも使えるようなので、使いこなせるようになればパフォーマンス向上に役立ちそうです。

参考サイト

  1. Numba: A High Performance Python Compiler

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

0 件のコメント: