問題タブ [numexpr]
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.
python - numba guvectorize target='parallel' は target='cpu' より遅い
大規模な多次元配列計算を含む python コードを最適化しようとしています。numba を使用すると、直感に反する結果が得られます。私はMBP、2015年半ば、2.5 GHz i7クアッドコア、OS 10.10.5、python 2.7.11で実行しています。次の点を考慮してください。
さまざまな関数で timeit を実行できるようになりました。
「並列」は単一のコアの大部分を使用しても使用していないようです。これはtop
、python が「並列」で ~40%、「cpu」で ~100%、および numexpr で ~300% ヒットしていることを示しているためです。 .
python-3.x - 特定のハードウェア構成ですべてゼロの配列を返す Python の Numexpr
最近、Numexpr のバグと思われるものを発見しました。私はすでに彼らの Git ハブでイシューをオープンしましたが、ここでも集団の知恵を利用できると考えました。
簡単に言えば、evaluate
単純な配列操作を実行すると、(予期せずに) 正しくない結果が返されることがあります。以下の Python コードで再現できるバグは、正しい結果ではなくゼロの配列が返されます。サンプル コードは乗算を示していますが、このバグは加算と累乗にも現れています。特に、Numexpr によって発生するエラーや警告はなく、計算負荷は正常に見え (つまり、タスク マネージャーを監視するときに RAM と CPU に予想どおりに負荷がかかります)、正しい形状配列が返されます。これらの理由から、分離するのはかなり陰湿なバグでした! テストでは、このバグは次のハードウェア ビルドでのみ発生しました。
- Windows Server 2012 r2、Intel Xeon 2680 v3、2 プロセッサ、48 個の論理コア
- Windows 8.1、Intel Xeon 2690、1 プロセッサ、24 個の論理コア
Windows 7、64 ビット、Intel i7 マシンで完了したソフトウェアの何千回もの実行のすべてにおいて、これが明らかになったことはありません。さらに、添付のコードを何度も (より大きな配列とより多くの反復を使用して) 実行しましたが、Windows 7、i7 マシンでエラーは発生していません。ただし、Xeon コンピューターは定期的にそれを明らかにします。残念ながら、他にテストできるビルドはありません。
その他の注意事項:
- WinPython ディストリビューション 3.4.3.6 から実行しています。
- サポートする Numexpr 関数を呼び出していない
evaluate
ため、デフォルト設定を使用しています。 - Numexpr のバージョンは 2.4.4 で、WinPython 3.4.3.6 に含まれています。
サンプルコード:
python - xlwings のインポート、numexpr パッケージからの欠落ファイル
xlwings を使い始めようとしていますが、インポートしようとするといくつかエラーが発生します。
私はOSXターミナルを引き上げて走りました
pip インストール xlwings
問題ありません。燃え上がったパイソン
$パイソン
それから走った
xlwings を xw としてインポート
そして、それは私にこれを与えました:
/users/Joshua/anaconda/lib/python3.5/site-packages/numexpr/cpuinfo.py:53: UserWarning: [Errno 2] そのようなファイルやディレクトリはありません: 'arch' stacklevel=stacklevel + 1) /users/Joshua /anaconda/lib/python3.5/site-packages/numexpr/cpuinfo.py:53: UserWarning: [Errno 2] そのようなファイルやディレクトリはありません: 'machine' stacklevel=stacklevel + 1) /users/Joshua/anaconda/lib /python3.5/site-packages/numexpr/cpuinfo.py:76: UserWarning: [Errno 2] そのようなファイルやディレクトリはありません: 'sysctl' stacklevel=stacklevel + 1):
numexpr パッケージのアンインストールと再インストールを試みました
pip アンインストール numexpr pip インストール numexpr
xlwingsでも同じことをしていますが、それでもこのエラーが発生します。:/
不足しているファイルを取得する方法についてのアイデアはありますか?
python - numexpr: 一時変数または繰り返される部分式?
同じサブ式が 1 つのnumexpr 式内の複数の場所にある場合、複数回再計算されますか (または numexpr はこれを検出して結果を再利用するのに十分賢いですか)?
numexpr 式内で一時変数を宣言する方法はありますか? これには 2 つの目的があります。
- numexpr が結果を再計算するのではなく、キャッシュして再利用することを検討することを奨励します。
- 式を単純化します (ソース コードを読みやすく、保守しやすくします)。
f(g(x))を計算しようとしています。ここで、fとgはどちらも複雑な式です (たとえば、ピクセルベースの主題分類の場合、fは複数のしきい値を含むネストされた決定木であり、gは正規化された差分比のセットであり、xはマルチバンド ラスター イメージです)。