TAU Portable Profiling Package Contacts:
To contact the developers of TAU, please send mail to tau [dash] bugs [at] cs.uoregon.edu or use the "Comments" section in the download page.
Tuning and Analysis Utilities: TAU
TAU is a program and performance analysis tool framework being developed for the DOE Office of Science, ASC initiatives at LLNL, the ZeptoOS project at ANL, and the Los Alamos National Laboratory. TAU provides a suite of static and dynamic tools that provide graphical user interaction and inter-operation to form an integrated analysis environment for parallel Fortran, C++, C, Java, and Python applications. In particular, a robust performance profiling facility available in TAU has been applied extensively in the ACTS toolkit. Also, recent advancements in TAU's code analysis capabilities have allowed new static tools to be developed, such as an automatic instrumentation tool. These two features of the TAU framework are described below.
TAU Portable Profiling Package
The model that TAU uses to profile parallel, multi-threaded programs maintains performance data for each thread, context, and node in use by an application. The profiling instrumentation needed to implement the model captures data for C++ functions, methods, basic blocks, and statement execution at these levels. The instrumentation is complicated, however, by advanced features in the C++ language, such as templates and namespaces. All C++ language features are supported in the TAU profiling instrumentation, which is available through an API at the library or application level. The API also provides selection of profiling groups for organizing and controlling instrumentation. ACTS software layers have been instrumented and support for thread profiling has been recently added.
From the profile data collected, TAU's profile analysis procedures can generate a wealth of performance information for the user. It can show the exclusive and inclusive time spent in each function with nanosecond resolution. For templated entities, it shows the breakup of time spent for each instantiation. Other data includes how many times each function was called, how many profiled functions did each function invoke, and what the mean inclusive time per call was. Time information can also be displayed relative to nodes, contexts, and threads. Instead of time, hardware performance data can be shown. Also, user-level profiling is possible.
TAU's profile visualization tool, paraprof, provides graphical displays of all the performance analysis results, in aggregate and per node/context/thread form. The user can quickly identify sources of performance bottlenecks in the application using the graphical interface. In addition, TAU can generate event traces that can be displayed with the Vampir trace visualization tool.
TAU Code Analysis Package
The TAU static analysis tools are based on PDT, a Fortran, and C/C++ code analysis system built using a combination of Edison Design Group's C++ front end, edgcpfe, which produces an intermediate language (IL) representation, an IL converter tool, taucpdisp, which generates a more descriptive C++ program database (PDB), and a C++ library, ductape, for processing and merging PDB files, among other interesting things. Other parsers included in PDT are GNU gfortran, Cleanscape Flint Fortran, and Mutek Fortran 90 parser. With these tools, TAU provides tools that support sophisticated views of program structure, incorporating the latest C++ language features such as templates, namespaces, and exceptions. Currently, the code analysis systems have been used to analyze C++ source to automatically generate TAU profiling instrumentation.
TAU is being developed jointly by the University of Oregon, Los Alamos National Laboratory, and Research Centre Jülich, ZAM, Germany.