NACSE -- Northwest Alliance for Computational Science and Engineering

Parallel Performance Visualization

methods

tools

authors

publications

legal notice

Home Page Contents

What these pages are for

Visualization is often the tool of choice for understanding interelations within complicated data sets. Consequently, the development of performance analysis and tuning tools for parallel programs has increasingly evolved into an ongoing search for more effective visual representations of performance data.

The importance, and difficulty, of this task is evidenced by the large, and growing, number of proposed solutions. As a field of study, parallel performance visualization has developed a huge vocabulary of display types, and tools which implement them. Inevitably, new methods are often described in terms of the old. An understanding of this common vocabulary is therefore important in using existing methods, or in developing new ones.

The breadth of the performance visualization vocabulary, and of the research literature which desribes it, can be a little daunting. So, we put together these pages to provide a convenient, accessable, contemporary introduction to the common language and experience base of parallel performance visualization. Our goals are twofold. First, we wanted this collection to be concise, but broad and detailed enough to be useful. Second, we have compiled a detailed, abstracted bibliography, that provides a rich set of directions for deeper study.

Why is performance tuning important?

Parallel computing systems exist solely to improve computing performance. It can be very difficult, however, to write software that realizes this promise.

The difficulty arises from the enormous resource space (multiple processors, message pathways, shared memory, etc.) that concurrent systems offer programmers. In any given parallel environment, any computing problem can be solved a number of different ways, by using resources differently. The various solutions, however, will exhibit vastly different performance characteristics. Moreover, a solution that performs well on one architecture may not perform as well on another. Finally, performance may not be resource scalable; a program which runs efficiently on a few processors may perform terribly on a hundred.

These issues significantly complicate writing parallel software that is not only correct, but optimal. A programmer must choreograph a complicated, interactive ballet among resources, to collectively perform the computation in an efficient way.

For all but the simplest parallel programs, this is not an easy task. One way of tackling it is to use an empirical, iterative, tuning approach. A programmer starts with a working, nonoptimal program, and follows the following steps:

  1. Run the program, collecting trace data on resource use.
  2. Analyze the trace data to identify potential performance- enhancing code improvements.
  3. Modify the program source code accordingly, and recompile.
Iterating this sequence will ordinarily cause the code to converge towards a more optimal form.

Clearly, programmers want the above steps to be as intuitive and easy, and convergence as rapid, as possible. Achieving these goals is the central idea behind performance analysis and tuning tools.

Currently available tools have had some success. However, the need for better tuning methods is almost universally acknowledged as a significant obstacle to widespread use of parallel computing.

Part of the difficulty comes from step 1; it is important to formulate a tracing scheme that does not, of itself, consume so much of resource space that it perturbs the computation being measured. However, the most important and difficult step is the second--the transition between trace data and code modification.

Visualization in performance tuning

Programs can generate an enormous amount of trace data, not all of which is useful in tuning. Effective analysis of a trace data set requires finding its useful components, and examining them for patterns and relationships that indicate performance problems, and possible solutions.

The essentially sequential nature of textual displays poorly suit them to this task. Consequently, most tools rely on visual representations of trace data--graphs, plots, etc. A well conceived visual display takes advantage of human shape- and pattern-recognition abilities to communicate anomalous behavior in a data set.

For performance data, however, finding an effective visualization scheme can be very difficult. To be useful, a visualization must not only indicate the existence of a problem; it must also indicate how to change code to improve performance. Moreover, a good display should be scalable. That is, a display scheme useful for one program should ideally be as useful for a similar program using more resources (longer execution time, greater parallelization).

Given the importance and difficulty of this problem, the volume of research in this area is not surprising. Much more is likely to come. In choosing a visualization to use, or attempting to create a new one, it can be enormously instructive to examine this knowledge base.

Scope of the collection

That's where these pages come in. Links on this home page point to a series of brief articles on performance visualization topics. Our aim is not to provide an instruction manual on tuning, or critiques of particular software implementations of tuning methods ("tools"). Rather, we wish to illustrate how various visualization schemes have attempted to address the important issues in tuning.

We do provide brief descriptions of several tuning tools. However, the emphasis is on visualization methods, not particular implementations. We have included tools which, in our opinion, either:

  • are widely available, and provide good illustrations of one or more traditional performance visualization methods;
  • present some unique, interesting visualization; or
  • have important historical significance.
Our list is certainly not exhaustive, and reflects some editorial judgment.

How the documents are organized

This collection consists of a series of pages, each discussing a single performance tuning topic. We have organized the topics into four categories:

  • "Methods" are techniques (e.g., Gantt charts) for displaying/visualizing performance data.
  • "Tools" are software packages which provide execution tracing and/or implementations of one or more performance visualization methods.
  • "Sources or publications" announce, document or review research on tools or methods.
  • "Authors" are researchers or reviewers who have contributed to this field.
You can access pages in a particular category by following the appropriate link above. Related pages are extensively cross- linked.

All pages conclude with a revision date and time. On topic pages, the revision date indicates the last modification of that particular page. On the home and category index pages, revision dates indicate the last time any document in the collection was modified.

Contact us

As this set of documents evolves, we would like to hear from you. Please send us your comments and suggestions about scope, content, etc.

HOME METHODS TOOLS AUTHORS PUBLICATIONS

Revised Tue Oct 27 16:38:50 PDT 1998

Comments and suggestions to: pancake@cs.orst.edu