TAU Tracing in SMARTS

TAU can generate traces that can be visualized using Vampir. This section describes the steps needed to configure TAU and to merge and convert traces to the Vampir trace format.

Settings

You may want to make a private copy of TAU to configure it.
% cp -r /usr/local/pooma/packages/tau2 . 
% cd tau2
Configure TAU using the -TRACE option. For e.g.,
% ./configure -c++=KCC -SGITIMERS -TRACE -tulipthread=/home/smarts/profile/smarts -smarts
% make install

The meaning of the TAU configuration options is explained in the tutorial section. Then, ensure that in $(SMARTSDIR)/lib/GNUmakefile, you place the current TAU installation directory in place of the TAUDIR variable and uncomment the lines that put $(TAUDEFS) $(TAUINC) in the CFLAGS and do likewise in $(SMARTSDIR)/examples/GNUmakefile-iris4d.

Vampir

[Smart

The above figure illustrates the scheduling of two iterates on four threads using the Smarts Sync Scheduler using the Smarts example from $(SMARTSDIR)/examples/jac/abctest. To generate the trace, we ran the example and merged the traces as follows:

% abctest 4 100 1024 4 
% tau_merge tautrace*.trc abc.trc
% tau_convert -vampir abc.trc tau.edf abc.pv
And launched Vampir with the resultant abc.pv trace.
% vampir abc.pv &

The figure shows the two iterates 6 and 2. To find the symbols associated with these we chose Preferences->Activities->Symbol Grouping....

[Symbols]

The above figure shows that symbol 2 in the global timeline display corresponds to the routine AbcIterate<Scheduler>::run(). Also, to see the dynamic callgraph on any process, we clicked on the process in the main timeline display and then clicked on Process Displays->Call Tree.

Some other views include the Parallelism view from the menu of Global Displays and the per process Activity Chart from Process Displays as shown below.

[Parallelism

Comparing Scheduling Policies

By generating event traces for two different SMARTS schedulers, we can compare the relative performance and their implementation mechanism.

[Comparison]

In the figure above, we see the global timeline display of the simple parallel scheduler (top) compared with that of the SMARTS sync scheduler (bottom).

To compile abctest for the pthread based simple parallel scheduler, we configured tau as follows:

% ./configure -c++=KCC -pthread -TRACE -SGITIMERS 

For details on using Vampir with TAU in POOMA r1, please click here, and for settings of Vampir on ASCI BlueMountain, please click here.