[Numpy-discussion] Accelerate or OpenBLAS for numpy / scipy wheels?

Sturla Molden sturla.molden at gmail.com
Fri Jul 1 19:55:24 EDT 2016

Ralf Gommers <ralf.gommers at gmail.com> wrote:

> Thanks Sturla, interesting details as always. You didn't state your
> preference by the way, do you have one?

I use Accelerate because it is the easier for me to use when building
SciPy. But that is from a developer's perspective.

As you know, Accelerate breaks a common (ab)use of multiprocessing on POSIX
systems. While the bug is strictly speaking in multiprocessing (but
partially fixed in Python 3.4 and later), it is still a nasty surprise to
many users. E.g. a call to np.dot never returns, and there is no error
message indicating why. That speaks against using it in the wheels.

Accelerate, like MKL and FFTW, has nifty FFTs. If we start to use MKL and
Accelerate for numpy.fft (which I sometimes have fantacies about), that
would shift the balance the other way, in favour of Accelerate.

Speed wise Accelerate wins for things like dot product of two vectors or
multiplication of a vector and a matrix. For general matrix multiplication
the performance is about the same, except when matrices are very small and
Accelerate can benefit from the tiny GCD overhead. But then the Python
overhead probably dominates, so they are going to be about equal anyway. 

I am going to vote ± 0. I am really not sure which will be the better for
the binary wheels. They seem about equal to me right now. There are pros
and cons with either.


More information about the NumPy-Discussion mailing list