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:
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) . 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 .
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)  and in the form of technical papers [2,3] and posters [7,8,11,12].
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  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  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.
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:
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: