Techniques for Optimizing Applications: High Performance Computing 
by Rajat P. Garg and Ilya Sharapov
June, 2001
616 pages
Depending upon the purpose of an application and how it's used, three principles of performance optimization are common:
- Solve a problem faster
- Solve a larger problem in the same time
- Solve the same size problem in same time but with fewer system resources
Improved performance can mean getting results faster. In HPC applications, the performance time usually makes a crucial difference to users. For example, it's a considerable difference to automobile design engineers if they can repeat a simulation overnight versus over several days, during which engineers would have to wait for results before modifying their design.
Another goal in improving performance can be to solve a larger problem within a given time. For example, meteorologists need to complete simulations of their weather modeling in a given period. Improved performance allows meteorologists to use larger data sets within the same processing time for more accurate weather forecasting.
If both the problem size and processing time are held constant, an optimized application requires fewer resources to complete a computational run. To take full advantage of system resources, an application should be carefully optimized for its platform or a range of platforms. Even though optimization is a difficult and often tedious process, it is usually more cost-effective than investing in additional system resources.
Techniques for Optimizing Applications: High Performance Computing is organized into fourteen chapters:
- Chapter 1, Introduction
- Chapter 2, Overview of Sun UltraSPARC Solaris Platforms
- Chapter 3, Application Development on Solaris
- Chapter 4, Measuring Program Performance
- Chapter 5, Basic Compiler Optimizations
- Chapter 6, Advanced Compiler Optimizations
- Chapter 7, Linker and Libraries in Performance Optimization
- Chapter 8, Source Code Optimization
- Chapter 9, Loop Optimization
- Chapter 10, Parallel Processing Models on Solaris
- Chapter 11, Parallel Performance Measurement Tools
- Chapter 12, Optimization of Explicitly Threaded Programs
- Chapter 13, Optimization of Programs Using Compiler Parallelization
- Chapter 14, Optimization of Message-Passing Programs