The evolving requirements for the use of high-performance parallel computing systems are presenting new challenges for programming environment technology. The environment is representative of a new class of collaborative program and performance tools that, fundamentally, are integrated into a parallel programming system and support portable, high-level program observation, analysis, and interaction. In this paper, we demonstrated how the tools can be used to explore the static program structure (class hierarchy, source code, and call graphs) and how the performance profiling tools can answer questions about dynamic system and algorithm behavior. In particular, we saw the importance of coupled program and performance analysis wherein serious bottlenecks in a code can be linked back to high-level algorithm design choices, as in the case of bitonic sort where a replacement of quicksort with bitonic merge at each merge step increased performance by nearly an order of magnitude.
Although the experience with has been exceedingly positive, there are still several important directions we want to pursue. First, there is the obvious need for a parallel debugging system that provides high-level access to program objects. Hence, much of our current work focuses on breezy, a parallel barrier breakpoint debugger that supports runtime access to pC++ program state. The breezy tool actually implements a robust infrastructure for program access upon which several external runtime tools can be built. A second direction is towards more expanded support for performance experimentation and diagnosis, particularly for scalability analysis. We are attempting to integrate a simulation-based performance extrapolation tool and a semi-automated performance diagnosis system  into the toolset. In addition, we are working on better ways to maintain a database of program measurements that record the progress of a sequence of experiments and to display comparative performance behaviors across multiple executions for different numbers of processors. Finally, we are improving the design of the tools to facilitate the transfer of the technology to other language environments, in particular HPF.
Documentation and source code for pC++, Sage++, and are available
via anonymous FTP from
in the directory
~ftp/pub/sage, or via WWW at