@vectorizeはいつ使用しますか?numbaの@jitと@vectorizeの違いは何ですか?
私は@jitを試してみましたが、下記のコードの一部を示し、
from numba import jit
@jit
def kma(g,temp):
k=np.exp(-(g+np.abs(g))/(2*temp))
return k
が、私のコードは、アルゴリズムを加速していませんでした。どうして?
@vectorizeはいつ使用しますか?numbaの@jitと@vectorizeの違いは何ですか?
私は@jitを試してみましたが、下記のコードの一部を示し、
from numba import jit
@jit
def kma(g,temp):
k=np.exp(-(g+np.abs(g))/(2*temp))
return k
が、私のコードは、アルゴリズムを加速していませんでした。どうして?
@vectorize
は、一度に1つの要素(スカラー)を配列に適用できる式を記述するために使用されます。 @jit
デコレータはより一般的であり、あらゆるタイプの計算に使用できます。
ドキュメント内の他の利点の詳細な議論があります:
http://numba.pydata.org/numba-doc/latest/user/vectorize.html
あなたは、「なぜ私が使用して単純な反復ループをコンパイルするのではなく、これを通過するだろう自分自身を頼むかもしれません@ジットデコレータ? "答えは、NumPy ufuncsが自動的に縮小、蓄積、放送などの他の機能を取得することです。
あなたのコードがスピードアップされていない理由は、私が実行している操作がすでに低レベルコンパイルされたコードはnumpyのベクトル化操作の背後に座っています。
中間配列の作成を避けるために暗黙的ループをアンロールするといくらか節約されるかもしれませんが、通常numbaはnumpyで容易にベクトル化されない操作に優れています。
numpyがすでにそれを処理しているため、上記のコードをjittedできないことを意味しますか? Numbaは一般的に 'forループ'で役に立ちますか? –