TAU - Tuning and Analysis Utilities -

Tuning and Analysis Utilities

TAU

PRL

TAU Reference Guide

Updated March 3rd 2008, for use with Version 2.18.1.

Copyright © 1997-2008 Department of Computer and Information Science, University of Oregon Advanced Computing Laboratory, LANL, NM Research Centre Julich, ZAM, Germany

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of University of Oregon (UO) Research Centre Julich, (ZAM) and Los Alamos National Laboratory (LANL) not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. The University of Oregon, ZAM and LANL make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

UO, ZAM AND LANL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE UNIVERSITY OF OREGON, ZAM OR LANL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

TAU can be found on the web at: http://www.cs.uoregon.edu/research/tau


Table of Contents

1. TAU instrumentation Options
1.1. Selective Instrumentation Options
1.2. Running an application using DynInstAPI
1.3. Profiling each call to a function
1.4. Profiling with Hardware counters
1.5. Using Hardware Performance Counters
1.6. Profiling with PerfLib
1.7. Running a Python application with TAU
1.8. pprof
1.9. Running a JAVA application with TAU
2. Tracing
2.1. How to configure tracing
3. TAU Memory Profiling Tutorial
3.1. TAU's memory API options
3.2. Evaluating Memory Utilization
3.2.1. TAU_TRACK_MEMORY
3.2.2. TAU_TRACK_MEMORY_HERE
3.3. Evaluating Memory Headroom
3.3.1. TAU_TRACK_MEMORY_HEADROOM()
3.3.2. TAU_TRACK_MEMORY_HEADROOM_HERE()
3.3.3. TAU_TRACK_HEADROOM
3.4. DetectingMemoryLeaks
3.5. Memory Tracking In Fortran
3.6. TAU_TRACK_HEAP
4. Eclipse Tau Java System
4.1. Installation
4.2. Instrumentation
4.3. Uninstrumentation
4.4. Running Java with TAU
4.5. Options
5. Eclipse PTP / CDT plug-in System
5.1. Installation
5.2. Creating a Tau Launch Configuration
5.3. Selective Instrumentation
5.4. Launching a Program and Collecting Data
6. Tools
tau_compiler.sh - Instrumenting source files.
vtf2profile - Generate a TAU profile set from a vampir trace file
tau2vtf - convert TAU tracefiles to vampir tracefiles
tau2profile - convert TAU tracefiles to TAU profile files
tau2elg - convert TAU tracefiles to Epilog tracefiles
tau2slog2 - convert TAU tracefiles to SLOG2 tracefiles
tau2otf - convert TAU tracefiles to OTF tracefiles for Vampir/VNG
perf2tau - converts PerfLib profiles to TAU profile files
tau_merge - combine multiple node and or thread TAU tracefiles into a merged tracefile
tau_treemerge.pl - combine multiple node and or thread TAU tracefiles into a merged tracefile
tau_convert - convert TAU tracefiles into various alternative trace formats
tau_reduce - generates selective instrumentation rules based on profile data
tau_ompcheck - Completes uncompleted do/for/parallel omp directives
tau_poe - Instruments a MPI application while it is being executed with poe.
tau_validate - Validates a TAU installation by performing various tests on each TAU stub Makefile
tauex - Allows you to choose a tau configuration at runtime.
tau_timecorrect - Corrects and reorders the records of tau trace files.
tau_throttle.sh - This tool generates a selective instrumentation file (called throttle.tau) from a program output that has "Disabling" messages.
tau_portal.py - This tool is design to interact with the TAU web portal (http://tau.nic.uoregon.edu). There are command for upload or download packed profile files form the TAU portal.
perfdmf_configure - This tool is design to interact with the TAU web portal (http://tau.nic.uoregon.edu). There are command for upload or download packed profile files form the TAU portal.
perfdmf_createapp - Command line tool to create a application in the perfdmf database.
perfdmf_createexp - Command line tool to create a experiment in the perfdmf database.
perfdmf_loadtrial - Command line tool to loada a trial into the perfdmf database.
perfexplorer - Launches TAU's Performance Data Mining Analyzer.
perfexplorer_configure - Links perfexplorer to your perfdmf database.
taucc - C compiler wrapper for TAU
taucxx - C++ compiler wrapper for TAU
tauf90 - Fortran compiler wrapper for TAU
paraprof - Launches TAU's Java-based performance data viewer.
pprof - Quickly diplays profile data.
tau_instrumentor - automaticly instruments a source basied on information provided by pdt.
vtfconverter -
tau_setup - Launches GUI interface to configure TAU.
tau_wrap - Instruments an external library with TAU without needing to recompile
tau_pin - Instruments application at running using Intel's PIN library
I. PerfDMF
7. Introduction
7.1. Prerequisites
7.2. Installation
8. Using PerfDMF
8.1. perfdmf_createapp
8.2. perfdmf_createexp
8.3. perfdmf_loadtrial
II. ParaProf - User's Manual
9. Introduction
9.1. Using ParaProf from the command line
9.2. Supported Formats
9.3. Command line options
10. Profile Data Management
10.1. ParaProf Manager Window
10.2. Loading Profiles
10.3. Database Interaction
10.4. Creating Derived Metrics
10.5. Main Data Window
11. 3-D Visualization
11.1. Triangle Mesh Plot
11.2. 3-D Bar Plot
11.3. 3-D Scatter Plot
12. Thread Based Displays
12.1. Thread Bar Graph
12.2. Thread Statistics Text Window
12.3. Thread Statistics Table
12.4. Call Graph Window
12.5. Thread Call Path Relations Window
12.6. User Event Statistics Window
12.7. User Event Thread Bar Chart
13. Function Based Displays
13.1. Function Bar Graph
13.2. Function Histogram
14. Phase Based Displays
14.1. Using Phase Based Displays
15. Comparative Analysis
15.1. Using Comparitive Analysis
16. Miscellaneous Displays
16.1. User Event Bar Graph
16.2. Ledgers
16.2.1. Function Ledger
16.2.2. Group Ledger
16.2.3. User Event Ledger
16.3. Selective Instrumentation File Generator
17. Preferences
17.1. Preferences Window
17.2. Default Colors
17.3. Color Map
III. PerfExplorer - User's Manual
18. Introduction
19. Installation and Configuration
19.1. Available configuration options
20. Running PerfExplorer
21. Cluster Analysis
21.1. Dimension Reduction
21.2. Max Number of Clusters
21.3. Performing Cluster Analysis
22. Correlation Analysis
22.1. Dimension Reduction
22.2. Performing Correlation Analysis
23. Charts
23.1. Setting Parameters
23.1.1. Group of Interest
23.1.2. Metric of Interest
23.1.3. Event of Interest
23.1.4. Total Number of Timesteps
23.2. Standard Chart Types
23.2.1. Timesteps Per Second
23.2.2. Relative Efficiency
23.2.3. Relative Efficiency by Event
23.2.4. Relative Efficiency for One Event
23.2.5. Relative Speedup
23.2.6. Relative Speedup by Event
23.2.7. Relative Speedup for One Event
23.2.8. Group % of Total Runtime
23.2.9. Runtime Breakdown
23.3. Phase Chart Types
23.3.1. Relative Efficiency per Phase
23.3.2. Relative Speedup per Phase
23.3.3. Phase Fraction of Total Runtime
24. Custom Charts
25. Visualization
25.1. 3D Visualization
25.2. Data Summary
25.3. Creating a Boxchart
25.4. Creating a Histogram
25.5. Creating a Normal Probability Chart
26. Views
26.1. Creating Views
26.2. Creating Subviews
27. Running PerfExplorer Scripts
27.1. Analysis Components
27.2. Scripting Interface
28. Developing Inference Rules for Scripted Analysis
29. Windows
29.1. TAU on Windows
29.1.1. Installation
29.1.2. Instrumenting an application with Visual Studio C/C++
I. TAU Instrumentation API
TAU_START - Starts a timer.
TAU_STOP - Stops a timer.
TAU_PROFILE - Profile a C++ function
TAU_DYNAMIC_PROFILE - dynamic_profile a c++ function
TAU_PROFILE_CREATE_DYNAMIC - Creates a dynamic timer
TAU_CREATE_DYNAMIC_AUTO - Creates a dynamic timer for C/C++
TAU_PROFILE_DYNAMIC_ITER - Creates a dynamic timer in Fortran.
TAU_PHASE_DYNAMIC_ITER - Creates a dynamic phase in Fortran.
TAU_PROFILE_TIMER - Defines a static timer.
TAU_PROFILE_START - Starts a timer.
TAU_PROFILE_STOP - Stops a timer.
TAU_STATIC_TIMER_START - Starts a timer.
TAU_STATIC_TIMER_STOP - Starts a timer.
TAU_DYNAMIC_TIMER_START - Starts a dynamic timer.
TAU_DYNAMIC_TIMER_STOP - Starts a dynamic timer.
TAU_PROFILE_TIMER_DYNAMIC - Defines a dynamic timer.
TAU_PROFILE_DECLARE_TIMER - Declares a timer for C
TAU_PROFILE_CREATE_TIMER - Creates a timer for C
TAU_GLOBAL_TIMER - Declares a global timer
TAU_GLOBAL_TIMER_EXTERNAL - Declares a global timer from an external compilation unit
TAU_GLOBAL_TIMER_START - Starts a global timer
TAU_GLOBAL_TIMER_STOP - Stops a global timer
TAU_PHASE - Profile a C++ function as a phase
TAU_DYNAMIC_PHASE - Defines a dynamic phase.
TAU_PHASE_CREATE_DYNAMIC - Defines a dynamic phase.
TAU_PHASE_CREATE_STATIC - Defines a static phase.
TAU_PHASE_START - Enters a phase.
TAU_PHASE_STOP - Exits a phase.
TAU_DYNAMIC_PHASE_START - Enters a DYNAMIC_PHASE.
TAU_DYNAMIC_PHASE_STOP - Enters a DYNAMIC_PHASE.
TAU_STATIC_PHASE_START - Enters a STATIC_PHASE.
TAU_STATIC_PHASE_STOP - Enters a STATIC_PHASE.
TAU_GLOBAL_PHASE - Declares a global phase
TAU_GLOBAL_PHASE_EXTERNAL - Declares a global phase from an external compilation unit
TAU_GLOBAL_PHASE_START - Starts a global phase
TAU_GLOBAL_PHASE_STOP - Stops a global phase
TAU_PROFILE_EXIT - Alerts the profiling system to an exit call
TAU_REGISTER_THREAD - Register a thread with the profiling system
TAU_PROFILE_SET_NODE - Informs the measurement system of the node id
TAU_PROFILE_SET_CONTEXT - Informs the measurement system of the context id
TAU_PROFILE_SET_THREAD - Informs the measurement system of the THREAD id
TAU_REGISTER_FORK - Informs the measurement system that a fork has taken place
TAU_REGISTER_EVENT - Registers a user event
TAU_EVENT - Triggers a user event
TAU_REGISTER_CONTEXT_EVENT - Registers a context event
TAU_CONTEXT_EVENT - Triggers a context event
TAU_ENABLE_CONTEXT_EVENT - Enable a context event
TAU_DISABLE_CONTEXT_EVENT - Disable a context event
TAU_EVENT_SET_NAME - Sets the name of an event
TAU_EVENT_DISABLE_MAX - Disables tracking of maximum statistic for a given event
TAU_EVENT_DISABLE_MEAN - Disables tracking of mean statistic for a given event
TAU_EVENT_DISABLE_MIN - Disables tracking of minimum statistic for a given event
TAU_EVENT_DISABLE_STDDEV - Disables tracking of standard deviation statistic for a given event
TAU_REPORT_STATISTICS - Outputs statistics
TAU_REPORT_THREAD_STATISTICS - Outputs statistics, plus thread statistics
TAU_ENABLE_INSTRUMENTATION - Enables instrumentation
TAU_DISABLE_INSTRUMENTATION - Disables instrumentation
TAU_ENABLE_GROUP - Enables tracking of a given group
TAU_DISABLE_GROUP - Disables tracking of a given group
TAU_PROFILE_TIMER_SET_GROUP - Change the group of a timer
TAU_PROFILE_TIMER_SET_GROUP_NAME - Changes the group name for a timer
TAU_PROFILE_TIMER_SET_NAME - Changes the name of a timer
TAU_PROFILE_TIMER_SET_TYPE - Changes the type of a timer
TAU_PROFILE_SET_GROUP_NAME - Changes the group name of a profiled section
TAU_INIT - Processes command-line arguments for selective instrumentation
TAU_PROFILE_INIT - Processes command-line arguments for selective instrumentation
TAU_GET_PROFILE_GROUP - Creates groups based on names
TAU_ENABLE_GROUP_NAME - Enables a group based on name
TAU_DISABLE_GROUP_NAME - Disables a group based on name
TAU_ENABLE_ALL_GROUPS - Enables instrumentation in all groups
TAU_DISABLE_ALL_GROUPS - Disables instrumentation in all groups
TAU_GET_EVENT_NAMES - Gets the registered user events.
TAU_GET_EVENT_VALS - Gets user event data for given user events.
TAU_GET_COUNTER_NAMES - Gets the counter names
TAU_GET_FUNC_NAMES - Gets the function names
TAU_GET_FUNC_VALS - Gets detailed performance data for given functions
TAU_ENABLE_TRACKING_MEMORY - Enables memory tracking
TAU_DISABLE_TRACKING_MEMORY - Disables memory tracking
TAU_TRACK_MEMORY - Initializes memory tracking system
TAU_TRACK_MEMORY_HERE - Triggers memory tracking at a given execution point
TAU_ENABLE_TRACKING_MEMORY_HEADROOM - Enables memory headroom tracking
TAU_DISABLE_TRACKING_MEMORY_HEADROOM - Disables memory headroom tracking
TAU_TRACK_MEMORY_HEADROOM - Track the headroom (amount of memory for a process to grow) by periodically interrupting the program
TAU_TRACK_MEMORY_HEADROOM_HERE - Takes a sample of the amount of memory available at a given point.
TAU_SET_INTERRUPT_INTERVAL - Change the inter-interrupt interval for tracking memory and headroom
CT - Returns the type information for a variable
TAU_TYPE_STRING - Creates a type string
TAU_DB_DUMP - Dumps the profile database to disk
TAU_DB_DUMP_INCR - Dumps profile database into timestamped profiles on disk
TAU_DB_DUMP_PREFIX - Dumps the profile database into profile files with a given prefix
TAU_DB_PURGE - Purges the performance data.
TAU_DUMP_FUNC_NAMES - Dumps function names to disk
TAU_DUMP_FUNC_VALS - Dumps performance data for given functions to disk.
TAU_DUMP_FUNC_VALS_INCR - Dumps function values with a timestamp
TAU_PROFILE_STMT - Executes a statement only when TAU is used.
TAU_PROFILE_CALLSTACK - Generates a callstack trace at a given location.
TAU_TRACE_RECVMSG - Traces a receive operation
TAU_TRACE_SENDMSG - Traces a receive operation
TAU_PROFILE_PARAM1L - Creates a snapshot of the current apllication profile
TAU_PROFILE_SNAPSHOT - Creates a snapshot of the current apllication profile
TAU_PROFILE_SNAPSHOT_1L - Creates a snapshot of the current apllication profile
TAU_PROFILER_CREATE - Creates a profiler object referenced as a standard pointer
TAU_PROFILER_START - starts a profiler object created by
TAU_PROFILER_STOP - stops a profiler object created by
TAU_PROFILER_GET_CALLS - Gets the number of times this timer, created by , is started.
TAU_PROFILER_GET_CHILD_CALLS - Gets the number of calls made while this timer was running
TAU_PROFILER_GET_INCLUSIVE_VALUES - Returns the inclusive amount of a metric spend by this timer.
TAU_PROFILER_GET_EXCLUSIVE_VALUES - Returns the exclusive amount of a metric spend by this timer.
TAU_PROFILER_GET_COUNTER_INFO - Returns information about all the timers created.
II. TAU Mapping API
TAU_MAPPING - Encapsulates a C++ statement for profiling
TAU_MAPPING_CREATE - Creates a mapping
TAU_MAPPING_LINK - Creates a mapping link
TAU_MAPPING_OBJECT - Declares a mapping object
TAU_MAPPING_PROFILE - Profiles a block based on a mapping
TAU_MAPPING_PROFILE_START - Starts a mapping timer
TAU_MAPPING_PROFILE_STOP - Stops a mapping timer
TAU_MAPPING_PROFILE_TIMER - Declares a mapping timer
A. Environment Variables

List of Figures

4.1. TAUJava Options Screen
4.2. TAUJava Project Instrumentation
4.3. TAUJava Running
5.1. TAU Setup
5.2. TAU Launch Configuration
5.3. Optional User Defined Events
5.4. Adding User Defined Events
10.1. ParaProf Manager Window
10.2. Loading Profile Data
10.3. Creating Derived Metrics
10.4. Main Data Window
10.5. Unstacked Bars
11.1. Triangle Mesh Plot
11.2. 3-D Mesh Plot
11.3. 3-D Scatter Plot
12.1. Thread Bar Graph
12.2. Thread Statistics Text Window
12.3. Thread Statistics Table, inclusive and exclusive
12.4. Thread Statistics Table
12.5. Thread Statistics Table
12.6. Call Graph Window
12.7. Thread Call Path Relations Window
12.8. User Event Statistics Window
12.9. User Event Thread Bar Chart Window
13.1. Function Bar Graph
13.2. Function Histogram
14.1. Initial Phase Display
14.2. Phase Ledger
14.3. Function Data over Phases
15.1. Comparison Window (initial)
15.2. Comparison Window (2 trials)
15.3. Comparison Window (3 threads)
16.1. User Event Bar Graph
16.2. Function Ledger
16.3. Group Ledger
16.4. User Event Ledger
16.5. Selective Instrumentation Dialog
17.1. ParaProf Preferences Window
17.2. Edit Default Colors
17.3. Color Map
21.1. Selecting a dimension reduction method
21.2. Entering a minimum threshold for exclusive percentage
21.3. Entering a maximum number of clusters
21.4. Selecting a Metric to Cluster
21.5. Confirm Clustering Options
21.6. Cluster Results
21.7. Cluster Membership Histogram
21.8. Cluster Membership Scatterplot
21.9. Cluster Virtual Topology
21.10. Cluster Average Behavior
22.1. Selecting a dimension reduction method
22.2. Entering a minimum threshold for exclusive percentage
22.3. Selecting a Metric to Cluster
22.4. Correlation Results
22.5. Correlation Example
23.1. Setting Group of Interest
23.2. Setting Metric of Interest
23.3. Setting Event of Interest
23.4. Setting Timesteps
23.5. Timesteps per Second
23.6. Relative Efficiency
23.7. Relative Efficiency by Event
23.8. Relative Efficiency one Event
23.9. Relative Speedup
23.10. Relative Speedup by Event
23.11. Relative Speedup one Event
23.12. Group % of Total Runtime
23.13. Runtime Breakdown
23.14. Relative Efficiency per Phase
23.15. Relative Speedup per Phase
23.16. Phase Fraction of Total Runtime
24.1. The Custom Charts Interface
25.1. 3D Visualization of multivariate data
25.2. Data Summary Window
25.3. Boxchart
25.4. Histogram
25.5. Normal Probability
26.1. Potential scalability data organized as a parametric study
26.2. Selecting a table
26.3. Selecting a column
26.4. Selecting an operator
26.5. Selecting a value
26.6. Entering a name for the view
26.7. The completed view
26.8. Selecting the base view
26.9. Completed sub-views