1

Ubuntu 11.04、Ubuntu 12.04、WindowsXPSP3をすべて「デュアルブート」して更新しました。PCはかなり古いIntelCeleronD CPU 3.06GHz、2GB RAM

Ubuntu 11.04ではNumpyをATLASでコンパイルしています(ATLASはソースからコンパイルしています)
Ubuntu 12.04ではNumpyを最新のMKL、icc、ifortでビルドしてい
ますWindows XPではNumpyとMKLを使用しています(Christoph Gohlkeから提供されたPythonパッケージから)
詳細ここ: http: //pastebin.com/raw.php?i = wxuFbyVg

私は簡単に試しました:
%timeit np.dot(np.ones((1000,1000)), np.ones((1000,1000)))

そしてこの結果を得ました:

Ubuntu ATLAS: 1 loops, best of 3: 457 ms per loop
Windows MKL:  1 loops, best of 3: 680 ms per loop
Ubuntu MKL:   1 loops, best of 3: 1.04 s per loop

上記は悪い例だと思い、利用可能な多くの比較の1つを検索しました。つまり、最初のGoogleヒット:http ://dpinte.wordpress.com/2010/01/15/numpy-performance-improvement-with-the-mkl/

私は同じ機能をテストしました:

%timeit test_eigenvalue()
Ubuntu Atlas: 1 loops, best of 3: 6.38 s per loop
Windows MKL:  1 loops, best of 3: 2.22 s per loop
Ubuntu MKL:   1 loops, best of 3: 3.58 s per loop

%timeit test_svd()
Ubuntu Atlas: 1 loops, best of 3: 2.13 s per loop
Windows MKL:  1 loops, best of 3: 2.06 s per loop
Ubuntu MKL:   1 loops, best of 3: 3.09 s per loop

%timeit test_inv()
Ubuntu Atlas: 1 loops, best of 3: 964 ms per loop
Windows MKL:  1 loops, best of 3: 1.02 s per loop
Ubuntu MKL:   1 loops, best of 3: 1.59 s per loop

%timeit test_det()
Ubuntu Atlas: 1 loops, best of 3: 308 ms per loop
Windows MKL:  1 loops, best of 3: 322 ms per loop
Ubuntu MKL:   1 loops, best of 3: 491 ms per loop

%timeit test_dot()
Ubuntu Atlas: 1 loops, best of 3: 1.5 s per loop        
Windows MKL:  1 loops, best of 3: 1.77 s per loop
Ubuntu MKL:   1 loops, best of 3: 2.77 s per loop

したがって、ATLASでコンパイルされたNumpyは、何らかの理由で最良の結果をもたらします。
誰かが問題になる可能性があることを知っていますか?

4

2 に答える 2

4

インテル®MKLは、主にサーバーおよび高性能デスクトップおよびモバイル・プロセッサー向けに設計および最適化されています。Celeron Dは比較的パフォーマンスの低いプロセッサであったため、MKLが最適化されることはありませんでした。たとえば、最近のIntel Core i7デスクトップでSVDのパフォーマンスを確認すると、MKL対応のNumPyはATLAS対応のNumPyよりも80%も高速に実行できます。ここを参照してください:http ://software.intel.com/en-us/articles/numpy-scipy-with-mkl/

ちなみに、MKL関連の質問への迅速な回答を得るには、Intel MKLフォーラムに参加してください:http ://software.intel.com/en-us/forums/intel-math-kernel-library/

于 2012-08-03T00:48:11.823 に答える
0

また、デスクトップIntel Corei3第4世代2.3GHz、4GBRAMでmklを使用してnumpyを使用しました。2つの4096x4096行列の内積をテストしました。私はそれらをpython3.564ビット(日付までmklサポートなし)、mklなしのpython 2.7 64ビット、およびmklありのpython 2.7 64ビットのanacondaディストリビューションでテストしましたが、結果はほぼ同じでした。これらはすべて、これを計算するのに約73秒(+-0.5秒)かかりました(整数データ型の場合)。float64データ型の場合はすべて260ミリ秒(+-5ミリ秒)かかり、複雑なデータ型の場合は約1秒(+- 100ミリ秒)それらすべてで秒。

また、複雑な行列の乗算でも、numpyドットが最適であることがわかりました。彼らはすでにガウスの改善を実装しています。

私はblas、pythonのblas、pythonのeinsumを使用してcythonをテストしましたが、dotが最適です。

行列fassterを乗算する必要があります

于 2015-12-05T04:55:24.417 に答える