Static Interpretation of Higher-order Modules in Futhark: Functional GPU Programming in the Large

Research output: Contribution to journal/Conference contribution in journal/Contribution to newspaperJournal articleResearchpeer-review


  • Martin Elsman, University of Copenhagen
  • ,
  • Troels Henriksen, University of Copenhagen
  • ,
  • Danil Annenkov
  • Cosmin E. Oancea, University of Copenhagen

We present a higher-order module system for the purely functional data-parallel array language Futhark. The module language has the property that it is completely eliminated at compile time, yet it serves as a powerful tool for organizing libraries and complete programs. The presentation includes a static and a dynamic semantics for the language in terms of, respectively, a static type system and a provably terminating elaboration of terms into terms of an underlying target language. The development is formalised in Coq using a novel encoding of semantic objects based on products, sets, and finite maps. The module language features a unified treatment of module type abstraction and core language polymorphism and is rich enough for expressing practical forms of module composition.

Original languageEnglish
Article number97
JournalProceedings of the ACM on Programming Languages
Number of pages30
Publication statusPublished - 1 Jul 2018
Externally publishedYes

    Research areas

  • parallel programming, module systems, Coq, TYPED LAMBDA-CALCULUS, NORMALIZATION, compilers, modules, GPGPU, functional languages

See relations at Aarhus University Citationformats

ID: 140896584