Next: A Brief Introduction Up: TAU: A Portable Parallel Previous: TAU: A Portable Parallel

Introduction

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


mohr@cs.uoregon.edu
Mon May 23 10:02:30 PDT 1994