This page provides a high-level introduction to HPX (High Performance ParalleX), an open-source C++ runtime system for parallel and distributed applications. It covers what HPX is, its core architecture pillars, key design principles, and how the major subsystems relate. Technical details and usage instructions are delegated to child pages for focused exploration.
What is HPX?
HPX is a standards-compliant C++ runtime system designed to enable highly scalable parallelism and concurrency on modern hardware architectures, from single nodes to distributed clusters. It follows a task-based parallel programming model centered on lightweight user-level threads, asynchronous programming constructs, and a global Active Global Address Space (AGAS).
The system provides:
A distributed runtime enabling applications to transparently scale out across multiple machines.
A local runtime managing lightweight user-level threads (tasks) efficiently on a single node.
A rich set of parallel algorithms and concurrency primitives aligned with C++ standard interfaces.
Modern asynchronous execution abstractions inspired by the ongoing C++ sender/receiver (P2300) standard proposal.
HPX aims to empower developers to write composable, fine-grained parallel code that can automatically scale from multicore shared memory systems up to large distributed systems without changing the programming model.
For detailed getting started instructions, visit the child page Getting Started.
Standard C++ Compliance: HPX builds on modern C++ standards. The minimum version is C++17, with extensive support for C++20, C++23, and upcoming C++26 features like contracts CMakeLists.txt104
Asynchronous, Task-Based Execution: Fine-grained parallelism is achieved via lightweight tasks coordinated through futures and continuations.
Unified Local and Distributed Model: The runtime abstracts away locality distinctions using AGAS and Parcelports.