Next: A Brief Introduction
Up: TAU: A Portable Parallel
Previous: TAU: A Portable Parallel
The unavailability of comprehensive, user-oriented programming environments
is one of the foremost obstacles to the routine application of parallel,
high performance computing technology.
Most critical is the need for advances in integrated parallel
debugging, performance evaluation, and program visualization tools.
New tools must be developed to address the following
parallel programming productivity requirements:
- (R1)
- A user (program-level) view.
Past tool development has been dominated by efforts directed at the
execution level (e.g., efficient implementation of monitoring).
Consequently, tool users are given little support for
``translating'' program-level semantics to and from low-level
execution measurements and runtime data.
- (R2)
- Support for high-level, parallel programming languages.
The development of advanced parallel languages
(e.g., HPF [4] and pC++ [8])
further separates the user from execution-time reality
because of complex transformations and optimizations that
take place between the layers of language abstraction, runtime
paradigm, and execution environment.
- (R3)
- Integration with compilers and runtime systems.
The majority of debugging and performance analysis
tools have been developed independent of parallel languages and
runtime systems, resulting in poor reuse of base-level technology,
incompatibilities in tool functionality, and interface
inconsistencies in the user environment.
- (R4)
- Portability, extensibility, and retargetability.
Users of portable languages need a consistent
program development and analysis environment across multiple
execution platforms. The tools should be extensible, so their
functionality can be increased to accommodate new language or
runtime system features. Support for retargetability allows
the tool design to be easily reused for different parallel languages
and system environments.
- (R5)
- Usability.
Implementing a high-level, portable, integrated tool does not
automatically result in an easy-to-use tool. In the past, less
emphasis was put on well-designed interfaces which led
to very powerful but poorly used program analysis tools.
These requirements will become even more significant as we move towards more
general and robust high performance parallel languages with highly optimized
runtime systems.
Practically, the problems are ones of tool design technology rather
than functionality: existing tools provide a variety of functionality,
but they have not been successfully integrated into usable parallel
programming environments.
One approach to improving integration is to base the design of tools on
the particular performance and debugging requirements of the parallel language
for which the tools will be used.
In this manner, tool functionality can specifically target program analysis
support where tool application is well understood.
However, unless tool implementation can leverage other programming system
technology (e.g., the simple use of the compiler to implement
instrumentation), the integration of the tools in the environment
cannot be fully realized.
We have designed and developed a parallel program analysis environment,
(TAU, Tuning and Analysis Utilities), for a parallel,
object-oriented language system, pC++.
In this paper, we describe the
design and show how programming
productivity requirements for pC++ are addressed in its implementation.
Our goal is not to propose
itself as a general purpose solution to
parallel program analysis.
Rather, our goal is to demonstrate the potential benefits of a new development
strategy for program analysis tools, one that promotes meeting specific
analysis requirements over providing general purpose functionality.
The pC++ language system and the Sage++ restructuring toolkit that forms
the basis of the pC++ compiler are briefly described in §2.
From this description, we develop a general model of pC++ program
observability and analysis.
The
environment for pC++, presented in
§3 to §5 is based on this
model and reflects the
critical program analysis requirements of the pC++ language.
We outline the capabilities of the
tools, showing
specific instances of their application and explaining how they are
implemented in the pC++ programming environment.
Next: A Brief Introduction
Up: TAU: A Portable Parallel
Previous: TAU: A Portable Parallel