Distributed Ranges: A Model for Distributed Data Structures, Algorithms, and Views

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Brock, Benjamin, Cohn, Robert, Bakshi, Suyash, Karna, Tuomas, Kim, Jeongnim, Nowak, Mateusz, Ślusarczyk, Łukasz, Stefanski, Kacper, Mattson, Timothy G.
Formato: Preprint
Publicado: 2024
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866910472378253312
author Brock, Benjamin
Cohn, Robert
Bakshi, Suyash
Karna, Tuomas
Kim, Jeongnim
Nowak, Mateusz
Ślusarczyk, Łukasz
Stefanski, Kacper
Mattson, Timothy G.
author_facet Brock, Benjamin
Cohn, Robert
Bakshi, Suyash
Karna, Tuomas
Kim, Jeongnim
Nowak, Mateusz
Ślusarczyk, Łukasz
Stefanski, Kacper
Mattson, Timothy G.
contents 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.
format Preprint
id arxiv_https___arxiv_org_abs_2406_00158
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Distributed Ranges: A Model for Distributed Data Structures, Algorithms, and Views
Brock, Benjamin
Cohn, Robert
Bakshi, Suyash
Karna, Tuomas
Kim, Jeongnim
Nowak, Mateusz
Ślusarczyk, Łukasz
Stefanski, Kacper
Mattson, Timothy G.
Distributed, Parallel, and Cluster Computing
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.
title Distributed Ranges: A Model for Distributed Data Structures, Algorithms, and Views
topic Distributed, Parallel, and Cluster Computing
url https://arxiv.org/abs/2406.00158