[comp.compilers] Compilers for parallel computing

julia@cs.warwick.ac.uk (Julia Dain) (05/22/91)

Help please - can anyone recommend a good textbook on compilers for parallel
computing.

I know of the existence of 4 titles -

Gelernter and Nicolau: Languages and compilers for parallel computing (Pitman)

Polychronopoulos: Parallel programming and compilers (Kluwer Academic)

Wolfe: Optimizing supercompilers for supercomputers (Pitman)

Zima and Chapman: Supercompilers for parallel and vector computers (Addison
Wesley)

Can anybody recommend one of these, or any other?  Preferably suitable for
someone with a background in compilers, who wants to find out about special-
purpose compilers for parallel programs, languages and machines; and
preferably directed towards solving problems generally encountered, along
Dragon book lines.

Thanks for any help.
--
Julia Dain, Dept Computer Science, University of Warwick, Coventry CV4 7AL, UK
julia@cs.warwick.ac.uk    Phone +44 203 523364    Fax +44 203 525714
[Please cc: any suggestions to compilers, I'd also like to find good material
on parallel compiling. -John]
-- 
Send compilers articles to compilers@iecc.cambridge.ma.us or
{ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.

ds@juniper.cray.com (David Sielaff) (05/23/91)

In article <91-05-095@comp.compilers> you write:
>[suggestions wanted on these and other books]
>
>Gelernter and Nicolau: Languages and compilers for parallel computing (Pitman)
>
>Polychronopoulos: Parallel programming and compilers (Kluwer Academic)
>
>Wolfe: Optimizing supercompilers for supercomputers (Pitman)
>
>Zima and Chapman: Supercompilers for parallel and vector computers (Addison
>Wesley)

The Wolfe book is a reprint of his PhD thesis (if I'm not mistaken - I've
read his thesis, but have only seen the book in bookstores).  Anyway, it's a
good book, but more of an overview of the subject, basically, here's what
dependence analysis is, and here's how you use it, and here's a bunch of
things you can do with it.  I think it's definitely worth the time to read.
I've browsed through the Polychronopoulos book, and it looked good, but I
couldn't tell you anything more about it.  Another good book to look at
along these lines is:

Utpal Bannerjee: Dependence Analysis for Supercomputing (Kluwer Academic)

This book has a very thorough treatment of dependence analysis, but not much
else (doesn't tell you what good it does, only what it is).  It tries to be
a theoretical foundation for the study of dependence analysis and its use it
various areas (such as parallelizing compilers).  Probably read this book
after Wolfe's.

>Can anybody recommend one of these, or any other? ...

I don't know of any good books on other approaches to parallelism, such as
functional/data flow programming (not completely the same thing, but...).  I
have heard of one book on the subject, however:

Boleslaw Szymanski: Parallel Functional Programming Languages and
	Compilers (ACM)

I personally would like to read it sometime, but I don't know if it has even
been published yet (wasn't out the last time I checked).  I guess that's my
list of books, and once you've got that down, there's a lot of information
that lives in articles and tech reports that hasn't made it to books yet.

Dave Sielaff
Cray Research, Inc.
C Compiler Guy
-- 
Send compilers articles to compilers@iecc.cambridge.ma.us or
{ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.

metzger@convex.com (Robert Metzger) (05/23/91)

In article <91-05-095@comp.compilers> Julia Dain <julia@cs.warwick.ac.uk> writes:
>Help please - can anyone recommend a good textbook on compilers for parallel
>computing.
>
>Gelernter and Nicolau: Languages and compilers for parallel computing
>(Pitman)
>
>Polychronopoulos: Parallel programming and compilers (Kluwer Academic)
>
>Wolfe: Optimizing supercompilers for supercomputers (Pitman)
>
>Zima and Chapman: Supercompilers for parallel and vector computers (Addison
>Wesley)

I recommend Zima/Chapman and Wolfe to new engineers in our department
(compiler development at CONVEX Computer Corp.) who wish to learn more about
vectorization and parallelization.  I would not recommend the other two books
for this purpose, though they contain much useful material.

Wolfe and Polychronopoulos are updated versions of doctoral dissertations.
Gelernter and Nicolau is a collection of papers, essentially a conference
proceedings.

Zima/Chapman contents (376 pages)

Supercomputers and Supercompilers
Supercomputer Architecture
Scalar Analysis
Data Dependence
Standard Transformations
Vectorization
Parallelization
Supercompilers and their Environments
Appendix A- Tarjan's Algorithm
Appendix B- The Banerjee Test
Appendix C- Mathematical Notation
References
Index

Wolfe contents (165 pages)

Supercompilers
Data Dependence
Vectorization
Concurrentization
Loop Fusion and Loop Scalarization
Loop Interchanging
Reductions and Recurrenes
Wavefronts via Loop Skewing
Storage Management
Vectorizing While Loops
Structure of a Supercompiler
References
(no index!)

Polychronopoulos contents (240 pages)

Parallel Architectures and Compilers
Program Restructuring for Parallel Execution
A Comprehensive Environment for Automatic Packaging and Scheduling
	of Parallelism
Static and Dynamic Loop Scheduling
Run-time Overhead
Static Program Partitioning
Static Task Scheduling
Speedup Bounds for Parallel Programs
References
Index

Gelernter, Nicolua, Padua contents (553 pages)

A total of 26 papers.  My personal selection of interesting papers

A Theory of Loop Permutations - Banerjee
Experiences Using Control Dependence in PTRAN - Cytron, Ferrante, Sarkar
Static Analysis and Runtime Support for Parallel Execution in C -
	Gannon, Guarna, Lee
Some Results on Exact Data Dependence Analysis - Li, Yew
The Structure of Parafrase-2- Polychronopoulos et al
Loop Rotation - Wolfe
--
Robert Metzger		CONVEX Computer Corp.  		Richardson, Texas
-- 
Send compilers articles to compilers@iecc.cambridge.ma.us or
{ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.

cmb@castle.edinburgh.ac.uk (Colin Brough) (05/24/91)

> Help please - can anyone recommend a good textbook on compilers for
> parallel computing.

The four titles mentioned are probably the best available at the moment.  As
I have all four on my shelves at the moment I'll try and (very briefly)
describe each, and then recommend one.

Gelernter and Nicolau: Languages and Compilers for Parallel Computing
---------------------- (Pitman, 1990)
This book is a collection of the papers presented at the Second Workshop on
Languages and Compilers for Parallel Computing which took place in Urbana,
Illinois, in August 1989.  As a snapshot of what people are currently doing,
and as a starting point for finding relevant references this is an excellent
book, but it is not a textbook.  Pitman will be publishing "Advances in
Languages and Compilers for Parallel Computing" (eds. Nicolau, Padua,
Gelernter and Gross) in late June of this year, a book in the same style as
this one.  It is the only one of the books that is not interested primarily
in detecting and exploiting implicit parallelism, and includes papers on
'Compiling Programs with User Parallelism' and 'Compiling for Dataflow
Software Pipelining', for example. 

Polychronopoulous: Parallel Programming and Compilers
------------------ (Kluwer Academic, 1988) 
(I must confess that this is the book I hve read least.) "The three major
sections offer a description of problems and solutions related to program
restructuring and parallelism detection, scheduling of program modules,
overhead and performance analysis." This is not a textbook in the classic
sense, but aims to present "material at the forefront of parallel
processing".  All of the material is from the shared memory multiprocessor
world - no discussion of the problems of distributed memory, for example. 

Wolfe: Optimizing Supercompilers for Supercomputers
------ (Pitman, 1989)
Based on Wolfe's 1982 PhD Thesis this book is really on Data Dependence
Analysis and it's application to loop transformations rather than the
broader 'Compilers for Parallel Computers'.  Again this work, though less
explicitly limited to shared memory architectures, is certainly biased in
that direction.  It is a very clear introduction to data dependence
analysis, the best that I have seen.

Zima and Chapman: Supercompilers for Parellel and Vector Computers
----------------- (Addison Wesley, 1990)
This is probably the only book in the field that attempts to be a textbook,
and gives a broad introduction to the issues in writing compilers for
parallel machines.  Scalar analysis, data dependence analysis, several
standard loop transformations, vectorisation and parallelisation are all
dealt with.  There are also a number of case studies of current systems
(Parafrase, PFC and SUPERB) that help illustrate the issues raised in the
text.

None of these books is able to offer level of detail that the Dragon book
goes into since this is still a devloping field.  When the Dragon book says
'You can do it this way', unless you are after the last ounce of performance
the algorithm or data structure presented will usually be quite adequate,
but this is not yet the case in compiling for parallel computers.  There is
no consensus yet on how things should be done.

Recommendation: I suspect that the Zima and Chapman book would be the best
one to start with; it also has an excellent bibliography.
__
Colin Brough                           Edinburgh Parallel Computing Centre
cmb@castle.ed.ac.uk                    James Clerk Maxwell Building
cmb%ed.ac.uk@nsfnet-relay.ac.uk        Mayfield Road
                                       Edinburgh  EH9 3JZ
Phone: +44 31-650-5022                 SCOTLAND
Fax:   +44 31-662-4712
-- 
Send compilers articles to compilers@iecc.cambridge.ma.us or
{ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.

lins@Apple.COM (Chuck Lins ) (05/24/91)

While we're on the subject of parallel computing, can the dependence analysis
techniques described in the aformentioned books & papers be used in
exploiting fine grained parallelism embodied in superscalar architectures? Or
must one use very different techniques? Inquiring Chuck's want to know :-)

-- 
Chuck Lins, Apple Computer, Inc.,
20525 Mariani Avenue, Mail Stop 37-BD, Cupertino, CA 95014
Internet:  lins@apple.com, AppleLink: LINS@applelink.apple.com
-- 
Send compilers articles to compilers@iecc.cambridge.ma.us or
{ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.