Advanced

High-Level GPU Programming: Domain-Specific Optimization and Inference

Lejdfors, Calle LU (2008)
Abstract
When writing computer software one is often forced to balance the need for high run-time performance with high programmer productivity. By using a high-level language

it is often possible to cut development times, but this typically comes at the cost of reduced run-time performance. Using a lower-level language, programs can be made very efficient but at the cost of increased development time.



Real-time computer graphics is an area where there are very high demands on both performance and visual quality. Typically, large portions of such applications are written in lower-level languages and also rely on dedicated hardware, in the form of programmable graphics processing units (GPUs), for handling computationally... (More)
When writing computer software one is often forced to balance the need for high run-time performance with high programmer productivity. By using a high-level language

it is often possible to cut development times, but this typically comes at the cost of reduced run-time performance. Using a lower-level language, programs can be made very efficient but at the cost of increased development time.



Real-time computer graphics is an area where there are very high demands on both performance and visual quality. Typically, large portions of such applications are written in lower-level languages and also rely on dedicated hardware, in the form of programmable graphics processing units (GPUs), for handling computationally demanding rendering algorithms. These GPUs are parallel stream processors, specialized towards computer graphics, that have computational performance more than a magnitude higher than corresponding CPUs. This has revolutionized computer graphics and also led to GPUs being used to solve more general numerical problems, such as fluid and physics simulation, protein folding, image processing, and databases. Unfortunately, the highly specialized nature of GPUs has also made them difficult to program.



In this dissertation we show that GPUs can be programmed at a higher level, while maintaining performance, compared to current lower-level languages. By constructing a domain-specific language (DSL), which provides appropriate domain-specific abstractions and user-annotations, it is possible to write programs in a more abstract and modular manner. Using knowledge of the domain it is possible for the DSL compiler to generate very efficient code. We show that, by experiment, the performance of our DSLs is equal to that of GPU programs written by hand using current low-level languages. Also, control over the trade-offs between visual quality and performance is retained.



In the papers included in this dissertation, we present domain-specific languages targeted at numerical processing and computer graphics, respectively. These DSL have been implemented as embedded languages in Python, a dynamic programming language that provide a rich set of high-level features. In this dissertation we show how these features can be used to facilitate the construction of embedded languages. (Less)
Please use this url to cite or link to this publication:
author
supervisor
opponent
  • Professor Owens, John, University of California, USA
organization
publishing date
type
Thesis
publication status
published
subject
pages
120 pages
defense location
Room E:1406, E-building, Ole Römers väg 3, Lund university, Faculty of Engineering
defense date
2008-06-13 10:15
ISSN
1404-1219
ISBN
978-91-628-7511-4
language
English
LU publication?
yes
id
7b9117ee-6d42-4e49-a2dc-38a78b54a0bc (old id 1149712)
date added to LUP
2008-05-16 11:57:03
date last changed
2016-09-19 08:45:01
@misc{7b9117ee-6d42-4e49-a2dc-38a78b54a0bc,
  abstract     = {When writing computer software one is often forced to balance the need for high run-time performance with high programmer productivity. By using a high-level language<br/><br>
it is often possible to cut development times, but this typically comes at the cost of reduced run-time performance. Using a lower-level language, programs can be made very efficient but at the cost of increased development time.<br/><br>
<br/><br>
Real-time computer graphics is an area where there are very high demands on both performance and visual quality. Typically, large portions of such applications are written in lower-level languages and also rely on dedicated hardware, in the form of programmable graphics processing units (GPUs), for handling computationally demanding rendering algorithms. These GPUs are parallel stream processors, specialized towards computer graphics, that have computational performance more than a magnitude higher than corresponding CPUs. This has revolutionized computer graphics and also led to GPUs being used to solve more general numerical problems, such as fluid and physics simulation, protein folding, image processing, and databases. Unfortunately, the highly specialized nature of GPUs has also made them difficult to program.<br/><br>
<br/><br>
In this dissertation we show that GPUs can be programmed at a higher level, while maintaining performance, compared to current lower-level languages. By constructing a domain-specific language (DSL), which provides appropriate domain-specific abstractions and user-annotations, it is possible to write programs in a more abstract and modular manner. Using knowledge of the domain it is possible for the DSL compiler to generate very efficient code. We show that, by experiment, the performance of our DSLs is equal to that of GPU programs written by hand using current low-level languages. Also, control over the trade-offs between visual quality and performance is retained.<br/><br>
<br/><br>
In the papers included in this dissertation, we present domain-specific languages targeted at numerical processing and computer graphics, respectively. These DSL have been implemented as embedded languages in Python, a dynamic programming language that provide a rich set of high-level features. In this dissertation we show how these features can be used to facilitate the construction of embedded languages.},
  author       = {Lejdfors, Calle},
  isbn         = {978-91-628-7511-4},
  issn         = {1404-1219},
  language     = {eng},
  pages        = {120},
  title        = {High-Level GPU Programming: Domain-Specific Optimization and Inference},
  year         = {2008},
}