私は「デュアルブート」Ubuntu 11.04、Ubuntu 12.04、およびWindows XP SP3をすべて最新のものにアップデートしました。 PCは、私はnumpyのは、最新の利用可能MKL、ICC、のifortで構築する必要があり、むしろ古いインテルのCeleron DのCPUの(ソースからコンパイルATLAS)ATLASを使ってコンパイルなぜインテルのMKL NumpyはATLASビルドより遅くビルドされているのですか?
は、Ubuntuの11.04で私が持っている2ギガバイトのRAMを搭載した3.06GHz numpyのUbuntuの12.04で
ですWindowsのXPでは
私はここに
詳細(クリストフゴールケによって親切に提供するPythonパッケージから)MKLでnumpyのを持っている: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は何らかの理由で最良の結果を得ています。
問題が何であるか知っている人はいますか?
行列を乗算する必要が
はおそらくMKLの最近のバージョンは、最新のインテルのCPUに最適化されています。 – DaveP
はい、おそらくあります。私はIntelのnumpyページの指示に従ったので、Ubuntu MKLのバージョンが遅いことを知っています。代わりに、少なくとも1つのCPUでそれを調整してください。しかし、システム全体を複雑にする代わりに、私はUbuntu 12.04のnumpyバージョンでATLASと一緒に行くつもりです。 – theta