Hardware Reference
In-Depth Information
25.2 Features
Observing the performance of the I/O operations requires instrumenta-
tion to be inserted in the library layers of the I/O software stack, including
commonly used I/O interfaces such as POSIX I/O and MPI-IO. However,
characterization of I/O performance must also be done with respect to an
application context in order to fully understand overall performance impact.
TAU can gather performance data from the application and I/O layers to
create a unified performance perspective that shows program context infor-
mation alongside I/O statistics. It does so by instrumenting both the applica-
tion source code and the intercepting calls from the I/O layers using wrapper
libraries.
Application source code written in a variety of HPC languages (e.g., C,
C++, Fortran, UPC) can be instrumented by TAU's compiler scripts us-
ing the Program Database Toolkit (PDT) [2] source analysis technology. The
PDT-based tauinstrumentor tool inserts code into the application at se-
lected points for performance measurement. PDT can also be used to inter-
pret library header files for purposes of wrapping the interface routines with
interposition code that intercept library calls in the application, performs
measurements, and invokes the library operation. The TAU wrapping capa-
bility is applied to create wrappers for MPI-IO and POSIX I/O. In fact, these
wrapped libraries are distributed with TAU. Additional tools, such as the
taugenwrapper [5], are provided to automate the creation of external wrap-
per libraries for other I/O libraries such as HDF5. By capturing events from
several layers of wrapped libraries, TAU is able to observe the flow through
these calls and associate routine parameters captured (e.g., file ID, I/O data
size) with timing measurements to produce metrics such as the bandwidth of
read and write operations for each file. TAU can further attribute I/O costs
to specific code regions without modifying the source code of the application.
More specifically, TAU supports the following techniques for intercepting
I/O calls:
MPI-IO instrumentation,
preloading of instrumented libraries,
linker-based instrumentation, and
instrumented external libraries.
Each of these techniques is described in more detail in the following subsec-
tions.
Search WWH ::




Custom Search