You are here: Home Education Historical Previous year's Summer Schools 2009 Course Information Preparatory Material

Preparatory Material

Course prerequisites and suggested reading materials to get a head start on the course

Highly Recommended

The following out-of-print book provides an excellent introduction to high-performance computing and is highly recommended.

High Performance Computing Kevin Dowd and Charles Severance, O'Reilly
Covered topics include CPU and memory architecture, optimizing compilers, timing and profiling, parallelism, loop and memory reference optimization, benchmarking, and parallel and multiprocessing

Good Additional References

Here are some basic references. You may find it helpful to review the information in these text before, during, and after the course.

Computer Architecture

Computer Architecture: A Quantitative Approach, Third Edition John Hennessy and David Patterson
[Pub. description]This best-selling title, considered for over a decade to be essential reading for every serious student and practitioner of computer design, has been updated throughout to address the most important trends facing computer designers today. In this edition, the authors bring their trademark method of quantitative analysis not only to high performance desktop machine design, but also to the design of embedded and server systems. They have illustrated their principles with designs from all three of these domains, including examples from consumer electronics, multimedia and web technologies, and high performance computing.
Computer Organization and Design: The Hardware/Software Interface, Third Edition John Hennessy and David Patterson
Chapters include: Computer Abstractions and Technology; Instructions: Language of the Computer; Arithmetic for Computers; Assessing and Understanding Performance; The Processor: Datapath and Control; Enhancing Performance with Pipelining; Large and Fast: Exploiting Memory Hierarchy; Storage, Networks, and Other Peripherals; Multiprocessors

Writing Software

Writing Scientific Software: A Guide for Good Style Suely Oliveira and David E. Stewart, Cambridge University Press
[Pub. description] Oliveira and Stewart's style guide for numerical software points out good practices to follow, and pitfalls to avoid. By following their advice, readers will learn how to write efficient software, and how to test it for bugs, accuracy and performance. Techniques are explained with a variety of programming languages, and illustrated with two extensive design examples, one in Fortran 90 and one in C++

Programming Languages

Fortran 95 Handbook Complete ISO/ANSI Reference Jeanne Adams, et al., The MIT Press
A comprehensive survey of Fortran 95 for those familiar with a programming language but unfamiliar with Fortran
Essential C++ Stanley B. Lippman, Addison-Wesley
A good, lean, introductory book
Accelerated C++: practical programming by example Andrew Koenig and Barbara E. Moo, Addison-Wesley
Another good, lean, introductory book
ACCU: Association of C & C++ Users
An excellent starting point for book reviews, links and resources , events, and much more.
Python Scripting for Computational Science
[Pub. description] The goal of this book is to teach computational scientists how to develop tailored, flexible, and human-efficient working environments built from small programs (scripts) written in the easy-to-learn, high-level language Python. The focus is on examples and applications of relevance to computational scientists: gluing existing applications and tools, e.g. for automating simulation, data analysis, and visualization; steering simulations and computational experiments; equipping old programs with graphical user interfaces; making computational Web applications; and creating interactive interfaces with a Maple/Matlab-like syntax to numerical applications in C/C++ or Fortran.

Parallel Programming

Using MPI: Portable Parallel Programming with the Message-Passing Interface William Gropp, Ewing Lusk, and Anthony Skjellum, The MIT Press
The classic text on MPI
Designing and Building Parallel Programs Ian Foster, Addison-Wesley Publishing Company, Inc.
This books covers both the techniques used to design parallel programs and the tools used to implement these programs. It contains a thorough discussion of parallel algorithm design, performance analysis, program construction. Languages covered include MPI, HPF, and C++. Tools for collecting and analyzing performance data are covered. Last but not least, an on-line version of this book is available via the Web. It includes tools and programs that you can download.
Concurrent Scientific Computing Eric F. Van de Velde, Springer-Verlag
This book, one of the Texts in Applied Mathematics (TAM) series, is a more advanced book focuses on the algorithmic structure of numerical methods. You'll find the collection of algorithms in this book to be sufficiently representative of almost every fundamental technique of concurrent scientific computing.

High-Performance Computing

PDC Reference Reading List
A list of HPC references generally recommended by PDC