<div dir="ltr"><div><div><div><div><div><div>Debian Sid, 64-bit.  I was trying to fix the problem of np.dot running very slow.<br><br></div>I
 ended up uninstalling numpy, installing libatlas3-base through apt-get 
and re-installing numpy.  The performance of dot is greatly improved!  
But I can't tell from any other method whether numpy is set up 
correctly.  Consider comparing the faster one to another in a virtual 
env that is still slow:<br><br><span style="font-family:monospace,monospace">###<br></span></div><span style="font-family:monospace,monospace">fast one <br>###<br><br>In [1]: import time, numpy<br><br>In [2]: n=1000<br><br>In [3]: A = numpy.random.rand(n,n)<br><br>In [4]: B = numpy.random.rand(n,n)<br><br>In [5]: then = time.time(); C=numpy.dot(A,B); print time.time()-then<br>0.306427001953<br><br>In [6]: numpy.show_config()<br>blas_info:<br>    libraries = ['blas']<br>    library_dirs = ['/usr/lib']<br>    language = f77<br>lapack_info:<br>    libraries = ['lapack']<br>    library_dirs = ['/usr/lib']<br>    language = f77<br>atlas_threads_info:<br>  NOT AVAILABLE<br>blas_opt_info:<br>    libraries = ['blas']<br>    library_dirs = ['/usr/lib']<br>    language = f77<br>    define_macros = [('NO_ATLAS_INFO', 1)]<br>atlas_blas_threads_info:<br>  NOT AVAILABLE<br>openblas_info:<br>  NOT AVAILABLE<br>lapack_opt_info:<br>    libraries = ['lapack', 'blas']<br>    library_dirs = ['/usr/lib']<br>    language = f77<br>    define_macros = [('NO_ATLAS_INFO', 1)]<br>atlas_info:<br>  NOT AVAILABLE<br>lapack_mkl_info:<br>  NOT AVAILABLE<br>blas_mkl_info:<br>  NOT AVAILABLE<br>atlas_blas_info:<br>  NOT AVAILABLE<br>mkl_info:<br>  NOT AVAILABLE<br><br>###<br></span></div><span style="font-family:monospace,monospace">slow one<br>###<br><br>In [1]: import time, numpy<br><br>In [2]: n=1000<br><br>In [3]: A = numpy.random.rand(n,n)<br><br>In [4]: B = numpy.random.rand(n,n)<br><br>In [5]: then = time.time(); C=numpy.dot(A,B); print time.time()-then<br>7.88430500031<br><br>In [6]: numpy.show_config()<br>blas_info:<br>    libraries = ['blas']<br>    library_dirs = ['/usr/lib']<br>    language = f77<br>lapack_info:<br>    libraries = ['lapack']<br>    library_dirs = ['/usr/lib']<br>    language = f77<br>atlas_threads_info:<br>  NOT AVAILABLE<br>blas_opt_info:<br>    libraries = ['blas']<br>    library_dirs = ['/usr/lib']<br>    language = f77<br>    define_macros = [('NO_ATLAS_INFO', 1)]<br>atlas_blas_threads_info:<br>  NOT AVAILABLE<br>openblas_info:<br>  NOT AVAILABLE<br>lapack_opt_info:<br>    libraries = ['lapack', 'blas']<br>    library_dirs = ['/usr/lib']<br>    language = f77<br>    define_macros = [('NO_ATLAS_INFO', 1)]<br>atlas_info:<br>  NOT AVAILABLE<br>lapack_mkl_info:<br>  NOT AVAILABLE<br>blas_mkl_info:<br>  NOT AVAILABLE<br>atlas_blas_info:<br>  NOT AVAILABLE<br>mkl_info:<br>  NOT AVAILABLE<br><br>#####<br></span><br></div>Further,
 in the following comparison between Cpython and converting to numpy 
array for one operation, I get Cpython being faster by the same amount 
in both environments.  But another user got numpy being faster.<br><br><pre><code>In [1]: import numpy as np

In [2]: pts = range(100,1000)

In [3]: pts[100] = 0

In [4]: %timeit pts_arr = np.array(pts); mini = np.argmin(pts_arr)
10000 loops, best of 3: 129 µs per loop

In [5]: %timeit mini = sorted(enumerate(pts))[0][1]
10000 loops, best of 3: 89.2 µs per loop<br><br></code></pre><pre><code><font face="arial,helvetica,sans-serif">The other user got <br><br></font></code><code>In [29]: %timeit pts_arr = np.array(pts); mini = np.argmin(pts_arr)
10000 loops, best of 3: 37.7 µs per loop

In [30]: %timeit mini = sorted(enumerate(pts))[0][1]
10000 loops, best of 3: 69.2 µs per loop
<br><br></code></pre><pre><code><font face="arial,helvetica,sans-serif">And I can't help but wonder if there is further configuration I need to make numpy faster, or if this is just a difference between out machines</font><br></code></pre>In the future, should I ignore show_config() and just do this dot product test?<br></div><div><br>Any guidance would be appreciated.<br><br></div>Thanks,<br></div>  Elliot</div>