Practical Distributed Programming in C++
The need for coupling high performance with productivity is steering the recent evolution of the C++ language where low-level aspects of parallel and distributed computing are now part of the standard or under discussion for inclusion. The Standard Template Library (STL) includes containers and algorithms as primary notions, coupled with execution policies that allow exploiting parallel platforms (e.g., multi-cores) on top of a well-defined operational semantics. However, as of today, there is no support for distributed-memory platforms. Namely, as opposed to the so-called parallel STL, there is no such thing as a “distributed STL”. In this lecture, I will discuss the first state-of-the-art effort towards a distributed STL, which I led as member of the HPC group at the Pacific Northwest National Laboratory (PNNL), in 2019. The effort yielded the design and implementation of a stack for STL-compliant programs (containers, iterators, algorithms, and execution policies) running on distributed-memory systems. The distributed STL is currently in the process of being proposed for C++ standardization.