[Numpy-discussion] distributing wheels & SSE/superpack options

Julian Taylor jtaylor.debian at googlemail.com
Fri Dec 6 13:58:59 EST 2013

On 06.12.2013 19:06, Ralf Gommers wrote:
> Hi all,
> There are a few discussions on packaging for the scientific Python stack
> ongoing, on the NumFOCUS and distutils lists:
> https://groups.google.com/forum/#!topic/numfocus/mVNakFqfpZg
> https://groups.google.com/forum/#!topic/numfocus/HUcwXTM_jNY
> http://thread.gmane.org/gmane.comp.python.distutils.devel/20202
> http://thread.gmane.org/gmane.comp.python.distutils.devel/20296
> One of the things that we should start doing for numpy is distribute
> releases as wheels. On OS X at least this is quite simple, so I propose
> to just experiment with it. I can create some to try out and put them on
> a separate folder on SourceForge. If that works they can be put on PyPi.
> For Windows things are less simple, because the wheel format doesn't
> handle the multiple builds (no SSE, SSE2, SSE3) that are in the
> superpack installers. A problem is that we don't really know how many
> users still have old CPUs that don't support SSE3. The impact for those
> users is high, numpy will install but crash (see
> https://github.com/scipy/scipy/issues/1697). Questions:
> 1. does anyone have a good idea to obtain statistics?
> 2. in the absence of statistics, can we do an experiment by putting one
> wheel up on PyPi which contains SSE3 instructions, for python 3.3 I
> propose, and seeing for how many (if any) users this goes wrong?

why SSE3 and not SSE2?
SSE2 is a requirement of the amd64 ABI, so it is present in all 64 bit
x86 cpus, so a even majority of windows machines running 32 bit will
have it.
SSE3 is not mandated by any ABI so it should more likely to find
machines without it.

to my knowledge SSE3 is not such big a difference to SSE2, only a little
better complex arithmetic and horizontal additions, I don't think its
worth it.
Are there performance comparisons for ATLAS with SSE2 and SSE3 available?

> P.S. related question: did anyone check whether the recently merged
> NPY_HAVE_SSE2_INTRINSIC puts SSE2 instructions into the no-SSE binary?

according to https://github.com/numpy/numpy/issues/3760 SSE2 should be
off in the binaries created with mingw.

but there was also https://github.com/numpy/numpy/issues/3680, but that
might have been built with the VSC compiler (I think by Christoph Gohlke)
Assuming linux objdump works correctly on windows .pyd files there are
indeed sse2 instructions in the win32 build created with VSC.

More information about the NumPy-Discussion mailing list