<div dir="ltr">Hopefully I submitted this bug report correctly. If not, here is a direct report.<div><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Jeff Breidenbach</b> <span dir="ltr"><<a href="mailto:jeff@jab.org" target="_blank">jeff@jab.org</a>></span><br>Date: Wed, Feb 25, 2015 at 11:52 AM<br>Subject: numpy should use OpenBLAS, making it up to 150x faster<br>To: Debian Bug Tracking System <<a href="mailto:submit@bugs.debian.org" target="_blank">submit@bugs.debian.org</a>><br><br><br><div dir="ltr">Package: python-numpy<br>Version: 1:1.8.2-2<br><br>(This problem report was written by Yaroslav Bulatov. I've confirmed it on Debian <div>sid chroot. My computer gave a 30X improvement.)<div><div><div><br>Default numpy install uses inferior BLAS, and is very slow. Matrix multiplication benchmark below gets me 1.26 G items/second with default install on my Xeon 6-core 3.2 Ghz. When I install OpenBLAS, it goes up 186 G items/second. That's 150x improvement in speed which should be the default for numpy.<br><br>benchmark<br>----<br>import time<br>import numpy as np<br>import numpy.random as random<br><br>size = 512<br>iters = 500<br>a = random.rand(size, size).astype(np.float32)<br>b = random.rand(size, size).astype(np.float32)<br>start_time = time.time()<br>for i in range(iters):<br> np.dot(a, b)<br><br>end_time = time.time()<br># size**3 multiplies, (size - 1) * size ** 2 adds<br>num_ops = size ** 3 + (size - 1) * size ** 2<br>print "Did %d multiplications of %d x %d matrices in %.1f seconds" % (iters, size, size, end_time - start_time)<br>print "%.4f G items/sec" % (num_ops * float(iters) / (end_time - start_time) / 10 ** 9)<br><br><br>fixing it with openblas:<br>-----<br>$ sudo apt-get install libopenblas-dev virtualenv python-dev<br>$ mkdir ~/tmp<br>$ cd ~/tmp<br>$ virtualenv env<br>$ source env/bin/activate<br>$ pip install numpy<br>$ which python<br>~/tmp/env/bin/python<br>$ python ...</div></div></div></div></div>
</div><br></div></div>