Memcheck: a memory error detector
4.9.2. Getting started
Compile your MPI application as usual, taking care to link it using the same
mpicc
that your Valgrind build was
configured with.
Use the following basic scheme to run your application on Valgrind with the wrappers engaged:
MPIWRAP_DEBUG=[wrapper-args]
\
LD_PRELOAD=$prefix/lib/valgrind/libmpiwrap-<platform>.so
\
mpirun [mpirun-args]
\
$prefix/bin/valgrind [valgrind-args]
\
[application] [app-args]
As an alternative to
LD_PRELOAD
ing
libmpiwrap-<platform>.so
, you can simply link it to your application
if desired. This should not disturb native behaviour of your application in any way.
4.9.3. Controlling the wrapper library
Environment variable
MPIWRAP_DEBUG
is consulted at startup. The default behaviour is to print a starting banner
valgrind MPI wrappers 16386: Active for pid 16386
valgrind MPI wrappers 16386: Try MPIWRAP_DEBUG=help for possible options
and then be relatively quiet.
You can give a list of comma-separated options in
MPIWRAP_DEBUG
. These are
•
verbose
: show entries/exits of all wrappers. Also show extra debugging info, such as the status of outstanding
MPI_Request
s resulting from uncompleted
MPI_Irecv
s.
•
quiet
: opposite of
verbose
, only print anything when the wrappers want to report a detected programming
error, or in case of catastrophic failure of the wrappers.
•
warn
: by default, functions which lack proper wrappers are not commented on, just silently ignored. This causes
a warning to be printed for each unwrapped function used, up to a maximum of three warnings per function.
•
strict
: print an error message and abort the program if a function lacking a wrapper is used.
73