Affiliation:
1. University of Copenhagen, Denmark
Abstract
Futhark is a purely functional data-parallel array language that offers a machine-neutral programming model and an optimising compiler that generates OpenCL code for GPUs.
This paper presents the design and implementation of three key features of Futhark that seek a suitable middle ground with imperative approaches.
First, in order to express efficient code inside the parallel constructs, we introduce a simple type system for in-place updates that ensures referential transparency and supports equational reasoning.
Second, we furnish Futhark with parallel operators capable of expressing efficient strength-reduced code, along with their fusion rules.
Third, we present a flattening transformation aimed at enhancing the degree of parallelism that (i) builds on loop interchange and distribution but uses higher-order reasoning rather than array-dependence analysis, and (ii) still allows further locality-of-reference optimisations. Finally, an evaluation on 16 benchmarks demonstrates the impact of the language and compiler features and shows application-level performance competitive with hand-written GPU code.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
13 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. GPotion: An embedded DSL for GPU programming in Elixir;Proceedings of the XXVII Brazilian Symposium on Programming Languages;2023-09-25
2. Infix-Extensible Record Types for Tabular Data;Proceedings of the 8th ACM SIGPLAN International Workshop on Type-Driven Development;2023-08-30
3. (De/Re)-Compositions Expressed Systematically via MDH-Based Schedules;Proceedings of the 32nd ACM SIGPLAN International Conference on Compiler Construction;2023-02-17
4. PI-sqrt: novel parallel implementations of in-place sequence rotation on multicore systems;Cluster Computing;2022-04-18
5. A Comprehensive Exploration of Languages for Parallel Computing;ACM Computing Surveys;2022-01-18