Achieving High Performance the Functional Way: Expressing High-Performance Optimizations as Rewrite Strategies.

Optimizing programs to run efficiently on modern parallel hardware is hard but crucial for many applications. The predominantly used imperative languages force the programmer to intertwine the code describing functionality and optimizations. This results in a portability nightmare that is particular...

Descripción completa

Detalles Bibliográficos
Publicado en:Communications of the ACM Vol. 66; no. 3; pp. 89 - 98
Autores principales: Hagedorn, Bastian, Lenfers, Johannes, Koehler, Thomas, Xueying Qin, Gorlatch, Sergei, Steuwer, Michel
Formato: Artículo
Publicado: Association for Computing Machinery Mar2023
Materias:
Acceso en línea:Ver este registro en EBSCOhost
fields @attributes:
  recordID: 1
pdfLink:
plink: https://search.ebscohost.com/login.aspx?direct=true&db=hlh&AN=162018630&site=ehost-live
header:
  @attributes:
    shortDbName: hlh
    uiTerm: 162018630
    longDbName: Humanities International Complete
    uiTag: AN
  controlInfo:
    bkinfo:
    jinfo:
      jid:
        00010782
        ACM
      jtl: Communications of the ACM
      issn: 00010782
      maglogo: N
    pubinfo:
      dt: Mar2023
      vid: 66
      iid: 3
      pid: 68
      pub: Association for Computing Machinery
    artinfo:
      ui:
        162018630
        10.1145/3580371
      ppf: 89
      ppct: 9
      formats:
      tig:
        atl: Achieving High Performance the Functional Way: Expressing High-Performance Optimizations as Rewrite Strategies.
      aug:
        au:
          Hagedorn, Bastian
          Lenfers, Johannes
          Koehler, Thomas
          Xueying Qin
          Gorlatch, Sergei
          Steuwer, Michel
        affil:
          NVIDIA, Würselen, Germany
          University of Münster, Germany
          University of Glasgow, U.K.
          The University of Edinburgh, U.K.
      su:
        OPL (Computer program language)
        Programming languages
        Domain-specific programming languages
        Computer programming
        Electronic data processing
        Computer software development
      sug:
        subj:
          OPL (Computer program language)
          Programming languages
          Domain-specific programming languages
          Computer programming
          Electronic data processing
          Computer software development
      ab: Optimizing programs to run efficiently on modern parallel hardware is hard but crucial for many applications. The predominantly used imperative languages force the programmer to intertwine the code describing functionality and optimizations. This results in a portability nightmare that is particularly problematic given the accelerating trend toward specialized hardware devices to further increase efficiency. Many emerging domain-specific languages (DSLs) used in performance-demanding domains such as deep learning attempt to simplify or even fully automate the optimization process. Using a high-level--often functional--language, programmers focus on describing functionality in a declarative way. In some systems such as Halide or TVM, a separate schedule specifies how the program should be optimized. Unfortunately, these schedules are not written in well-defined programming languages. Instead, they are implemented as a set of ad hoc predefined APIs that the compiler writers have exposed. In this paper, we show how to employ functional programming techniques to solve this challenge with elegance. We present two functional languages that work together--each addressing a separate concern. RISE is a functional language for expressing computations using well-known data-parallel patterns. ELEVATE is a functional language for describing optimization strategies. A high-level RISE program is transformed into a low-level form using optimization strategies written in ELEVATE. From the rewritten low-level program, high-performance parallel code is automatically generated. In contrast to existing high-performance domain-specific systems with scheduling APIs, in our approach programmers are not restricted to a set of built-in operations and optimizations but freely define their own computational patterns in RISE and optimization strategies in ELEVATE in a composable and reusable way. We show how our holistic functional approach achieves competitive performance with the state-of-the-art imperative systems such as Halide and TVM.
      pubtype: Periodical
      doctype: Article
      src: R
    language: English
    refInfo:
    copyright:
      @attributes:
        flag: Y
      dt:
        @attributes:
          year: 2023
    holdings:
      @attributes:
        islocal: N