python

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン両方とも次のリビジョン
python [2019/09/20 16:23] – [Framework] ともやんpython [2019/09/21 01:04] – [JIT コンパイラ] ともやん
行 61: 行 61:
 ===== JIT コンパイラ ===== ===== JIT コンパイラ =====
 [[http://numba.pydata.org/|Numba: A High Performance Python Compiler]]\\ [[http://numba.pydata.org/|Numba: A High Performance Python Compiler]]\\
- * Anaconda, Inc. が開発する Python コードの JIT コンパイラ + * Anaconda, Inc. が開発する Python コードの JIT コンパイラ\\ 
- * 使い方は関数に @njit = @jit(nopython=True) デコレータを指定する + * 使い方は関数に @njit = @jit(nopython=True) デコレータを指定する\\ 
- * Numpy などは高速化できるが Pandas は Numba によって理解されないため高速化されない + * @jit(int32(int32, int32)) のような型指定で更に高速化される\\ 
- * Numba は関数の Python バイトコードを LLVM を使用して CPU合わせた関数のマシンコードバージョンを生成する + * @jit(nogil=True) によりマルチコアシステムを活用できる\\ 
- * [[https://developer.nvidia.com/cuda-zone|Nvidia CUDA]] および [[https://rocm.github.io/|AMD ROC]] GPU をターゲットにできる+ * @jit(cache=True) によりプログラムを呼び出すたびに掛かるコンパイル時間を回避できる\\ 
 + * @jit(nopython=True, parallel=True) = @njit(parallel=True) により自動並列化による最適化を実行できる\\ 
 + * Numpy などは高速化できるが Pandas は Numba によって理解されないため高速化されない\\ 
 + * Numba は関数の Python バイトコードを LLVM を使用して CPU 合わせた関数のマシンコードバージョンを生成する\\ 
 + * [[https://developer.nvidia.com/cuda-zone|Nvidia CUDA]] および [[https://rocm.github.io/|AMD ROC]] GPU をターゲットにできる\\ 
 + 
 +Pandas がボトルネックになってもカーネル関数に分離すれば Numba で最適化出来る。\\ 
 +[[https://medium.com/bcggamma/bring-your-python-code-up-to-speed-with-numba-1aa1c0e52885|Bring Your Python Code Up to Speed with Numba - BCG GAMMA - Medium]]\\
  
 ===== 開発環境 ===== ===== 開発環境 =====