The STE||AR Group is proud to announce the release of HPX v0.9.10! This is the 12th official release of HPX and it coincides with the 7th anniversary of the first commit to our source code repository. Since then, we have seen over 12,300 commits amounting to more than 220,000 lines of C++ code! We would like to thank our collaborators from all over the world for their efforts to make v0.9.10 efficient, stable, and reliable.
What’s New?
The major focus of this release was to improve the reliability of large scale runs. We believe this goal has been achieved as we now can reliably run HPX applications on up to ~24k cores. We have also shown that HPX can be used with success for symmetric runs (applications using both, host cores and Intel Xeon/Phi coprocessors). This is a huge step forward in terms of the usability of HPX. The main focus of this work involved isolating the causes of the segmentation faults at start up and shut down. Many of these issues were discovered to be the result of the suspension of threads which hold locks.
A very important improvement introduced with this release is the refactoring of the code representing our parcel-port implementation. Parcel- ports can now be implemented by 3rd parties as independent plugins which are dynamically loaded at runtime (static linking of parcel-ports is also supported). This refactoring also includes a massive improvement of the performance of our existing parcel-ports. We were able to significantly reduce the networking latencies and to improve the available networking bandwidth. Please note that in this release we disabled the ibverbs and ipc parcel ports as those have not been ported to the new plugin system yet (see #839).
Another cornerstone of this release is our work towards a complete implementation of N4354 (Working Draft, Technical Specification for C++ Extensions for Parallelism). This document defines a set of parallel algorithms to be added to the C++ standard library. We have now implemented about 75% of all specified parallel algorithms (see Parallel Algorithms for more details). We also implemented some extensions to N4354 allowing to invoke all of the algorithms asynchronously.
This release adds a first implementation of hpx::vector
which is a distributed data structure closely aligned to the functionality of std::vector
. The difference is that hpx::vector
stores the data in partitions where the partitions can be distributed over different localities. We started work on the ability to use the parallel algorithms with hpx::vector
. At this point we have implemented only a few of the parallel algorithms to support distributed data structures (like hpx::vector
) for testing purposes (see #1338 for a documentation of our progress)
Breaking Changes:
With this release we put a lot of effort into changing the code base to be more compatible to C++11. These changes have caused the following issues for backward compatibility:
- Move to Variadics- All of the API now uses variadic templates. However, this change required modification of the argument sequence for some of the exiting API functions (
hpx::async_continue
,hpx::apply_continue
,hpx::when_each
,hpx::wait_each
, synchronous invocation of actions). - Changes to Macros- We also removed the macros
HPX_STD_FUNCTION
andHPX_STD_TUPLE
. This shouldn’t affect any user code as we replacedHPX_STD_FUNCTION
withhpx::util::function_nonser
which was the default expansion used for this macro. All HPX API functions which expect ahpx::util::function_nonser
(or ahpx::util::unique_function_nonser
) can now be transparently called with a compatiblestd::function
instead. Similarly,HPX_STD_TUPLE
was replaced by its default expansion as well:hpx::util::tuple
. - Changes to
hpx::unique_future
–hpx::unique_future
, which was deprecated in the previous release forhpx::future
is now completely removed from HPX. This completes the transition to a completely standards conforming implementation ofhpx::future
. - Changes to Supported Compilers- Finally, in order to utilize more C++11 semantics, we have officially dropped support for GCC 4.4 and MSVC 2012. Please see our Build Prerequisites page for more details
How to Download:
HPX V0.9.10:
File | MD5 Hash |
---|---|
zip (4.3M) | 1a4693777f533325f4d7fdd941f06186 |
gz (2.9M) | c9a5ea06656e14e0e22e3290fa7f507c |
bz2 (2.5M) | 28f29a504cd3027bc6f87abeaef2cacd |
7z (2.1M) | 45590c15a8cad1bd0b8730c881a79d01 |
If you would like to access the code directly, please clone the git repository here. 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), our ticket submission system, or directly through our IRC channel (#ste||ar at Freenode) are welcome.
The development of HPX is supported by U.S. National Science Foundation through awards 1117470 (APX), 1240655 (STAR), 1447831 (PXFS), and 1339782 (STORM), the U.S. Department of Energy (DoE) through the award DE-SC0008714 (XPRESS), and the Bavarian Research Foundation (Bayerische Forschungsstiftung, Germany) through the grant AZ-987-11. In addition we utilize computer resources through allocations from LSU HPC, XSEDE, and the Gauss Center for Supercomputing.