[Numpy-discussion] Moving away from using accelerate framework on mac os x ?

Dag Sverre Seljebotn d.s.seljebotn at astro.uio.no
Sat Aug 4 08:31:40 EDT 2012

On 08/04/2012 01:14 PM, Aron Ahmadia wrote:
> Hi David,
> Apple's response here is somewhat confusing, but I will add that on the
> supercomputing side of things we rarely fork, as this is not
> well-supported from the vendors or the hardware (it's hard enough to
> performantly spawn 500,000 processes statically, doing this dynamically
> becomes even more challenging).  This sounds like an issue in Python
> multiprocessing itself, as I guess many other Apple libraries will fail
> or crash with the fork-no-exec model.

OpenMP is pretty widespread in supercomputing, and so is OpenMP + 
multiple threads using LAPACK at the same time. This does NOT sound like 
any issue with multiprocessing to me.


> My suggestion would be that numpy continue to integrate with Accelerate
> but prefer a macports or brew supplied blas, if available.  This should
> probably also be filed as a wont-fix bug on the tracker so anybody who
> hits the same problem knows that it's on the system side and not us.
> A
> On Sat, Aug 4, 2012 at 2:04 PM, David Cournapeau <cournape at gmail.com
> <mailto:cournape at gmail.com>> wrote:
>     Hi,
>     During last PyCon, Olivier Grisel (from scikits-learn fame) and myself
>     looked into a nasty bug on mac os x: https://gist.github.com/2027412.
>     The short story is that I believe this means numpy cannot be used with
>     multiprocessing if linked against accelerate framework, and as such we
>     should think about giving up on accelerate, and use e.g. ATLAS on mac
>     for our official binaries.
>     Long story: we recently received a answer where the engineers mention
>     that using blas on each 'side' of a fork is not supported. The meat of
>     the email is attached below
>     thoughts ?
>     David
>     ---------- Forwarded message ----------
>     From:  <devbugs at apple.com <mailto:devbugs at apple.com>>
>     Date: 2012/8/2
>     Subject: Bug ID 11036478: Segfault when calling dgemm with Accelerate
>     / GCD after in a forked process
>     To: olivier.grisel at gmail.com <mailto:olivier.grisel at gmail.com>
>     Hi Olivier,
>     Thank you for contacting us regarding Bug ID# 11036478.
>     Thank you for filing this bug report.
>     This usage of fork() is not supported on our platform.
>     For API outside of POSIX, including GCD and technologies like
>     Accelerate, we do not support usage on both sides of a fork(). For
>     this reason among others, use of fork() without exec is discouraged in
>     general in processes that use layers above POSIX.
>     We recommend that you either restrict usage of blas to the parent or
>     the child process but not both, or that you switch to using GCD or
>     pthreads rather than forking to create parallelism.
>     _______________________________________________
>     NumPy-Discussion mailing list
>     NumPy-Discussion at scipy.org <mailto:NumPy-Discussion at scipy.org>
>     http://mail.scipy.org/mailman/listinfo/numpy-discussion
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion

More information about the NumPy-Discussion mailing list