Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] complete newbie question regarding --enable-mpi-profile option
From: Nifty Tom Mitchell (niftyompi_at_[hidden])
Date: 2009-06-16 13:08:49

On Tue, Jun 16, 2009 at 12:49:52AM +0530, Leo P. wrote:
> Hi Eugene,
> Thanks for the information. And i had already clicked on the "Show
> All" button in the profiler before i send an email to the group. But
> it did not work :(
> Also Eugene, can you please help me understand what does turning on -g
> option mean.

The -g compiler flag instructs the compiler to keep or add symbolic debugging
information to the objects that it generates. These symbols permit a debugger
(like gdb) to look up the address of a function's or data object by name.

This symbolic information can exist both in your program's a.out file
and also in the shared libs that it links to at run time. The shared
lib topic is why a debugger can walk through your program (compiled -g) then
be no help when it branches into the shared library. In the world
of MPI the mpilibrary in addition to your mpiprogram need to be compiled -g
if you wish to understand actions inside the mpilibrary. Further the
program runs on a system that can be different than the one on which it
was compiled which is important because many users forget that each rank
needs to link to symbol rich objects for symbolic debugging.

> Currently i am building the system with the following
> option
> ./configure --with-devel-headers --enable-trace --enable-mpi-profile
> --enable-mem-debug --enable-debug
> Do i need to add something additional here ?
> Also i don't understand what you mean by tool ecosystem. [I am a
> complete newbie ]

Tools can prove interesting. It is possible to have a compiler,
symbol rich shared objects and more on your desktop were you compile
your program and only have the bare minimum of objects on the hosts
that you are running on. You can have gdb on your desktop but
to debug rank-99 you need gdb and symbol rich objects on the remote
node that rank-99 gets launched on... To this end it can make a
lot of sense to debug a minimum number of ranks on a local system
with all the tools at hand.

I should note that gdb is only one possible debugger. gcc is only
one possible compiler.... You ecosystem is the list of tools used
and tools that can be used on each node/ rank.

Do keep it simple... clustermonkey (
has numerous beginner pages. Also look for simple benchmark
and other simple MPI programs to explore. If you cannot compile
and debug MPI's helloworld there is little hope in getting
larger programs running.

Debugging MPI jobs has a serious learning curve for a beginner. Keep good notes...

N.B. clusermonkey is a ".net" site.

	T o m  M i t c h e l l 
	Found me a new hat, now what?