Parallelizing Compilers
Mark Vojkovich

Parallelizing code by hand is very time consuming. Fortunately there are parallelizing compilers available. These compilers convert serial source code into parallel code (lucky for you). A parallelizing compiler will convert your source code into an intermediate representation such as an Abstract Syntax Tree (AST) or a Hierarchical Task Graph (HTG). Then it will perform transformations and optimizations on this intermediate representation in a way that converts the serial flow of the program into parallel flow, spreading the work over many processors. Then it converts the intermediate representation into parallel code so it can be compiled into a binary.

Some specific parallel compilers:

There is much interest in parallelizing compilers for heterogeneous systems. That is, network computing between different architectures. While there are no complete heterogenous compilers to date, you can read about theoretical construction of heterogenous compilers as explained by Kathryn McKinley and group from the University of Massachusetts.

This page was written by Mark Vojkovich (mvojkovi@ucsd.edu). Mark is a CSE 260 student.