Books and other things which cost money to improve performance

Colin Paul Gloster <Colin_Paul_Gloster@ACM.org>
Mon, 5 Jul 2010 12:42:21 -0400

          From comp.compilers

Related articles
Books and other things which cost money to improve performance Colin_Paul_Gloster@ACM.org (Colin Paul Gloster) (2010-07-05)
Re: Books and other things which cost money to improve performance DrDiettrich1@aol.com (Hans-Peter Diettrich) (2010-07-06)
Re: Books and other things which cost money to improve performance gneuner2@comcast.net (George Neuner) (2010-07-06)
Re: Books and other things which cost money to improve performance Colin_Paul_Gloster@ACM.org (Paul Colin Gloster) (2010-07-09)
Re: Books and other things which cost money to improve performance ott@mirix.org (Matthias-Christian Ott) (2010-07-10)
Re: Books and other things which cost money to improve performance gneuner2@comcast.net (George Neuner) (2010-07-11)
Re: Books and other things which cost money to improve performance Colin_Paul_Gloster@ACM.org (Paul Colin Gloster) (2010-08-31)
| List of all articles for this month |
From: Colin Paul Gloster <Colin_Paul_Gloster@ACM.org>
Newsgroups: comp.compilers
Date: Mon, 5 Jul 2010 12:42:21 -0400
Organization: Compilers Central
Keywords: books, question
Posted-Date: 05 Jul 2010 13:06:31 EDT

Dear all,


Michael L. Scott mentioned in 92-03-055
perhaps before he wrote a book he was hoping had been
already written by others:
|--------------------------------------------------------------------------------------|
|"[..] |
| |
|[..] |
|[..] we believe that people appreciate |
|language design issues better, and write better programs, when they |
|understand what the compiler does to their code and why. |
| |
|So, for example, we spend a lot of time on subjects like run-time storage |
|management, referencing environments, dynamic-sized data structures, |
|pointer checking, thunks, efficient code for case statements, garbage |
|collection, good use of RISC [I am not actually targetting RISC]instruction sets, etc.|
| |
|[..]" |
|--------------------------------------------------------------------------------------|


I have found that this is true.


It has been warned many times in books such as by Appel and the red
dragon book that compilers need to be conservative. If I can get more
ideas on what mind be hindering compilers from applying optimizations,
then I could rewrite the code to make the work easier for the
compilers, or to manually perform such optimizations. After all, I do
not need to be conservative. I do not even need to preserve the
semantics of the program: if I find that I can get similar semantics
which is just as correct but results in faster executables, then I
will.


Various tricks in tiger books; the red dragon book; and "Computer
Architecture: A Quantitative Approach" (or superior variants of those
tricks as appeared in the books "More Tricks of the Game Programming
Gurus" and the excellent "Black Art of Macintosh Game Programming" by
Kevin Tieskoetter) have helped me to speed up an as-yet unreleased
version of the Monte Carlo particle simulator Cosima (
WWW.MPE.MPG.De/MEGA/megalib.html
). Using C++ was really not a good idea. Expect to see a version with
a lot more Ada on the Internet later this year.


We are considering buying books to improve performance. As such,
compiler books are not necessarily the books which we would benefit
from, but manually applying optimizations mentioned in compiler books
has been useful. Other types of books which can help are books on
implementing computer games and algorithms in general.


We unfortunately target x86s, but we will consider targeting other
types of architectures such as FPGAs; GPUs; and supercomputers. As we
already have x86s and might adopt something much faster, I do not
expect that we shall target RISC machines though they probably would
had been better to start with than x86s.


Books on compilers might not give me all the answers, but they help me
to think about things to try. Some books on compilers have nothing on
optimization. Some have a few chapters. Some are almost entirely about
optimization.


Feedback or offers to sell the following books or (other products not
listed below, such as compilers; profilers; or whatever else you might
develop which could speed Cosima up, including consultancy services
and bespoke developments) are hereby solicited. I am sorry for the
rushed nature of this post, but I was told for the first time less
than two hours ago that for the current budget, these items should
have been bought last month but that I may be able to still get the
money if I buy them this month. Suggestions of other books are also
welcome.


C.D. or D.V.D. versions of the texts are also welcome.


Steven S. Muchnick,
"Advanced Compiler Design and Implementation"


Robert Morgan,
"Building an Optimizing Compiler",
Digital Press


John M. Levesque & Joel W. Williamson,
"A Guidebook to Fortran on Supercomputers",
Academic Press,
1988








Utpal Banerjee,
"Loop Parallelization"


Matthew S. Hecht,
"Flow Analysis of Computer Programs"


M. Wolfe,
"Optimizing Supercompilers for Supercomputers",
Pitman or The MIT Press


Michael Wolfe,
"High Performance Compilers for Parallel Computing",
Addison-Wesley








Steven A. Przybylski,
CACHE & MEMORY HIERARCHY DESIGN: A PERFORMANCE DIRECTED APPROACH,
Morgan Kaufmann








Keith D. Cooper & Linda Torcson,
"Engineering a Compiler" (not "Engineering a Compiler: Vax-II Code Generation and Optimization" by Patricia Anklam)


Randy Allen & Ken Kennedy,
"Optimizing Compilers for Modern Architectures: A Dependence-based Approach"


Utpal Banerjee,
"Dependence Analysis for Supercomputing",
Kluwer Academic Publishers


Vivek Sarkar,
"Partitioning and Scheduling Parallel Programs for Multiprocessors",
MIT Press


C. D. Polychronopoulos,
"Parallel Programming and Compilers"


Aart J. C. Bik,
"The Software Vectorization Handbook: Applying Intel Multimedia Extensions for Maximum Performance",
Intel Press


Richard Gerber & Aart J. C. Bik & Kevin Smith & Xinmin Tian,
"The Software Optimization Cookbook High Performance Recipes for IA 32 Platforms"


Richard Gerber,
"The Software Optimization Cookbook: High-Performance Recipes for the Intel Architecture"










Hans Zima & Barbara Chapman,
"Supercompilers for Parallel and Vector Computers",
Addison Wesley


Mohammad R. Haghighat,
"Symbolic Analysis for Parallelizing Compilers",
Kluwer


Monica S. Lam,
"A Systolic Array Optimizing Compiler"


Wayne Wolf,
"High-Performance Embedded Computing. Architectures, Applications, and Methodologies"






Alfred V. Aho & Monica S. Lam & Ravi Sethi & Jeffrey D. Ullman,
"Compilers: Principles, Techniques, & Tools",
second edition, the first printing of the second edition is not acceptable


A.V. Aho, R. Sethi, J.D. Ullman, M. Lam,
"21st Century Compilers",
Addison-Wesley,
2004,
is this any different than the most recent dragon book?


Dick Grune & Henri E. Bal & Ceriel J. H. Jacobs & Koen G. Langendoen,
"Modern Compiler Design",
the 2nd edition which was sent to the publisher in April 2010


Thomas Gross & David R. O'Hallaron,
"Iwarp: Anatomy of a Parallel Computing System: Anatomy of a System"


Christoph Pleier,
"Prozessverlagerung in heterogenen Rechnernetzen basierend auf einer speziellen Uebersetzungstechnik"


Flemming Nielson, Hanne Riis Nielson, and Chris Hankin,
"Principles of Program Analysis",
Springer,
ISBN 3-540-65410-0


Davey, B. A. ; Priestley, H. A.
"Intoduction to Lattices and Order",
Cambridge University Press.






















Richard Bornat,
"Understanding and Writing Compilers",
1979


stuff by Jon Bentley such as
Bentley, Jon,
"Writing Efficient Progams",
Prentice Hall,
though he had a more recent article in "Dr. Dobb's Journal" from which
I infer that much of the book "Writing Efficient Progams" might be
out-of-date. However, if even one sentence is still up-to-date then I
might consider it.






%A F. E. Allen
%A J. Cocke
%T A Catalogue of Optimizing Transformations
%B Design and Optimization of Compilers
%E R. Rustin
%I Prentice-Hall
%D 1971
%P 1-30.
%O Transformations




%A J. C. Beatty
%T A Global Register Assigment Algorithm
%B Design and Optimization of Compilers
%E R. Rustin
%I Prentice-Hall
%D 1972
%P 65-68




%A J. Cocke
%A J. T. Schwartz
%T Programming Languages and Their Compilers
%I Courant Institute of Mathematical Sciences
%D 1970




%A David Gries
%T Compiler Construction for Digital Computers
%I John Wiley
%D 1971


%A M. Schaefer
%T A Mathematical Theory of Global Program Optimization
%I Prentice-Hall
%D 1973?
%X
Noted in AU Theory of Parsing ... as ``to appear''


%A W. A. Wulf
%A R. K. Johnson
%A C. B. Weinstock
%A S. O. Hobbs
%A C. M. Geschke
%T The Design of an Optimizing Compiler
%C NY
%I Elsevier North-Holland
%D 1975




Peter Lee,
"TOPICS IN ADVANCED LANGUAGE IMPLEMENTATION",
MIT Press


John R. Ellis,
"Bulldog: A Compiler for VLIW Architectures",
MIT Press




Peter Calingaert,
"Program Translation Fundamentals: Methods and Issues",
Computer Science Press


F.C. Chow,
"A Portable Machine-independent Global Optimizer - Design and Measurements",
Report: CSL T.R. 83-254,
Publisher: Computer Systems Laboratory, Stanford University


















Leland Beck,
"System Software: An Introduction to Systems Programming",
Addison-Wesley


















Geschke,Charles Matthew,
"Global Program Optimizations",
CARNEGIE-MELLON UNIVERSITY




Alpha Architecture Handbook,
DEC




Tremblay, Jean-Paul & Sorenson, Paul,G
"The Theory and Practice of Compiler Writing"
McGraw-Hill


Zima, Hans,
"Compilerbau II: Synthese und Optimierung"
Bibliographisches Institut


Bruce W. Leverett,
"Register Allocation in Optimizing Compilers",
UMI Research Press














Steve Heller,
"Optimizing C++",
Prentice Hall


Michael Abrash,
"Zen of Code Optimization" or "Michael Abrash's Graphics Programming Black Book",
Coriolis Group Books or Softpro Books


Dov Bulka & David Mayhew,
"Efficient C++: Performance Programming Techniques",
Addison-Wesley








Bernd Teufel,
"Organization of Programming Languages",
Springer Verlang








Vivek Sarkar,
"Partitioning and Scheduling Parallel Programs for Multiprocessor Execution",








Rene Alexander & Graham Bensley,
"C++ Footprint and Performance Optimization",
Sams


Frank G. Pagan,
"Partial computation and the construction of language processors",
Prentice-Hall


Rick Booth,
"Inner Loops",
Addison Wesley


Robert Metzger and Zhaofang Wen,
"Automatic Algorithm Recognition and Replacement: A New Approach to Program Optimization",
MIT Press


Pappas & Murray,
"80386 Microprocessor Handbook",
McGraw-Hill




Seyed H. Roosta,
"Parallel Processing and Parallel Algorithms, Theory and Computation",
Springer




"Games Programming Gems 4", maybe other books in the series


Thomas Pittman,
"Practical Code Optimization by Transformational Attribute Grammars Applied to Low-Level Intermediate Code Trees",
Ph.D. dissertation,
University of California at Santa Cruz,
1985


a thesis by Willi Porten in 1989




Mike Schmit,
"Pentium Processor Programming Tools",
we own a copy of this but I have not had time to look at it yet: if it
is worthwhile then we will probably want to buy another copy


Kevin Dowd,
"High Performance Computing",
O'Reilly & Associates,
we own a copy of this but I have not had time to look at it yet: if it
is worthwhile then we will probably want to buy another copy




Dewar & Smosna,
"Microprocessors: A Programmer's View",
McGraw-Hill,
we own a copy of this but I have not had time to look at it yet: if it
is worthwhile then we will probably want to buy another copy




Daniel H. Marcellus,
"Systems Programming for Small Computers,"
Prentice-Hall,
we own a copy of this but I have not had time to look at it yet: if it
is worthwhile then we will probably want to buy another copy






G.R.Gircys,
"Understanding and Using COFF",
O'Reilly and Associates,
we own a copy of this but I have not had time to look at it yet: if it
is worthwhile then we will probably want to buy another copy






Hatcher,
"Data-Parallel Programming on MIMD Computers"
The MIT Press,
we own a copy of this but I have not had time to look at it yet: if it
is worthwhile then we will probably want to buy another copy






Y. N. Srikant & Priti Shankar,
"The Compiler Design Handbook: Optimizations and Machine Code Generation",
we own a copy of this but I have not had time to look at it yet: if it
is worthwhile then we will probably want to buy another copy


John J. Donovan,
"Systems Programming",
McGraw-Hill,
we own a copy of this but I have not had time to look at it yet: if it
is worthwhile then we will probably want to buy another copy




David A. Patterson & John L. Hennessy & Peter J. Ashenden,
"Computer organization and design : the hardware/software interface",
Elsevier,
we own a copy of this but I have not had time to look at it yet: if it
is worthwhile then we will probably want to buy another copy




David E. Culler & Jaswinder Pal Singh & & Anoop Gupta & John L. Hennessy,
"Parallel computer architecture : a hardware/software approach",
we own a copy of this but I have not had time to look at it yet: if it
is worthwhile then we will probably want to buy another copy


Thomas Pittman & James Peters,
"The Art of Compiler Design: Theory and Practice",
I have been reading this last week and this week: it is good, we might
buy another copy


F R A Hopgood,
"Compiling Techniques",
monograph from Macmillian/Elsevier,
1969,
we have this, it might not be easy to buy another copy


Appel cited a book edited by Sites, R.L. supposedly called
"Appendix A: Software Considerations" but it seems to be
"ALPHA ARCHITECTURE REFERENCE MANUAL" (
http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/html/cltl/dp_catalog.html
).






I seek confirmation that the following books were never published (or
better yet, evidence that they were published and advice on how to buy
them):


"Optimization in Compilers" which was being edited by F. Allen,
B. K. Rosen, and K. Zadeck;


and


the book by Ron Cytron which was mentioned by Preston Briggs on
http://compilers.iecc.com/comparch/article/94-10-065
which I suspect is not the newly published "Crafting a Compiler" by
Charles N. Fischer; Ron K. Cytron; and Richard J. LeBlanc, Jr.


I can be telephoned on 00 351 239 410 663 and I can be faxed on 00 351
239 829 158.


Yours faithfully,
Paul Colin Gloster


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.