Data-parallel flattening by expansion

Martin Elsman, Troels Henriksen, Niels Gustav Westphal Serup

2 Citations (Scopus)

Abstract

We present a higher-order programmer-level technique for compiling particular kinds of irregular data-parallel problems to parallel hardware. The technique, which we have named “flattening-by-expansion” builds on a number of segmented data-parallel operations but is itself implemented as a higher-order generic function, which makes it useful for many irregular problems. Concretely, the implementation is given in Futhark and we demonstrate the usefulness of the functionality for a number of irregular problems and show that, in practice, the irregular problems are compiled to efficient parallel code that can be executed on GPUs. The technique is useful in any data-parallel language that provides a key set of primitives.

Original languageEnglish
Title of host publicationARRAY 2019 - Proceedings of the 6th ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming, co-located with PLDI 2019
EditorsJeremy Gibbons
Number of pages11
PublisherAssociation for Computing Machinery, Inc.
Publication date8 Jun 2019
Pages14-24
ISBN (Electronic)9781450367172
DOIs
Publication statusPublished - 8 Jun 2019
Event6th ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming, ARRAY 2019, co-located with PLDI 2019 - Phoenix, United States
Duration: 22 Jun 2019 → …

Conference

Conference6th ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming, ARRAY 2019, co-located with PLDI 2019
Country/TerritoryUnited States
CityPhoenix
Period22/06/2019 → …
SponsorACM SIGPLAN
SeriesProceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)

Keywords

  • Flattening
  • Functional programming
  • GPGPU programming
  • Irregular nested parallelism

Fingerprint

Dive into the research topics of 'Data-parallel flattening by expansion'. Together they form a unique fingerprint.

Cite this