Chapter 3. Tracing

Table of Contents

3.1. How to configure tracing

3.1. How to configure tracing

TAU must be configured with the -TRACE option to generate event traces. This can be used in conjunction with -PROFILE to generate both profiles and traces. The traces are stored in a directory specified by the environment variable TRACEDIR, or the current directory, by default. The environment variables TAU_TRACEFILE may be used to specify the name of Vampir trace file. When this variable is set, trace files are automatically merged and the tau2vtf is invoked to convert the merged trace file to VTF3 trace format. This conversion takes place on node 0, thread 0. The intermediate trace files are deleted. To retain the trace files, the user can set the environment variable TAU_KEEP_TRACEFILES to true. When TAU_TRACEFILE is not specified, the user needs to merge and convert the traces as below. Example:

% ./configure -arch=sgi64 -TRACE  -mpi -vtf=/usr/local/vtf3-1.34 -slog2
% make clean; make install
% setenv TRACEDIR /users/sameer/tracedata/experiment56
% mpirun -np 4 matrix
    

This generates files named

tautrace.<node>.<context>.<thread>.trc and events.<node>.edf
    

When generating a Vampir Trace Format (otf or vtf) these environment variables maybe helpful:

  • VT_FILE_PREFIXPrefix used for trace filenames. Default is "a".

  • VT_COMPRESSIONWrite compressed trace files? Default is "yes"

Using the utility tau_treemerge.pl, these traces are then merged as shown below:

% tau_treemerge.pl

This generates tau.trc as the merged trace file and tau.edf as the merged event description file.

tau_treemerge.pl can take an optional argument (with -n <value>) to specify the maximum number of trace files to merge in each invocation of tau_merge. If we need to merge 2000 trace files and if the maximum number of open files specified by unix is 250, tau_treemerge.pl will incrementally merge the trace files so as not to exceed the number of open file descriptors. This is important for the IBM BlueGene/L machine where such restrictions are present on the front-end node.

To convert merged or per-thread traces to another trace format, the utilities, tau2otf, tau_convert, tau2vtf, or tau2slog2 are used as shown below:

Usage: tau2otf [ -n  streams  ] [ -nomessage  ] [ -v  ] [ -z ]
 -n streams : Specifies the number of output streams (default is 1)
 -nomessage : Suppresses printing of message information in the trace
 -v         : Verbose mode sends trace event descriptions to the standard output
 as they are converted
 -z         : Compressed output

Here is an example:

%> tau2otf tau.trc tau.edf out.otf

Converting to Vampir's VTF format:

% tau2vtf
Usage: tau2vtf <TAU trace> <edf file> <out file> [-a|-fa]
               [-nomessage] [-v]
 -a         : ASCII VTF3 file format
 -fa        : FAST ASCII VTF3 file format
 -nomessage : Suppress printing of message information in the trace
 -v         : Verbose
 Default trace format of <out file> is VTF3 binary
 e.g.,
 tau2vtf merged.trc tau.edf app.vpt.gz
% tau2vtf matrix.trc tau.edf matrix.vpt.gz
% vampir matrix.vpt.gz
  

To generate slog2 trace files that may be visualized using Jumpshot, we recommend using the slog2 SDK and Jumpshot bundled with TAU.

% configure -slog2 -TRACE ...
% tau2slog2
tau2slog2 converts a TAU formatted trace file to the SLOG2 format
          for Jumpshot trace visualizer
Usage: tau2slog2 <tau_tracefile> <edf_file> -o <slog_tracefile>
For e.g.,
% tau2slog2 app.trc tau.edf -o app.slog2
    

To generate traces that may be visualized using Vampir, we recommend using tau2vtf over the older tau_convert tool. tau2vtf can produce binary traces with user-defined events (hardware performance counters from PAPI etc.) while tau_convert cannot do this. Binary traces load faster in Vampir.

% tau_convert
usage: tau_convert [-alog | -SDDF | -dump | -paraver [-t] | -pv |
       -vampir [-longsymbolbugfix] [-compact] [-user|-class|-all]
       [-nocomm]] inputtrc edffile [outputtrc]
 Note: -vampir option assumes multiple threads/node
 Note: -t option used in conjunction with -paraver option assumes
       multiple threads/node

To view the dump of the trace in text form, use

% tau_convert -dump matrix.trc tau.edf

tau_convert can also be used to convert traces to the Vampir trace format. For single-threaded applications (such as the MPI application above), the -pv option is used to generate Vampir traces as follows:

% tau_convert -pv matrix.trc tau.edf matrix.pv
% vampir matrix.vpt.gz &

To convert TAU traces to SDDF or ALOG trace formats, -SDDF and -alog options may be used. When multiple threads are used on a node (as with -jdk, -pthread or -tulipthread options during configure), the -vampir option is used to convert the traces to the vampir trace format, as shown below:


% tau_convert -vampir smartsapp.trc tau.edf smartsapp.pv
% vampir smartsapp.pv &

To convert to the Paraver trace format, use the -paraver option for single threaded programs and -paraver -t option for multi-threaded programs.

NOTE: To ensure that inter-process communication events are recorded in the traces, in addition to the routine transitions, it is necessary to insert TAU_TRACE_SENDMSG and TAU_TRACE_RECVMSG macro calls in the source code during instrumentation. This is not needed when the TAU MPI wrapper library is used.

Vampir format traces may be converted to TAU profiles using the vtf2profile tool.

% vtf2profile -f matrix.vpt.gz -p profiledatadir
% vtf2profile
Usage: vtf2profile [options]
***************************HELP***************************
* '-h' display this help text.                         *
* '-c' open command line interface.                    *
* '-f' used as -f <VTF File> where                     *
*        VTF File is the name of the trace file          *
*        to be converted to TAU profiles.                *
* '-p' used as -p <path> where 'path' is the relative  *
*        path to the directory where profiles are to     *
*        stored.                                         *
* '-i' used as -i <from> <to> where 'from' and 'to' are*
*        integers to mark the desired profiling interval.*
**********************************************************