next up previous contents
Next: Performance Understanding Up: Parallel Performance Understanding via Previous: Contents

Introduction

 

Parallel applications are usually inefficient in using resources provided by parallel computers. This inefficiency is caused by many reasons such as parallelization restrictions (e.g., data dependences), additional computation introduced by parallelization (e.g., message exchanging, remote memory accesses), and poor implementation (e.g., uneven work distribution). In order to improve application performance, we need to understand it and find the real causes behind performance problems. There are two approaches used for performance understanding: (1) observation, and (2) modeling.

Observations determine what is affecting the performance of an application. There are many ways to answer this question. For example, it can be answered by determining the application components (e.g., functions, basic blocks, operations, data structures) where the performance problems are detected, or by classifying performance problems into categories such as insufficient parallelism, contention, and communication. However, if we want to understand an application's performance, we need to know not only what is degrading its performance, but also why the degradation is occurring. Implementation decisions, algorithm features, and processor interactions are examples of explanations for observed behavior.

Modeling techniques express how the application behaves under varying execution conditions. The result is a model for an application's behavior as a function of one or more execution parameters, like ``synchronization time increases linearly with respect to the number of processors''. Again, knowledge of how the performance of the application changes with respect to execution parameters is not enough to answer why the application is behaving in that way. In this case, we want to know which implementation decisions are responsible for the behavior expressed by the model.

Performance understanding can be performed at two levels: (1) intra-execution - performance problems particular to an execution, and (2) inter-execution - trends across multiple executions. In the first case we want to know the causes of performance problems; in the second case we seek explanations for any trends that correlate performance problems and execution parameters.

In the next section we discuss performance understanding at both levels and identify additional characteristics and difficulties.




next up previous contents
Next: Performance Understanding Up: Parallel Performance Understanding via Previous: Contents

Wagner Meira
Wed Feb 28 15:37:47 EST 1996