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
a.out
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.


> -----Original Message-----
> From: users-boun...@open-mpi.org 
> [mailto:users-boun...@open-mpi.org] On Behalf Of Caird, Andrew J
> Sent: Tuesday, June 13, 2006 4:38 PM
> To: us...@open-mpi.org
> Subject: [OMPI users] OpenMPI, debugging, and Portland Group's pgdbg
> 
> Hello all,
> 
> I've read the thread "OpenMPI debugging support"
> (http://www.open-mpi.org/community/lists/users/2005/11/0370.ph
> p) and it
> looks like there is improved debugging support for debuggers 
> other than
> TV in the 1.1 series.
> 
> I'd like to use Portland Groups pgdbg.  It's a parallel debugger,
> there's more information at http://www.pgroup.com/resources/docs.htm.
> 
> >From the previous thread on this topic, it looks to me like 
> the plan for
> 1.1 and forward is to support the ability to launch the 
> debugger "along
> side" the application.  I don't know enough about either pgdbg or
> OpenMPI to know if this is the best plan, but assuming that it is, is
> there a way to see if it is happening?
> 
> I've tried this two ways, the first way doesn't seem to attach to
> anything:
> --------------------------------------------------------------
> ----------
> ----
> [acaird@nyx-login ~]$ ompi_info | head -2
>                 Open MPI: 1.1a9r10177
>    Open MPI SVN revision: r10177
> [acaird@nyx-login ~]$ mpirun --debugger pgdbg --debug  -np 2 cpi
> PGDBG 6.1-3 x86-64 (Cluster, 64 CPU)
> Copyright 1989-2000, The Portland Group, Inc. All Rights Reserved.
> Copyright 2000-2005, STMicroelectronics, Inc. All Rights Reserved.
> PGDBG cannot open a window; check the DISPLAY environment variable.
> Entering text mode.
> 
> pgdbg> list
> ERROR: No current thread.
> 
> pgdbg> quit
> --------------------------------------------------------------
> ----------
> ----
> 
> and I've tried running the whole thing under pgdbg:
> --------------------------------------------------------------
> ----------
> ----
> [acaird@nyx-login ~]$ pgdbg mpirun -np 2 cpi -s pgdbgscript
>   { lots of mca_* loaded by ld-linux messages }
> pgserv 8726: attach : attach 8720 fails
> ERROR: New Process (PID 8720, HOST localhost) ATTACH FAILED.
> ERROR: New Process (PID 8720, HOST localhost) IGNORED.
> ERROR: cannot read value at address 0x59BFE8.
> ERROR: cannot read value at address 0x59BFF0.
> ERROR: cannot read value at address 0x59BFF8.
> ERROR: New Process (PID 0, HOST unknown) IGNORED.
> ERROR: cannot read value at address 0x2A959BBEC8.
> --------------------------------------------------------------
> ----------
> ----
> and it hangs right there until I kill it.  The two variables in this
> scenario are:
> PGRSH=ssh and the contents of pgdbgscript are:
> --------------------------------------------------------------
> ----------
> ----
> pgienv exe force
> pgienv mode process
> ignore 12
> run
> --------------------------------------------------------------
> ----------
> ----
> 
> So, the short list of questions are:
> 
> 1. Has anyone done this successfully before?
> 2. Am I making the right assumptions about how the debugger 
> attaches to
> the processes?
> 3. Is this the expected behavior for this set of options to mpirun?
> 4. Does anyone have any suggestions for other things I might try?
> 
> Thanks a lot.
> --andy
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users
> 

Reply via email to