This took a long time for me to get to, but once I did, what I found was
that the closest thing to working for the PGI compilers with OpenMPI is
mpirun --debugger "pgdbg @mpirun@ @mpirun_args@" --debug -np 2 ./cpi
It appears to work, that is, you can select a process with the "proc"
command in pgdbg and set break points and all, but pgdbg prints a lot of
error messages that are all the same:
db_set_code_brk : DiBreakpointSet fails
which is sort of annoying, but didn't impede my debugging of my 100-line
MPI test program.
I posted this to the PGI Debugger Forum:
and got a response saying (hopefully Mat doesn't mind me quoting him)::
> Hi Andy,
> Actually I'm pleasantly surprised that PGDBG works at all with OpenMPI
> since PGDBG currently only supports MPICH. While we're planning on
> adding OpenMPI and MPICH-2 support later this year, in the immediate
> future, there isn't a work around this problem, other than to use
So I guess the short answer is that is might sort of work if you really
need it, otherwise it's best to wait a little while.
On Fri, 16 Jun 2006, Jeff Squyres (jsquyres) wrote:
> I'm afraid that I'm not familiar with the PG debugger, so I don't know
> how it is supposed to be launched.
> The intent with --debugger / --debug is that you could do a single
> invocation of some command and it launches both the parallel debugger
> and tells that debugger to launch your parallel MPI process (assumedly
> allowing the parallel debugger to attach to your parallel MPI process).
> This is what fx2 and Totalview allow, for example.
> As such, the "--debug" option is simply syntactic sugar for invoking
> another [perhaps non-obvious] command. We figured it was simpler for
> users to add "--debug" to the already-familiar mpirun command line than
> to learn a new syntax for invoking a debugger (although both would
> certainly work equally well).
> As such, when OMPI's mpirun sees "--debug", it ends up exec'ing
> something else -- the parallel debugger command. In the example that I
> gave in http://www.open-mpi.org/community/lists/users/2005/11/0370.php,
> mpirun looked for two things in your path: totalview and fx2.
> For example, if you did this:
> mpirun --debug -np 4 a.out
> If it found totalview, it would end up exec'ing:
> totalview @mpirun@ -a @mpirun_args@
> which would get substituted to
> totalview mpirun -a -np 4 a.out
> (note the additional "-a") Which is the totalview command line syntax to
> launch their debugger and tell it to launch your parallel process. If
> totalview is not found in your path, it'll look for fx2. If fx2 is
> found, it'll invoke:
> fx2 @mpirun@ -a @mpirun_args@
> which would get substitued to
> fx2 mpirun -a -np 4 a.out
> You can see that fx2's syntax was probably influenced by totalview's.
> So what you need is the command line that tells pgdbg to do the same
> thing -- launch your app and attach to it. You can then substitute that
> into the "--debugger" option (using the @mpirun@ and @mpirun_args@
> tokens), or set the MCA parameter "orte_base_user_debugger", and then
> use --debug. For example, if the pgdbg syntax is similar to that of
> totalview and fx2, then you could do the following:
> mpirun --debugger pgdbg @mpirun@ -a @mpirun_args@ --debug -np 4
> or (assuming tcsh)
> shell% setenv OMPI_MCA_orte_base_user_debugger "pgdbg @mpirun@
> -a @mpirun_args@"
> shell% mpirun --debug -np 4 a.out
> Make sense?
> If you find a fixed format for pgdb, we'd be happy to add it to the
> default value of the orte_base_user_debugger MCA parameter.
> Note that OMPI currently only supports the Totalview API for attaching
> to MPI processes -- I don't know if pgdbg requires something else.