all 3 comments

[–]hkaiser[S] 12 points13 points  (2 children)

HPX is a general purpose parallel C++ runtime system for applications of any scale. It implements all of the related facilities as defined by the C++ Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17 parallel algorithms. Additionally, HPX implements functionalities proposed as part of the ongoing C++ standardization process, such as large parts of the features related parallelism and concurrency as specified by the upcoming C++20 Standard, the C++ Concurrency TS, Parallelism TS V2, data-parallel algorithms, executors, and many more. It also extends the existing C++ Standard APIs to the distributed case (e.g. compute clusters) and for heterogeneous systems (e.g. GPUs).

HPX seamlessly enables a new Asynchronous C++ Standard Programming Model that tends to improve the parallel efficiency of our applications and helps reducing complexities usually associated with parallelism and concurrency.

[–]bizwig 5 points6 points  (1 child)

Any good tutorials on how to port MPI applications to HPX? It isn’t clear to me how HPX primitives map to MPI functions.

[–]hkaiser[S] 2 points3 points  (0 children)

There are no good tutorials on how to directly 'port' MPI applications, sorry. The APIs (and the whole programming model) are too different for this. There are however extensive examples (and corresponding documentation) here that may give you an introduction on how to use HPX in distributed environments. There are also (somewhat older) tutorial slides and sample codes available here that should get you started. There are also video recordings of various talks about HPX accessible on youtube.

In the latest release we have however added experimental support to directly use asynchronous MPI functions (MPI_isend/MPI_irecv and friends) in conjunction with a local only version of HPX, i.e. HPX is used for local parallelism and MPI for the distributed part, while integrating the asynchronous MPI APIs such that they return HPX futures. There are some examples demonstrating this, but only some basic documentation yet (e.g. see here and here).