Numba、jitclassを使用してクラスメソッドをスキップする方法を理解しようとしている
与えられたパス依存の計算は、まっすぐなNumpyでベクトル化することはできません非常に大きな再帰モデル(かなり大規模なfor-loop)を持っています。
def operations(self, i, ops_order_config):
ops_dict = self.ops_dict
for index in range(len(waterfall_config)):
try:
if isinstance(ops_config[index], tuple):
ops_dict[ops_config[index][0]](i, ops_config[index][1])
else:
ops_dict[ops_config[index]](i)
except KeyError:
pass
モデルのこの部分:
クラスは、しかし、私が注文したファッションのメソッドのいくつかを呼び出す一つのセクションを持っている、一般的にnumba優しい構文で、numpyの一連の配列を通ります柔軟性のためには非常に重要です。「config」は、適切な呼び出し方法とそれぞれのパラメータを含むタプルの順序付きリストです。 ops_dictは実際の自己を保持します。適切なパラメータでconfigから呼び出されます。
私がjitclassを作成している場合、この辞書の側面を飛ばす方法はありますか?
ありがとうございます。 jitclassが使用され、動作しているとき、nopythonモードが適用されていることを前提とした安全な仮定ですか? – user7038639
@ user7038639はい。このクラスのすべてのメソッドはnopythonモードでコンパイルされます。 [docs](http://numba.pydata.org/numba-doc/dev/user/jitclass.html)には明示的に言及されています: "jitclassのすべてのメソッドはnopython関数にコンパイルされます.jitclassインスタンスのデータはコンパイルされた関数がインタプリタをバイパスして基礎となるデータに直接アクセスできるように、C互換構造としてヒープに割り当てられます。 :) – MSeifert
Blah、これらの文書を10回読んだことがあります。ありがとう! – user7038639