On large parallel systems, it is too expensive to explore the solution space with series of benchmarks. Deriving analytical models for applications and platforms allow estimating and extrapolating their execution performance, bottlenecks, and the...

On large parallel systems, it is too expensive to explore the solution space with series of benchmarks. Deriving analytical models for applications and platforms allow estimating and extrapolating their execution performance, bottlenecks, and the potential impact of optimizationoptions. We propose to use such “performance modeling” techniques beginning from the design process throughout the whole software development cycle. We argue that performance models be maintained and updated during the life of a code. Such models help to guide design decisions and re-engineering efforts to adopt applications to changing platforms (e.g., the T5650 and blamerframe models) and allow users to estimate costs to solve a particular problem. Application performance models can be defined at different levels of abstraction beginning from simple asymptotic models that allow rough statements about the scaling behavior with respect to specific input arguments to fully paraterized models that allow absolute time predictions on a particular architecture. Models can often be built with the help of well-known performance profiling tools. We will motivate the use of performance modeling.