HPX (High Performance ParalleX) is a general purpose C++ runtime system for parallel and distributed applications of any scale. It strives to provide a unified programming model which transparently utilizes the available resources to achieve unprecedented levels of scalability. This library strictly adheres to the C++11 Standard and leverages the Boost C++ Libraries which makes HPX easy to use, highly optimized, and very portable. HPX is developed for conventional architectures including Linux-based systems, Windows, Mac, and the BlueGene/Q, as well as accelerators such as the Xeon Phi.
High Performance ParalleX is the first open-source implementation of the ParalleX execution model. This model focuses on overcoming the four main barriers to scalability:
- Starvation- insufficient concurrent work available to maintain high utilization of all resources.
- Latencies- the time-distance delay intrinsic to accessing remote resources and services.
- Overhead- the work required for the management of parallel actions and resources on the critical execution path which is not necessary in a sequential variant.
- Waiting for contention resolution- the delay due to the lack of availability of oversubscribed shared resources.
In order to overcome these challenges, HPX utilizes these governing principles: latency hiding vs latency avoidance, fine-grained parallelism vs heavyweight threads, constraint based synchronization vs global barriers, adaptive locality control vs static data distribution, work following data vs data following work, and message driven vs message passing. These principles are not in themselves new; however, the novel combination of all of these concepts is what makes HPX revolutionary. The proper integration of these concepts have enabled HPX to take advantage of new features such as the migration and a policy based data distribution which allows HPX to be truly runtime adaptive. We believe that by adhering to these guidelines, HPX will allow applications to efficiently utilize petascale machines and scale on future exascale architectures.
HPX offers a unique solution to your challenging scalability problems. So give HPX a whirl! You can download HPX directly from GitHub, or if you prefer you can download a release version of HPX here. If you are just getting started please checkout our HPX documentation which includes a getting started guide, complete with instructions for setup and a walk through of some simple examples. If you run into problems you can search our mailing list archives or contact us directly at firstname.lastname@example.org. In addition, we maintain a near constant presence on IRC in the #ste||ar chat room hosted on Freenode. Please feel free to share your thoughts, bugs, and ideas. We would love to hear from you!