High Performance Computing
Copyright Year: 2010
Last Update: 2021
Publisher: OpenStax CNX
Conditions of Use
The Introduction states: "The purpose of this book has always been to teach new programmers and scientists about the basics of High Performance Computing. ... to the practicing Chemistry student, Physicist, or Biologist who need to write and run... read more
The Introduction states: "The purpose of this book has always been to teach new programmers and scientists about the basics of High Performance Computing. ... to the practicing Chemistry student, Physicist, or Biologist who need to write and run their programs as part of their research." The book is a re-release of a title from the late 1990s and, while excellent in the material covered, it is no longer comprehensive and cannot, by itself, meet its intended purpose.
The book introduces computer architecture and memory hierarchies and does a masterful job of explaining concepts relevant to a traditional, shared memory processor. It does not cover memory locality within the context of modern high performance clusters, massively parallel processing and web-distributed high performance computing.
Compilers and basic optimization if well explained but modern parallel languages, libraries and frameworks are only very briefly introduced; where they are mentioned the languages used in the examples are very outdated (FORTRAN). No mention is made of high performance computing on a GPU platform or using FPGA or ASIC hardware.
Previous comments notwithstanding, this book is an excellent introduction to the topics covered and could, in conjunction with additional material to bring the student "up to date", serve as one text in an introductory course.
The material is very accurate; I found no errors of fact or interpretation.
Refer to my comments on Comprehensiveness. The book uses examples from very old programming languages, it does not cover major approaches and techniques used today. It draws a strong distinction between CISC and RISC when all modern microprocessors are microcoded, which is not discussed at all.
The book is very good for the material covered but it falls short in exploring the breadth and depth of modern High Performance Computing.
Very clear and concise writing. The examples may not be clear to a student unfamiliar with older languages e.g. FORTRAN.
I found clear and consistent terminology throughout.
While the material in the book builds on concepts and ideas it has several sub-units (e.g. floating point) which could be presented out or order or as a standalone learning unit for a different course.
Topics are introduced in a logical order and in a a well-structured way.
I found no issues with the interface.
I am unaware of any grammatical errors.
As a high technical text there are no overt or implicit assumptions about the race or culture of the readers. The material is technical in nature and does not touch upon sensitive cultural issues.
This book is very well written and would serve as an excellent text with a companion book or as supplemental material. It could also be easily updated by an instructor with examples in a more modern language (e.g. Java).
Table of Contents
1. Modern Computer Architectures
- 1.1 Memory
- 1.2 Floating-Point Numbers
2. Programming and Tuning Software
- 2.1 What a Compiler Does
- 2.2 Timing and Profiling
- 2.3 Eliminating Clutter
- 2.4 Loop Optimizations
3. Shared-Memory Parallel Processors
- 3.1 Understanding Parallelism
- 3.2 Shared-Memory Multiprocessors
- 3.3 Programming Shared-Memory Multiprocessors
4. Scalable Parallel Processing
- 4.1 Language Support for Performance
- 4.2 Message-Passing Environments
- 5.1 Appendix C: High Performance Microprocessors
- 5.2 Appendix B: Looking at Assembly Language
About the Book
The purpose of this book is to teach new programmers and scientists about the basics of High Performance Computing. Too many parallel and high performance computing books focus on the architecture, theory and computer science surrounding HPC. This book speaks to the practicing chemistry student, physicist, or biologist who need to write and run their programs as part of their research.
About the Contributors
Charles Severance is currently a Clinical Associate Professor and teaches in the School of Information at the University of Michigan. Charles also works with the IMS Global Learning Consortium as the IMS Affiliate Coordinator. Previously he was the Executive Director of the Sakai Foundation and the Chief Architect of the Sakai Project. Charles is the author of the book, "Using Google App Engine" from O'Reilly and Associates. He also wrote the O'Reilly book on High Performance Computing. Charles has a background in standards including serving as the vice-chair for the IEEE Posix P1003 standards effort and edited the Standards Column in IEEE Computer Magazine from 1995-1999. Charles is active in television and radio as a hobby, he has co-hosted several television shows including "Nothin but Net" produced by MediaOne and a nationally televised program about the Internet called "Internet:TCI". Charles appeared for over 10 years as an expert on Internet and Technology as a co-host of a live call-in radio program on the local Public Radio affiliate.