Table of Contents
- 2.1. Selective Instrumentation Options
- 2.2. Running an application using DynInstAPI
- 2.3. Rewriting Binaries
- 2.4. Profiling each call to a function
- 2.5. Profiling with Hardware counters
- 2.6. Using Hardware Performance Counters
- 2.7. Profiling with PerfLib
- 2.8. Running a Python application with TAU
- 2.9. pprof
- 2.10. Running a JAVA application with TAU
- 2.11. Using a tau.conf File
- 2.12. Using Score-P with TAU
- 2.13. Using UPC with TAU
Selective Instrumentation File Specification. The selective instrumentation file has the following sections, each preceded and followed by:
exclude/include list of routines and/or files for instrumentation. The list of routines to be excluded from instrumentation is specified, one per line, enclosed by
END_EXCLUDE_LIST. Instead of specifying which routines should be excluded, the user can specify the list of routines that are to be instrumented using the include list, one routine name per line, enclosed by
Similarly, files can be included or excluded with the
BEGIN_FILE_EXCLUDE_LIST, END_FILE_EXCLUDE_LIST, BEGIN_FILE_INCLUDE_LIST, and END_FILE_INCLUDE_LISTlines.
Manually editing the selective instrumentation file gives you more options. These tags allow you to control the type of instrumentation performed in certain portions of your application.
Static and Dynamic timers can be set by specifying either a range of line numbers or a routine.
static timer name="foo_bar" file="foo.c" line=17 to line=18 dynamic timer routine="int foo1(int)
Static and Dynamic phases can be set by specifying either a range of line numbers or a routine. If you do not configure TAU with
-PROFILEPHASEthese phases will be converted to regular timers.
static phase routine="int foo(int) dynamic phase name="foo1_bar" file="foo.c" line=26 to line=27
Loops in the source code can be profiled by specifying a routine in which all loop should be profiled, like:
loops file="loop_test.cpp" routine="multiply"
With Memory Profiling the following events are tracked: memory allocation, memory deallocation, and memory leaks.
memory file="foo.f90" routine="INIT"
IO Events track the size, in bytes of read, write, and print statements.
io file="foo.f90" routine="RINB"
Both Memory and IO
events are represented along with their call-stack; the length of which can
be set with environment variable
Due to the limitations of the some compilers (IBM xlf, PGI pgf90, GNU gfortran), the size of the memory reported for a Fortran Array is not the number of bytes but rather the number of elements.