Chestnut: a GPU programming language for non-experts

  • Authors:
  • Andrew Stromme;Ryan Carlson;Tia Newhall

  • Affiliations:
  • Swarthmore College, Swarthmore, PA;Carnegie Mellon University, Pittsburgh PA;Swarthmore College, Swarthmore, PA

  • Venue:
  • Proceedings of the 2012 International Workshop on Programming Models and Applications for Multicores and Manycores
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Graphics processing units (GPUs) are powerful devices capable of rapid parallel computation. GPU programming, however, can be quite difficult, limiting its use to experienced programmers and keeping it out of reach of a large number of potential users. We present Chestnut, a domain-specific GPU parallel programming language for parallel multidimensional grid applications. Chestnut is designed to greatly simplify the process of programming on the GPU, making GPU computing accessible to computational scientists who have little or no parallel programming experience, as well as a useful and powerful language for more experienced programmers. In addition, Chestnut has an optional GUI programming interface that makes GPU computing accessible to even novice programmers. Chestnut is intuitive and easy to use, while still powerful in the types of parallelism it can express. The language provides a single simple parallel construct that allows a Chestnut programmer to "think sequentially" in expressing her Chestnut program; the programmer is freed from having to think about parallelization, data layout, GPU to CPU memory transfers, and synchronization. We demonstrate Chestnut's programmability with example solutions to a variety of parallel applications. Performance results from our prototype implementation of Chestnut show that Chestnut applications perform almost as well as hand-written CUDA code for a set of several parallel applications. In addition, Chestnut code is much simpler and much smaller than handwritten CUDA code.