News: 0001547382

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

Intel Adds OpenMP Multi-Threading To Its Speedy x86-simd-sort Library

([Intel] 116 Minutes Ago x86-simd-sort 7.0)


Intel's x86-simd-sort open-source project is a C++ template library for high performance sorting routines that [1]can leverage AVX2 and AVX-512 for crazy fast sorting . The x86-simd-sort code in turn is used by Numpy, [2]more recently adopted by PyTorch too , and has shown off [3]the great performance potential of AVX-512 for very fast sorting algorithms . Out today is x86-simd-sort 7.0 and it's even faster due to now supporting OpenMP parallelization.

With today's x86-simd-sort 7.0 release the OpenMP support for multi-threading isn't enabled by default but can be enabled for those wanting to use multiple CPU cores for faster sorting on top of the speedy Advanced Vector Extensions (AVX) implementations. The qsort, argsort, and keyvalue_qsort routines can all be multi-threaded with this optional OpenMP support. Sorting of medium to large arrays should be three to four times faster with this code path. This optional OpenMP support is also pulled already into Numpy when building it with OpenMP enabled.

The x86-simd-sort 7.0 release also ffixes a performance regression for 16-bit data types, improves the argsort performance, and other updates.

Downloads and more details on the x86-simd-sort 7.0 release via [4]GitHub .



[1] https://www.phoronix.com/news/Intel-AVX-512-Quicksort-Numpy

[2] https://www.phoronix.com/news/x86-simd-sort-6.0

[3] https://www.phoronix.com/news/x86-simd-sort-5.0

[4] https://github.com/intel/x86-simd-sort/releases/tag/v7.0



Jumbotron

... an anecdote from IBM's Yorktown Heights Research Center. When a
programmer used his new computer terminal, all was fine when he was sitting
down, but he couldn't log in to the system when he was standing up. That
behavior was 100 percent repeatable: he could always log in when sitting and
never when standing.

Most of us just sit back and marvel at such a story; how could that terminal
know whether the poor guy was sitting or standing? Good debuggers, though,
know that there has to be a reason. Electrical theories are the easiest to
hypothesize: was there a loose wire under the carpet, or problems with static
electricity? But electrical problems are rarely consistently reproducible.
An alert IBMer finally noticed that the problem was in the terminal's
keyboard: the tops of two keys were switched. When the programmer was seated
he was a touch typist and the problem went unnoticed, but when he stood he was
led astray by hunting and pecking.
-- "Programming Pearls" column, by Jon Bentley in CACM February 1985