High-Level GPU Programming: Domain-Specific Optimization and Inference
(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:
https://lup.lub.lu.se/record/1149712
- author
- Lejdfors, Calle LU
- supervisor
-
- Boris Magnusson LU
- Lennart Ohlsson LU
- Görel Hedin LU
- opponent
-
- Professor Owens, John, University of California, USA
- organization
- publishing date
- 2008
- 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:00
- ISBN
- 978-91-628-7511-4
- language
- English
- LU publication?
- yes
- id
- 7b9117ee-6d42-4e49-a2dc-38a78b54a0bc (old id 1149712)
- date added to LUP
- 2016-04-04 09:32:27
- date last changed
- 2021-05-06 16:25:34
@phdthesis{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}}, language = {{eng}}, school = {{Lund University}}, title = {{High-Level GPU Programming: Domain-Specific Optimization and Inference}}, url = {{https://lup.lub.lu.se/search/files/5351615/1150306.pdf}}, year = {{2008}}, }