HPX
lastmod 2018-08-17created 2016-01-272 edits
HPX is a general purpose C++ runtime system for parallel and distributed applications of any scale. Even if that's quite a mouthful, we mean every word of it!
The goal of HPX is to create a high quality, freely available, open source implementation of the ParalleX model for conventional systems, such as classic Linux based Beowulf clusters or multi-socket highly parallel SMP nodes. At the same time, we want to have a very modular and well designed runtime system architecture which would allow us to port our implementation onto new computer system architectures. We want to use real world applications to drive the development of the runtime system, coining out required functionalities and converging onto a stable API which will provide a smooth migration path for developers. The API exposed by HPX is modelled after the interfaces defined by the C++11/14 ISO standard and adheres to the programming guidelines used by the Boost collection of C++ libraries. We aim improve the scalability of today's applications and to expose new levels of parallelism which are necessary to take advantage of the exascale systems of the future.
Threads is SLOW
He explains that "Threads is SLOW", citing the 4 Hosemen of the Book of Revelation. He explains that the problems are resource consumption from contention between threads, latency, overhead from context switching, and waiting on shared resources.
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.
Developer
Hartmut Kaiser
A boost library developer. At the Meeting C++ 2014 seminar, he gave a talk titled "(Plain) threads are the GOTO of today's computing". In 1968, Edsger Dijkstra published a paper arguing that the GOTO statement should be considered harmful; citing this almost from the start, he explained that threads are the same. Mentioning Concurrency and Parallel, he explains that we should no longer think in terms of Concurrency.
See also
Favorite site
- HPX web site
- Github: HPX project site
- Meeting C++ 2014: Plain threads are the GOTO of todays computing