Languages and Compilers for Rendering and Image Processing

Even though computer graphics applications are widely used, they remain challenging to implement and graphics programming systems must navigate conflicting trade-offs between correctness, performance, and hardware portability. This thesis describes the design and implementation of domain specific la...

Full description

Bibliographic Details
Main Author: Anderson, Luke
Other Authors: Durand, Frédo
Format: Thesis
Published: Massachusetts Institute of Technology 2022
Online Access:https://hdl.handle.net/1721.1/139489
_version_ 1811083915732975616
author Anderson, Luke
author2 Durand, Frédo
author_facet Durand, Frédo
Anderson, Luke
author_sort Anderson, Luke
collection MIT
description Even though computer graphics applications are widely used, they remain challenging to implement and graphics programming systems must navigate conflicting trade-offs between correctness, performance, and hardware portability. This thesis describes the design and implementation of domain specific languages with particular trade-off decisions in mind and the application of machine learning to these languages and their compilers. Rendering systems suffer from a tension between separation of concerns and performance. Existing rendering systems typically focus on performance, but complex probability computations make advanced rendering algorithms difficult to implement correctly. We first identify some common operations that are foundational to many rendering algorithms, describe some goals of an ideal rendering system, explore the space of trade-offs in achieving these goals, and discuss some possible implementation strategies. We then present Aether, a domain specific language for rendering, designed with a focus on correctness. Users write sampling code using reusable building block components and all probability code is then automatically generated. We demonstrate the effectiveness of this approach by implementing a range of modern rendering algorithms, including the novel tridirectional path tracing, which otherwise would have been prohibitively difficult to implement. Halide provides a modular approach to writing image processing code but achieving high performance still requires considerable manual effort and expertise. We present a new automatic algorithm that quickly generates high performance GPU implementations of imaging and vision pipelines, directly from high-level Halide algorithm code. We address the scalability challenge of extending search-based automatic scheduling to the nested parallelism on GPU architectures in reasonable compile time. We find schedules that are on average 1.7x faster than existing automatic solutions (up to 5x), and competitive with what the best human experts were able to achieve in an active effort to beat our automatic results.
first_indexed 2024-09-23T12:41:38Z
format Thesis
id mit-1721.1/139489
institution Massachusetts Institute of Technology
last_indexed 2024-09-23T12:41:38Z
publishDate 2022
publisher Massachusetts Institute of Technology
record_format dspace
spelling mit-1721.1/1394892022-01-15T03:32:04Z Languages and Compilers for Rendering and Image Processing Anderson, Luke Durand, Frédo Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science Even though computer graphics applications are widely used, they remain challenging to implement and graphics programming systems must navigate conflicting trade-offs between correctness, performance, and hardware portability. This thesis describes the design and implementation of domain specific languages with particular trade-off decisions in mind and the application of machine learning to these languages and their compilers. Rendering systems suffer from a tension between separation of concerns and performance. Existing rendering systems typically focus on performance, but complex probability computations make advanced rendering algorithms difficult to implement correctly. We first identify some common operations that are foundational to many rendering algorithms, describe some goals of an ideal rendering system, explore the space of trade-offs in achieving these goals, and discuss some possible implementation strategies. We then present Aether, a domain specific language for rendering, designed with a focus on correctness. Users write sampling code using reusable building block components and all probability code is then automatically generated. We demonstrate the effectiveness of this approach by implementing a range of modern rendering algorithms, including the novel tridirectional path tracing, which otherwise would have been prohibitively difficult to implement. Halide provides a modular approach to writing image processing code but achieving high performance still requires considerable manual effort and expertise. We present a new automatic algorithm that quickly generates high performance GPU implementations of imaging and vision pipelines, directly from high-level Halide algorithm code. We address the scalability challenge of extending search-based automatic scheduling to the nested parallelism on GPU architectures in reasonable compile time. We find schedules that are on average 1.7x faster than existing automatic solutions (up to 5x), and competitive with what the best human experts were able to achieve in an active effort to beat our automatic results. Ph.D. 2022-01-14T15:15:06Z 2022-01-14T15:15:06Z 2021-06 2021-06-23T19:34:29.316Z Thesis https://hdl.handle.net/1721.1/139489 In Copyright - Educational Use Permitted Copyright MIT http://rightsstatements.org/page/InC-EDU/1.0/ application/pdf Massachusetts Institute of Technology
spellingShingle Anderson, Luke
Languages and Compilers for Rendering and Image Processing
title Languages and Compilers for Rendering and Image Processing
title_full Languages and Compilers for Rendering and Image Processing
title_fullStr Languages and Compilers for Rendering and Image Processing
title_full_unstemmed Languages and Compilers for Rendering and Image Processing
title_short Languages and Compilers for Rendering and Image Processing
title_sort languages and compilers for rendering and image processing
url https://hdl.handle.net/1721.1/139489
work_keys_str_mv AT andersonluke languagesandcompilersforrenderingandimageprocessing