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.