問題タブ [numba]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3408 参照

python - ベクトル化された Numpy メソッドよりも遅い Numba autojit 関数

値のリストを作成するために、次の for ループがあります。

リストの作成を高速化するために、ベクトル化されたアプローチを使用してリストを Numpy 配列として作成しました。pこのアプローチは、特に範囲が拡大する大きな値の場合、同等の for ループよりもはるかに高速です。

配列の作成をさらに高速化するために、Numba パッケージを使用しようと考えました。以下は私の現在の試みです。

残念ながら、Numba を使用した場合のパフォーマンスの向上は見られません。これは、Numpy のみを使用したベクトル化アプローチよりもほぼ 3 倍遅くなります。

これにNumbaを使用する方法に関する提案はありますか?

0 投票する
0 に答える
216 参照

python - numba (python) から size_t をインポートできません

私はPythonが初めてで、次のコードを実行しようとしています:

私の問題は、numba から size_t をインポートしようとすると、「未解決の参照」エラーが発生することです。誰かがこれを修正する方法を手伝ってくれますか?

ありがとう!

0 投票する
0 に答える
72 参照

python - Autojit - 回転のパフォーマンスを向上させる方法

次のコードがあります。

私はそれをテストしていますが、1.7300620079数秒かかります。しかし、@autojitデコレータを使用すると悪化します。

1.92721390724で。より良いパフォーマンスを得るために何かを変更する必要がありますか?

テスト用のコードは次のとおりです。

0 投票する
1 に答える
968 参照

python - mpmath / gmpyを使用してPythonでJITを効果的に使用するには?

これは、Python で JIT を使用する最初の試みであり、スピードアップしたいユース ケースです。numba について少し読んだところ、十分に単純に思えましたが、次のコードでは速度が向上しませんでした。私が犯しているかもしれない明らかな間違いを許してください。

また、cython の基本的なチュートリアルが示唆することを実行しようとしましたが、時間に違いはありませんでした。 http://docs.cython.org/src/tutorial/cython_tutorial.html

変数を宣言するようなことをしなければならないと思いますか?他のライブラリを使用しますか? すべてに排他的に for ループを使用しますか? 参考になるガイダンスや例をいただければ幸いです。

たとえば、以前の質問から、numpy と比較して mpmath の Elementwise operations が遅いことと、 mpmath の代わりに gmpy を使用した方がはるかに高速であるという解決策を知っています。

0 投票する
2 に答える
772 参照

python - 反応拡散アルゴリズムでの Numba または Cython アクセラレーション

Python や NumPy で書かれたコードを高速化したい。反応拡散モデルにはグレイ スコット アルゴリズム ( http://mrob.com/pub/comp/xmorphia/index.html ) を使用しますが、Numba と Cython を使用するとさらに遅くなります。それを高速化することは可能ですか?前もって感謝します!

Python+NumPy

ナンバー

シトン

使用例:

0 投票する
2 に答える
1123 参照

pytest - numba でラップされた関数のカバレッジの分析

私はpython モジュール@numba.jitを作成しました。その多くは、速度を上げるためにデコレータでラップされています。また、このモジュールの多くのテストを作成し、( Travis-CIで) を使用して実行しましpy.testた。今、私はこれらのテストの範囲を調べようとしてpytest-covます.coverage

残念ながら、numba.jitこれらすべての関数を使用するcoverageと、関数が使用されていないと思われるようです。これは一種のケースです。したがって、基本的に、テストで報告されたカバレッジは得られません。そのコードを取得してコンパイルするので、これは大きな驚きではありませんnumba。したがって、コード自体は実際には使用されません。しかし、私はあなたがPythonで時々見る魔法のいくつかがあることを望んでいました...

これら 2 つの優れたツールを組み合わせる便利な方法はありますか? それができない場合、numba でカバレッジを測定するために使用できる他のツールはありますか?

[ここで違いを示す最小限の実例を作成しました。)

0 投票する
1 に答える
373 参照

python - numba でテイクを高速化しますか?

numba を使用して np.take を高速化することは可能ですか?

ここに私の試みがありますが、それはずっと遅いです。np.empty_like コマンドが気に入らないため、nopython モードは使用できません。

結果は次のとおりです。

0 投票する
5 に答える
948 参照

python - Pythonで複数の内積を高速化する方法

次のことを行う簡単なコードがあります。

F+-1 のエントリを持つすべての可能な長さ n リストを反復処理します。2nそれぞれについて、+-1 エントリを使用してすべての可能な長さリストを繰り返し処理しSます。ここで、$S$ の前半は単に後半のコピーです。このコードは、 lengthFの各サブリストを使用しての内積を計算します。F、S ごとに、最初の非ゼロ内積まで、ゼロである内積をカウントします。Sn

これがコードです。

の正しい出力n=14

pypy を使用すると、n = 14 で 1 分 18 秒かかります。残念ながら、16,18,20,22,24,26 で実行したいと思います。numba や cython を使用してもかまいませんが、可能であれば python に近づきたいです。

これをスピードアップするための助けは大歓迎です。


ここで最速のソリューションを記録します。(更新された回答を見逃した場合はお知らせください。)

  • n = 22 at 9m35.081s by Eisenstat (C)
  • n = 18 at 1m16.344s by Eisenstat (pypy)
  • n = 18 at 2m54.998s by Tupteq (pypy)
  • n = 14 at 26s by Neil (numpy)
  • n - kslote1 (pypy) による 11m59.192s の 14
0 投票する
1 に答える
164 参照

python - jit された関数をベクトル化しようとする Numbapro

単純なアルゴリズムをいくつか試して、numbapro の jit/vectorize の背後にあるセマンティクスを理解しようとしています。これは、後で複数回実行したいミラーラビン素数性テストです。

これはうまくいきます

しかし、デコレータを

エラーを与える

ufunc で vectorize を使用する必要があることは理解していますが、これを ufunc にするために何が欠けていますか?

0 投票する
1 に答える
238 参照

python - この丸め機能を高速化するにはどうすればよいですか?

ここからリストの最も近い有効なオッズに値を丸める関数を作成しようとしています: https://api.developer.betfair.com/services/webapps/docs/display/1smk3cen4v3lu3yomq5qye0ni/Betfair+Price+Increments

私のコードはここにあります:

numba を使用したフロア バージョンは次のとおりです。

そして、これを使用してコードの時間を計ります:

私のマシンのタイミング:

numpy や numba を使用してコードを高速化するにはどうすればよいですか?

解決:

http://numba.pydata.org/numba-doc/dev/examples.htmlのマルチスレッドの例をベクトル化関数に変換できることを発見しました。これを使用すると、2 コアのラップトップで最高のパフォーマンスが得られます。

Numba の Vectorize 関数も、それほど良くはありませんが、問題ありません。

ベクトライザー コードを github にアップロードしました: https://github.com/jsphon/MTVectorizer

タイミング比較のチャートを以下に示します。x 軸は、入力配列のサイズを表します。y 軸は時間を表します。

このグラフは、デュアル コア ラップトップのものです。

タイミング比較

このグラフは、i7 920 CPU を搭載したデスクトップのものです。8コアあります。

ここに画像の説明を入力