numbaのjitコンパイラで条件の配列を含む関数をコンパイルしようとすると、非常に時間がかかります。プログラムは基本的にはnumba.jitによる条件配列のコンパイルに長時間かかる
from numba import jit
import numpy as np
@jit(nopython=True)
def foo(a, b):
valid = [
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0),
(a - 1 >= 0) and (b - 1 >= 0)
]
foo(1, 1)
のように見えますが、ここではコンパイル時間を大幅に変更しないものはすべて除外しています。私は20以上の要素を使用すると問題が発生します。
| elements | time |
-------------------
| 21 | 2.7s |
| 22 | 5.1s |
| 23 | 10s |
| ... | ... |
-------------------
でも、この機能はうまく機能します。 numbaでそのような関数をコンパイルするのは誰にも分かりません。整数や浮動小数点数の組み合わせで同様の方法で配列を作成することは問題ありません。それはそう悪いスケールするために何かがコンパイラにゆがんで起こっているようにあなたがnumba issue trackerにこれを報告したいことがあり
あなたが実行可能である完全な例を提供することはできますか? – JoshAdel
@JoshAdel私はこの例を変更しました。これは現在実行可能で簡単です。 – TheIdealis