• DocumentCode
    1994956
  • Title

    GPU Programming in Rust: Implementing High-Level Abstractions in a Systems-Level Language

  • Author

    Holk, Eric ; Pathirage, Milinda ; Chauhan, Anamika ; Lumsdaine, A. ; Matsakis, Nicholas D.

  • Author_Institution
    Sch. of Inf. & Comput., Indiana Univ., Bloomington, IN, USA
  • fYear
    2013
  • fDate
    20-24 May 2013
  • Firstpage
    315
  • Lastpage
    324
  • Abstract
    Graphics processing units (GPUs) have the potential to greatly accelerate many applications, yet programming models remain too low level. Many language-based solutions to date have addressed this problem by creating embedded domain-specific languages that compile to CUDA or OpenCL. These targets are meant for human programmers and thus are less than ideal compilation targets. LLVM recently gained a compilation target for PTX, NVIDIA´s low-level virtual instruction set for GPUs. This lower-level representation is more expressive than CUDA and OpenCL, making it easier to support advanced language features such as abstract data types or even certain closures. We demonstrate the effectiveness of this approach by extending the Rust programming language with support for GPU kernels. At the most basic level, our extensions provide functionality that is similar to that of CUDA. However, our approach seamlessly integrates with many of Rust´s features, making it easy to build a library of ergonomic abstractions for data parallel computing. This approach provides the expressiveness of a high level GPU language like Copperhead or Accelerate, yet also provides the programmer the power needed to create new abstractions when those we have provided are insufficient.
  • Keywords
    embedded systems; graphics processing units; instruction sets; parallel architectures; parallel processing; CUDA; GPU programming; NVIDIA; OpenCL; data parallel computing; embedded domain specific languages; ergonomic abstractions; graphics processing units; high level abstractions; rust programming language; systems level language; virtual instruction set; Generators; Graphics processing units; Instruction sets; Kernel; Libraries; Programming; GPUs; Harlan; LLVM; Mozilla Rust; PTX;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Parallel and Distributed Processing Symposium Workshops & PhD Forum (IPDPSW), 2013 IEEE 27th International
  • Conference_Location
    Cambridge, MA
  • Print_ISBN
    978-0-7695-4979-8
  • Type

    conf

  • DOI
    10.1109/IPDPSW.2013.173
  • Filename
    6650903