[Numpy-discussion] [SciPy-Dev] NumPy 1.12.0 release

Neal Becker ndbecker2 at gmail.com
Wed Jan 18 07:00:18 EST 2017


Nathaniel Smith wrote:

> On Tue, Jan 17, 2017 at 3:47 PM, Neal Becker <ndbecker2 at gmail.com> wrote:
>> Matthew Brett wrote:
>>
>>> Hi,
>>>
>>> On Tue, Jan 17, 2017 at 5:56 AM, Neal Becker <ndbecker2 at gmail.com>
>>> wrote:
>>>> Charles R Harris wrote:
>>>>
>>>>> Hi All,
>>>>>
>>>>> I'm pleased to announce the NumPy 1.12.0 release. This release
>>>>> supports Python 2.7 and 3.4-3.6. Wheels for all supported Python
>>>>> versions may be downloaded from PiPY
>>>>> <https://pypi.python.org/pypi?%3Aaction=pkg_edit&name=numpy>, the
>>>>> tarball and zip files may be downloaded from Github
>>>>> <https://github.com/numpy/numpy/releases/tag/v1.12.0>. The release
>>>>> notes and files hashes may also be found at Github
>>>>> <https://github.com/numpy/numpy/releases/tag/v1.12.0> .
>>>>>
>>>>> NumPy 1.12.0rc 2 is the result of 418 pull requests submitted by 139
>>>>> contributors and comprises a large number of fixes and improvements.
>>>>> Among
>>>>> the many improvements it is difficult to  pick out just a few as
>>>>> standing above the others, but the following may be of particular
>>>>> interest or indicate areas likely to have future consequences.
>>>>>
>>>>> * Order of operations in ``np.einsum`` can now be optimized for large
>>>>> speed improvements.
>>>>> * New ``signature`` argument to ``np.vectorize`` for vectorizing with
>>>>> core dimensions.
>>>>> * The ``keepdims`` argument was added to many functions.
>>>>> * New context manager for testing warnings
>>>>> * Support for BLIS in numpy.distutils
>>>>> * Much improved support for PyPy (not yet finished)
>>>>>
>>>>> Enjoy,
>>>>>
>>>>> Chuck
>>>>
>>>> I've installed via pip3 on linux x86_64, which gives me a wheel.  My
>>>> question is, am I loosing significant performance choosing this
>>>> pre-built
>>>> binary vs. compiling myself?  For example, my processor might have some
>>>> more features than the base version used to build wheels.
>>>
>>> I guess you are thinking about using this built wheel on some other
>>> machine?   You'd have to be lucky for that to work; the wheel depends
>>> on the symbols it found at build time, which may not exist in the same
>>> places on your other machine.
>>>
>>> If it does work, the speed will primarily depend on your BLAS library.
>>>
>>> The pypi wheels should be pretty fast; they are built with OpenBLAS,
>>> which is at or near top of range for speed, across a range of
>>> platforms.
>>>
>>> Cheers,
>>>
>>> Matthew
>>
>> I installed using pip3 install, and it installed a wheel package.  I did
>> not
>> build it - aren't wheels already compiled packages?  So isn't it built
>> for the common denominator architecture, not necessarily as fast as one I
>> built
>> myself on my own machine?  My question is, on x86_64, is this potential
>> difference large enough to bother with not using precompiled wheel
>> packages?
> 
> Ultimately, it's going to depend on all sorts of things, including
> most importantly your actual code. Like most speed questions, the only
> real way to know is to try it and measure the difference.
> 
> The wheels do ship with a fast BLAS (OpenBLAS configured to
> automatically adapt to your CPU at runtime), so the performance will
> at least be reasonable. Possible improvements would include using a
> different and somehow better BLAS (MKL might be faster in some cases),
> tweaking your compiler options to take advantage of whatever SIMD ISAs
> your particular CPU supports (numpy's build system doesn't do this
> automatically but in principle you could do it by hand -- were you
> bothering before? does it even make a difference in practice? I
> dunno), and using a new compiler (the linux wheels use a somewhat
> ancient version of gcc for Reasons; newer compilers are better at
> optimizing -- how much does it matter? again I dunno).
> 
> Basically: if you want to experiment and report back then I think we'd
> all be interested to hear; OTOH if you aren't feeling particularly
> curious/ambitious then I wouldn't worry about it :-).
> 
> -n
> 

Yes, I always add -march=native, which should pickup whatever SIMD is 
available.  So my question was primarily if I should bother.  Thanks for the 
detailed answer.




More information about the NumPy-Discussion mailing list