Chapter 1. Tau Instrumentation

TAU provides three methods to track the performance of your application. Library interposition using tau_exec, compiler directives or source transformation using PDT. Here is a table that lists the features/requirement for each method:

Table 1.1. Different methods of instrumenting applications

Method Requires recompiling Requires PDT Shows MPI events Routine-level event Low level events (loops, phases, etc...) Throttling to reduce overhead Ability to exclude file from instrumentation Ability to exclude other regions of code
Interposition     Yes     Yes    
Compiler Yes   Yes Yes   Yes Yes  
Source Yes Yes Yes Yes Yes Yes Yes Yes
The requirements for each method increases as we move down the table: tau_exec only requires a system with shared library support. Compiler based instrumentation requires re-compiling that target application and Source instrumentation aditionally requires PDT. For this reason we often recommend that users start with Library interposition and move down the table if more features are needed.

1.1. Dynamic instrumentation through library pre-loading

Dynamic instrumentation is achieved through library pre-loading. The libraries chosen for pre-loading determine the scope of instrumentation. Some options include tracking MPI, io, memory, cuda, opencl library calls. MPI instrumentation is included by default the others are enabled by command-line options to tau_exec. More info at the tau_exec manual page. Dynamic instrumentation can be used on both uninstrumented binaries and binaries instrumented via one of the methods below, in this way different layers of instrumentation can be combined.

To use tau_exec place this command before the application executable when running the application. In this example IO instrumentation is requested.

%> tau_exec -io ./a.out
%> mpirun -np 4 tau_exec -io ./a.out