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


