How should compilers represent fork-join parallelism?

Thesis: M. Eng., Massachusetts Institute of Technology, Department of Electrical Engineering and Computer Science, 2017.

Bibliographic Details
Main Author: Moses, William S. (William Steven)
Other Authors: Charles E. Leiserson and Tao B. Schardl.
Format: Thesis
Language:eng
Published: Massachusetts Institute of Technology 2018
Subjects:
Online Access:http://hdl.handle.net/1721.1/113124
_version_ 1811080506208419840
author Moses, William S. (William Steven)
author2 Charles E. Leiserson and Tao B. Schardl.
author_facet Charles E. Leiserson and Tao B. Schardl.
Moses, William S. (William Steven)
author_sort Moses, William S. (William Steven)
collection MIT
description Thesis: M. Eng., Massachusetts Institute of Technology, Department of Electrical Engineering and Computer Science, 2017.
first_indexed 2024-09-23T11:32:44Z
format Thesis
id mit-1721.1/113124
institution Massachusetts Institute of Technology
language eng
last_indexed 2024-09-23T11:32:44Z
publishDate 2018
publisher Massachusetts Institute of Technology
record_format dspace
spelling mit-1721.1/1131242019-04-11T10:22:43Z How should compilers represent fork-join parallelism? Moses, William S. (William Steven) Charles E. Leiserson and Tao B. Schardl. Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science. Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science. Electrical Engineering and Computer Science. Thesis: M. Eng., Massachusetts Institute of Technology, Department of Electrical Engineering and Computer Science, 2017. This electronic version was submitted by the student author. The certified thesis is available in the Institute Archives and Special Collections. Cataloged from student-submitted PDF version of thesis. Includes bibliographical references (pages 49-53). This thesis explores how fork-join parallelism, as supported by concurrency platforms such as Cilk and OpenMP, can be embedded into a compiler's intermediate representation (IR). Mainstream compilers typically treat parallel linguistic constructs as syntactic sugar for function calls into a parallel runtime. These calls prevent the compiler from performing optimizations across parallel control constructs. Remedying this situation is generally thought to require an extensive reworking of compiler analyses and code transformations to handle parallel semantics. Tapir is a compiler IR that represents logically parallel tasks asymmetrically in the program's control flow graph. Tapir allows the compiler to optimize across parallel control constructs with only minor changes to its existing analyses and code transformations. To prototype Tapir in the LLVM compiler, for example, the Tapir team added or modified about 6000 lines of LLVM's 4-million-line codebase. Tapir enables LLVM's existing compiler optimizations for serial code -- including loop-invariant-code motion, commonsubexpression elimination, and tail-recursion elimination -- to work with parallel control constructs such as spawning and parallel loops. Tapir also supports parallel optimizations such as loop scheduling. This research reported in this thesis represents joint work with Tao B. Schardl and Charles E. Leiserson. by William S. Moses. M. Eng. 2018-01-12T20:57:43Z 2018-01-12T20:57:43Z 2017 2017 Thesis http://hdl.handle.net/1721.1/113124 1016459258 eng MIT theses are protected by copyright. They may be viewed, downloaded, or printed from this source but further reproduction or distribution in any format is prohibited without written permission. http://dspace.mit.edu/handle/1721.1/7582 53 pages application/pdf Massachusetts Institute of Technology
spellingShingle Electrical Engineering and Computer Science.
Moses, William S. (William Steven)
How should compilers represent fork-join parallelism?
title How should compilers represent fork-join parallelism?
title_full How should compilers represent fork-join parallelism?
title_fullStr How should compilers represent fork-join parallelism?
title_full_unstemmed How should compilers represent fork-join parallelism?
title_short How should compilers represent fork-join parallelism?
title_sort how should compilers represent fork join parallelism
topic Electrical Engineering and Computer Science.
url http://hdl.handle.net/1721.1/113124
work_keys_str_mv AT moseswilliamswilliamsteven howshouldcompilersrepresentforkjoinparallelism