HPX
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
"Threads is SLOW이다" 라고 설명하면서 요한계시록의 4 Hosemen을 인용하여 설명하고 있는데요. 쓰레드간의 경쟁으로 자원 소모, 레이턴시, context switching으로 인한 오버헤드와 공유자원에 의한 기다림이 문제라고 설명하고 있습니다.
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
boost library 개발자 입니다. 이번 Meeting C++ 2014 세미나에서 오늘날 컴퓨팅에서 (순수)쓰레드는 GOTO와 같다. 라는 제목으로 강연하였습니다. 1968년 Edsger Dijkstra는 GOTO문이 유해하다는 것을 고려 해야 한다는 논문을 발표 했는데, 거의 시작부터 이를 인용하며 threads도 이와 같다고 설명하였습니다. 그는 Concurrency와 Parallel을 언급하면서 이제는 Concurrency를 생각하면 안된다고 설명하고 있습니다.