HPX V0.9.7: Release Notes

We are proud to announce the sixth formal release of HPX (V0.9.7). We have had roughly 1000 commits since the last release and we have closed over 180 tickets (bugs, feature requests, etc.). This is the largest amount of closed tickets for any HPX release to date. Please report any issues you encounter through our issue tracker.

What’s New?

With the changes below, HPX is leading the charge of a whole new era of computation.  By intrinsically breaking down and synchronizing the work to be done, HPX insures that application developers will no longer have to fret about where a segment of code executes.  HPX allows coders to focus their time and energy to understanding the data dependencies of their algorithms and thereby the core obstacles to an efficient code.  Here are some of the advantages of using HPX:

  • HPX exposes an API equivalent to the facilities as standardized by C++11/14 extended to distributed computing. Everything programmers know about primitives in the standard C++ library is still valid in the context of HPX.
  • There is no need for the programmer to worry about lower level parallelization paradigms like threads or message passing; no need to understand pthreads, MPI, OpenMP, or Windows threads, etc.
  • There is no need to think about different types of parallelism such as tasks, pipelines, or fork-join, task or data parallelism.
  • The same source of your program compiles and runs on Linux, BlueGene/Q, MacOS, Windows, and Android.
  • The same code runs on shared memory multi-core systems and supercomputers, on handheld devices and Intel Xeon Phi ® accelerators, or a heterogeneous mix of those.

In this release we have made several significant changes:

  • Ported HPX to BlueGene/Q
  • Improved HPX support for Intel Xeon Phi ® accelerators
  • Reimplemented hpx::bind, hpx::tuple, and hpx::function for better performance and better compliance with the C++11 Standard. Added hpx::mem_fn.
  • Reworked hpx::when_all and hpx::when_any for better C++ compliance.. Added hpx::when_any_swapped.
  • Added hpx::copy as a precursor for a migrate functionality
  • Added hpx::get_ptr allowing to directly access the memory underlying a given component
  • Added the hpx::lcos::broadcast, hpx::lcos::reduce, and hpx::lcos::fold collective operations
  • Added hpx::get_locality_name allowing to retrieve the name of any of the localities for the application.
  • Added support for more flexible thread affinity control from the HPX command line, such as new modes for –hpx:bind (balanced, scattered, compact), improved default settings when running multiple localities on the same node.
  • Added experimental executors for simpler thread pooling and scheduling. This API may change in the future as it will stay aligned with the ongoing C++ standardization efforts.
  • Massively improved the performance of the HPX serialization code. Added partial support for zero copy serialization of array and bitwise-copyable types.
  • General performance improvements of the code related to threads and futures.

Where to download

File MD5 Hash
zip (5.0M) 24c4a7188a5b158585b44ec4be4a08a1
gz (3.5M) 85f56bfa49d42746856bd656d0b8f651
bz2 (2.8M) 1218e188c31d581776a1d0d7998ad3a0
7z (2.4M) e9c42148c46d97e88855628b6eaf793a

If you would like to access the code, please clone the git repository here: http://github.com/STEllAR-GROUP/hpx. Please refer to the file README.rst in the root directory inside the downloaded archives or to the documentation for more information about how to get started.

Bug reports via email (hpx-users@cct.lsu.edu) are welcome.