Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!think.com!mintaka!spdcc!iecc!compilers-sender From: cmb@castle.edinburgh.ac.uk (Colin Brough) Newsgroups: comp.compilers Subject: Re: Compilers for parallel computing Keywords: parallel, books, vector Message-ID: <91-05-098@comp.compilers> Date: 23 May 91 23:48:17 GMT References: <91-05-095@comp.compilers> Sender: compilers-sender@iecc.cambridge.ma.us Reply-To: Colin Brough Organization: Compilers Central Lines: 69 Approved: compilers@iecc.cambridge.ma.us > 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.