- Infos im HLRS Wiki sind nicht rechtsverbindlich und ohne Gewähr -

Difference between revisions of "Valgrind"

From HLRS Platforms
Jump to navigationJump to search
Line 48: Line 48:
{{note|text= For Open MPI there exists a suppression file which can be used with the following command <pre>mpirun -np 4 valgrind --suppressions=$(dirname $(which mpirun))/../share/openmpi/openmpi-valgrind.supp  ./app</pre>}}

Revision as of 08:52, 5 October 2012

Valgrind is an award-winning instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools.
Developer: Valgrind Developers
Platforms: NEC Nehalem Cluster
Category: Debugger
License: GNU General Public License, version 2
Website: Valgrind homepage


In order to use Valgrind, you need to first load it:

module load tools/valgrind/3.6.1

To check your application with Valgrind, please use following command format (take ls command as an example):

valgrind ls

Please note, the default checking tool is Memcheck. If you want to use other tools in Valgrind, you have to specify it via --tool=<name> option.

Valgrind can also be used to check parallel application. For example, in order to check an MPI application, please follow the steps:

  • First reserve compute nodes:
qsub -I -lnodes=16:nehalem:ppn=8,walltime=1:0:0

  • Load all necessary tools:
module load tools/valgrind/3.6.1 mpi/openmpi/1.5.4-gnu-4.6.1

  • Run your MPI application with Valgrind:
mpirun -np 4 valgrind ./your_app

Note: For Open MPI there exists a suppression file which can be used with the following command
mpirun -np 4 valgrind --suppressions=$(dirname $(which mpirun))/../share/openmpi/openmpi-valgrind.supp  ./app

If you want to run Callgrind and later visualize the output in Kcachegrind, you have to do following steps:

  • Run your application with Callgrind:
valgrind --tool=callgrind ls

The above command will generate an output file with name callgrind.out.xxxx, where xxxx is the pid of the checked application.

  • Load Kcachegrind
module load tools/kcachegrind/0.7.0

  • Open Kcachegrind with the generated Callgrind output file. Or open Kcachegrind and load the callgrind file in the GUI.
kcachegrind callgrind.out.4076

You will see the Kcachegrind window similar to this:

Example of using Kcachegrind with Callgrind.

See also

External links