numba
このラッパーは、利用可能性 (「インポートできますか?」) とユーザー設定 (「numba_enabled()
True を返しますか?」)に応じて numba を使用するかどうかに応じて作成しました。
これは、numba の有無にかかわらずテストを実行したいテストに特に役立ちます。
def try_numba_autojit(func):
def func_(*args):
if numba_enabled():
try:
import numba
except:
pass
else:
return numba.autojit(func)(*args)
return func(*args)
return func_
問題: ラッパーが原因で、そうでなければ機能する関数がこのエラーをスローします。
*** OverflowError: can't convert negative value to unsigned char
ラッパーをオーバーライドしてを設定try_numba_autojit = numba.autojit
すると、エラーは発生しません。*args は numba が気に入らないことをしている可能性があると結論付けています。
pdb で、引数を手動で解凍しようとしました。
(Pdb) numba.autojit(func)
<specializing numba function(<function _refine at 0xa53ec6c>)>
(Pdb) numba.autojit(func)(*args)
*** OverflowError: can't convert negative value to unsigned char
(Pdb) numba.autojit(func)(args[0], args[1], args[2], args[3], args[4], args[5], args[6])
*** OverflowError: can't convert negative value to unsigned char
同じエラーが発生します。
try_numba_autojit
numba を動揺させないように推奨される関数の定義はありますか?