Distributed Ranges: A Model for Distributed Data Structures, Algorithms, and Views
<|reference_start|>Distributed Ranges: A Model for Distributed Data Structures, Algorithms, and Views: Data structures and algorithms are essential building blocks for programs, and \emph{distributed data structures}, which automatically partition data across multiple memory locales, are essential to writing high-level parallel programs. While many projects have designed and implemented C++ distributed data structures and algorithms, there has not been widespread adoption of an interoperable model allowing algorithms and data structures from different libraries to work together. This paper introduces distributed ranges, which is a model for building generic data structures, views, and algorithms. A distributed range extends a C++ range, which is an iterable sequence of values, with a concept of segmentation, thus exposing how the distributed range is partitioned over multiple memory locales. Distributed data structures provide this distributed range interface, which allows them to be used with a collection of generic algorithms implemented using the distributed range interface. The modular nature of the model allows for the straightforward implementation of \textit{distributed views}, which are lightweight objects that provide a lazily evaluated view of another range. Views can be composed together recursively and combined with algorithms to implement computational kernels using efficient, flexible, and high-level standard C++ primitives. We evaluate the distributed ranges model by implementing a set of standard concepts and views as well as two execution runtimes, a multi-node, MPI-based runtime and a single-process, multi-GPU runtime. We demonstrate that high-level algorithms implemented using generic, high-level distributed ranges can achieve performance competitive with highly-tuned, expert-written code.<|reference_end|>
@article{brock2024distributed,
    title={Distributed Ranges: A Model for Distributed Data Structures, Algorithms,
  and Views},
    author={Benjamin Brock, Robert Cohn, Suyash Bakshi, Tuomas Karna, Jeongnim
  Kim, Mateusz Nowak, {L}ukasz 'Slusarczyk, Kacper Stefanski, Timothy G.
  Mattson},
    journal={In Proceedings of the 38th ACM International Conference on
  Supercomputing (ICS 2024) 236-246},
    year={2024},
    doi={10.1145/3650200.3656632},
    archivePrefix={arXiv},
    eprint={2406.00158},
    primaryClass={cs.DC}
}