A Language for Nested Data Parallel Design-space Exploration on GPUs
Loading...
Other Version
External File or Record
Can’t use the file because of accessibility barriers? Contact us
Date
Journal Title
Journal ISSN
Volume Title
Publisher
Permanent Link
Abstract
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 kernel performance. To that end Obsidian includes guaranteed elimination of intermediate arrays and predictable space/time costs, while also providing array functions that are polymorphic across different levels of the GPUs' hierarchical structure, providing a limited form of nested data parallelism. We walk through case-studies that demonstrate how to use Obsidian for rapid design exploration or auto-tuning, resulting in better performance than hand-tuned kernels in an existing GPU language.
Series and Number:
Indiana University Computer Science Technical Reports; TR712
EducationalLevel:
Is Based On:
Target Name:
Teaches:
Table of Contents
Description
Keywords
Citation
Journal
DOI
Rights
This work is protected by copyright unless stated otherwise.