[Numpy-discussion] OS X wheels: speed versus multiprocessing

Nathaniel Smith njs at pobox.com
Mon Apr 6 19:49:52 EDT 2015

Hi all,

Starting with 1.9.1, the official numpy OS X wheels (the ones you get by
doing "pip install numpy") have been built to use Apple's Accelerate
library for linear algebra. This is fast, but it breaks multiprocessing in
obscure ways (e.g. see this user report:

Unfortunately, there is no obvious best solution to what linear algebra
package to use, so we have to make a decision as to which set of
compromises we prefer.


Accelerate: fast, but breaks multiprocessing as above.

OpenBLAS: fast, but Julian raised concerns about its trustworthiness last
year (
Possibly things have improved since then (I get the impression that they've
gotten some additional developer attention from the Julia community), but I
don't know.

Atlas: slower (faster than reference blas but definitely slower than fancy
options like the above), but solid.

My feeling is that for wheels in particular it's more important that
everything "just work" than that we get the absolute fastest speeds. And
this is especially true for the multiprocessing issue, given that it's a
widely used part of the stdlib, the failures are really obscure/confusing,
and there is no workaround for python 2 which is still where a majority of
our users still are. So I'd vote for using either atlas or OpenBLAS. (And
would defer to Julian and Matthew about which to choose between these.)

Any opinions, objections?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20150406/6cc2063c/attachment.html>

More information about the NumPy-Discussion mailing list