Project Title

Parallel Program Analysis Framework for the ACTS Toolkit

Project Homepage



The DOE 2000 project at the University of Oregon (UO) is creating technology to assist programmers using the DOE ACTS toolkit in the analysis of and interaction with their software. Our work is targeted to four areas:

The first target areas has as its goal the implementation of performance analysis capabilities throughout the ACTS programming layers. These capabilities include profiling and tracing support, instrumentation extensions for high-level libraries, and tools to analyze and visualize measured performance data at different levels of abstraction. The goal for the second target area is to build a robust code analysis system that supports source-based operations including instrumentation, browsing, and building of program interfaces. This system will be the foundation for our entire analysis framework. In fact, the goal of the third target area is to implement a framework methodology for ACTS program analysis environments. Within this framework, tools will be made retargetable, interoperable, and extensible, so as to be able to accommodate new ACTS software and platforms and new analysis needs. Lastly, it is becoming increasingly important that program analysis tools operate during program execution. Tool interaction forms the basis for more sophisticated runtime application functionality (e.g., computational steering or model coupling) as well as for more dynamic program monitoring. This work builds upon all the other areas.


Our approach to building a robust program analysis capability for ACTS is guided by a strong need for portability between languages and across machines. The ACTS software includes components written in C, C++, and Fortran, and is intended to run on many different parallel and distributed platforms. To address these concerns, we are
  1. designing the TAU performance monitor for a general parallel program execution model based on HPC++;
  2. building a sophisticated program analysis system based on state-of-the-art parsers for C, C++, and Fortran; and
  3. defining interoperation and interactions methods for connecting tools and programs to one another.
These three project activities are roughly sequenced in this order over the three years of the project.


There were two primary goals for the first year's work on the project:

Efforts towards the first goal have produced the TAU portable profiling library [1,2]. Difficult technical challenges, particularly with respect to profiling advanced features of the C++ language such as templates, have been solved in the TAU profiling package. TAU supports a flexible parallel execution model, saving performance data for threads of different shared memory contexts that may reside on different nodes of a parallel or distributed system. In addition, the package also has been ported to numerous machines, including ASCI platforms, and takes advantage of hardware performance monitoring support where present. The TAU profiling package is part of the NERSC tools repository and was recently highlighted [4,5] to ASCI users.

The utility and ease-of-use of the TAU profiling package has resulted in an across-the-board integration of profiling in the ACTS software. The layering of ACTS software presented additional technical challenges to profiling implementation. For example, the Tulip runtime system can utilize different thread implementations. Although the profiling abstractions for Tulip are independent of the thread system, measurements of thread operation must be done with care for each thread system if overhead is to be minimized. In addition to low overhead measurement, the TAU profiling package offers software designers a profiling framework that makes it possible to associate performance with respect to the software's design and programming abstraction. TAU profiling has been already been use in important performance studies of the Tulip and SMARTS runtime systems, the POOMA and POOMA-II libraries, and the MC++, and Conejo ASCI applications.

In addition to the two first-year goals above, we also made significant advancement on the source code analysis system. Dynamic program analysis tools, such as the TAU profiler, can benefit greatly from sophisticated static program analysis support. The TAU program database toolkit (PDT) [10,13] combines a state-of-the-art C/C++ parser with two tools: an intermediate language analyzer, which produces a program database (PDB), and a PDB application programmer's interface (called DUCTAPE) [9]. The PDT makes it possible to build tools that utilizes program information, easily accessed through DUCTAPE, for their function. A first version of PDT is working and has been used to automate TAU profiling instrumentation. In addition, PDT has been used to generate scripting interfaces as part of the SILOON project [14].

The research and development accomplishments in the first year of the grant have been reported in the form of software distributions through the Advanced Computing Laboratory (ACL) of Los Alamos National Labs (LANL) [6] and in the form of technical papers [2,3] and posters [7,8,11,12].

Future Plans - FY 1999

During the second year of the TAU project, we will focus on three main development activities:

We are currently building a distributed TAU monitoring framework [15] that utilizes the HPC++ library for accessing TAU profiling data at runtime. This framework will allow performance data captured for different components of a parallel application to be dynamically queried and accessed through a high-level monitoring API.

After the work with SILOON, the PDT system is now in its second phase of development, improving support in the C++ intermediate language analyzer for tracking source location and handling constructors / destructors. We hope to begin work with a Fortran 90 frontend by May. This frontend capability is being acquired using DOE ASCI funds.

Recently, we have also develop the first version of the INTERLACE framework [16] for enabling tools and computational engines to be linked together in a common manner. Our goal here is to be able to easily wrap analysis and visualization tools for connection to a running ACTS application. The tools might be of several forms, including COTS software. As an example, we will be using INTERLACE to access distributed TAU profile data for analysis by a MatLab engine. Like the distributed TAU monitoring system, INTERLACE is built upon the HPC++ runtime system and distributed object middleware support. The INTERLACE work will be expanded during the second year to provide more generalized forms of tool interaction and interfaces with SILOON will be studied.

The human resources for the second year include two undergraduates, one Master's student, three Ph.D. graduate students, a software engineer, and the PI's. The high level of technical expertise on the TAU project has benefited greatly from internships our students have had at LANL. We plan to continue this activity; for instance, the Master's student who developed INTERLACE will be at the ACL from April to September, 1999.

Tool Availability

TAU Profiling and Tracing toolkit was released with the ACL Fall 1998 CD-ROM at SC'98. This edition of the CD-ROM can be downloaded by users from :

and it includes as an integrated scientific software development and analysis environment:

TAU can be independently downloaded from its homepage at:

Both of these urls will continue to be updated with future versions of the software.

A standalone version of the Program Database Toolkit will be released shortly. This version for C++ will work with Siloon, and TAU. It will also be available from:

Return to Index of Reports

Allen Davis Malony
Thu Feb 18 10:27:31 PST 1999