Hostname: page-component-77c78cf97d-4gwwn Total loading time: 0 Render date: 2026-04-24T02:54:38.642Z Has data issue: false hasContentIssue false

A language for hierarchical data parallel design-space exploration on GPUs

Published online by Cambridge University Press:  17 March 2016

BO JOEL SVENSSON
Affiliation:
Indiana University, School of Informatics and Computer Science, Bloomington, IN, USA (e-mails: bo.joel.svensson@gmail.com, rrnewton@indiana.edu)
RYAN R. NEWTON
Affiliation:
Indiana University, School of Informatics and Computer Science, Bloomington, IN, USA (e-mails: bo.joel.svensson@gmail.com, rrnewton@indiana.edu)
MARY SHEERAN
Affiliation:
Chalmers University of Technology, Department of Computer Science and Engineering, Gothenburg, Sweden (e-mail: ms@chalmers.se)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the 'Save PDF' action button.

Graphics Processing Units (GPUs) offer potential for very high performance; they are also rapidly evolving. Obsidian is an embedded language (in Haskell) for implementing high performance kernels to be run on GPUs. We would like to have our cake and eat it too; we want to raise the level of abstraction beyond CUDA code and still give the programmer control over the details relevant to kernel performance. To that end, Obsidian provides array representations that guarantee elimination of intermediate arrays while also using the type system to model the hierarchy of the GPU. Operations are compiled very differently depending on what level of the GPU they target, and as a result, the user is gently constrained to write code that matches the capabilities of the GPU. Thus, we implement not Nested Data Parallelism, but a more limited form that we call Hierarchical Data Parallelism. We walk through case-studies that demonstrate how to use Obsidian for rapid design exploration or auto-tuning, resulting in performance that compares well to the hand-tuned kernels used in Accelerate and NVIDIA Thrust.

Information

Type
Articles
Copyright
Copyright © Cambridge University Press 2016 
Submit a response

Discussions

No Discussions have been published for this article.