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:
-
Parafrase-2 converts C, Fortran77 or Cedar Fortran and focuses on task parallelism rather than just simple loop parallelism. It has a graphical user
interface using TCL/TK and uses a HTG as an internal representation. Parafrase-2 runs on SunOS, AIX, HP-UX, IRIX and will
soon be running on my favorite operating system - Linux.
For more information on Parafrase-2, see the Parafrase-2
homepage at the University of Illinois (you may be able to get a copy if you're not too intimidated
by their licensing agreement).
-
SUIF (The Stanford University Intermediate Format) is a C translator, but can input Fortran
with the aid of a modified version of f2c. For more information on SUIF, see the SUIF homepage.
Sage++ is not really a parallelizing compiler, but more of a toolkit for building parallel
compilers. Sage++ provides the input parsers and output printers for C, C++, pC++, Fortran77,
and Fortran90 and provides the intermediate representation. You get to write the parallelizing
transformations. For more information on Sage++, see the Sage++ homepage at Indiana University.
Polaris compiles Fortran77 and focuses on automatic parallelization for shared-memory machines.
For more information on Polaris, see the Polaris homepage at the University
of Illinois.
ParaScope is a parallelizing compiler for Fortran. D-System is the Fortran-D version of Parascope.
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.