On Jun 29, 2016 2:49 AM, "Andrew Jaffe" <a.h.ja...@gmail.com> wrote: > > On 28/06/2016 18:50, Ralf Gommers wrote: >> >> >> On Tue, Jun 28, 2016 at 5:50 PM, Chris Barker <chris.bar...@noaa.gov >> <mailto:chris.bar...@noaa.gov>> wrote: >> >> > This doesn't really matter too much imho, we have to support Accelerate >> > either way. >> >> do we? -- so if we go OpenBlas, and someone want to do a simple >> build from source, what happens? Do they get accelerate? >> >> Indeed, unless they go through the effort of downloading a separate BLAS >> and LAPACK, and figuring out how to make that visible to >> numpy.distutils. Very few users will do that. >> >> or would we ship OpenBlas source itself? >> >> Definitely don't want to do that. >> >> or would they need to install OpenBlas some other way? >> >> Yes, or MKL, or ATLAS, or BLIS. We have support for all these, and >> that's a good thing. Making a uniform choice for our official binaries >> on various OSes doesn't reduce the need or effort for supporting those >> other options. >> >> >> >> Faster to fix bugs with good support from main developer. No >> >> >> multiprocessing crashes for Python 2.7. >> >> this seems to be the compelling one. >> >> How does the performance compare? >> >> For most routines performance seems to be comparable, and both are much >> better than ATLAS. When there's a significant difference, I have the >> impression that OpenBLAS is more often the slower one (example: >> https://github.com/xianyi/OpenBLAS/issues/533). > > > In that case: > > -1 > > (but this seems so obvious that I'm probably missing the point of the +1s)
Speed is important, but it's far from the only consideration, especially since differences between the top tier libraries are usually rather small. (And note that even though that bug is still listed as open, it has a link to a commit that appears to have fixed it by implementing the missing kernels.) The advantage of openblas is that it's open source, fixable, and we already focus energy on supporting it for Linux (and probably windows too soon). Accelerate is closed, so when we hit bugs then there's often nothing we can do except file a bug with apple and hope that it gets fixed within a year or two. This isn't hypothetical -- we've hit cases where accelerate gave wrong answers. Numpy actually carries some scary code right now to work around one of these bugs by monkeypatching (!) accelerate using dynamic linker trickiness. And, of course, there's the thing where accelerate totally breaks multiprocessing. Apple has said that they don't consider this a bug. Which is probably not much comfort to the new users who are getting obscure hangs when they try to use Python's most obvious and commonly recommended concurrency library. If you sum across our user base, I'm 99% sure that this means accelerate is slower than openblas on net, because you need a *lot* of code to get 10% speedups before it cancels out one person spending 3 days trying to figure out why their code is silently hanging for no reason. This probably makes me sound more negative about accelerate then I actually am -- it does work well most of the time, and obviously lots of people are using it successfully with numpy. But for our official binaries, my vote is we should switch to openblas, because these binaries are likely to be used by non-experts who are likely to hit the multiprocessing issue, and because when we're already struggling to do sufficient QA on our releases then it makes sense to focus our efforts on a single blas library. -n
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion