Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ptp-dev] Some questions about runtime model,sdm

Great questions.

On Sep 3, 2006, at 10:03 PM, yang ke wrote:

Hi,all
I ' ve just managed to launch a parallel job across multiple nodes by a small change in orte_server.c. :-) I know that our v1.1 is coming in the near weeks, and it has been made great change from v1.0, still I have some questions, hope it will be helpful.

1. About Runtime Model
Nathan, I think asychronous updating will be better for the runtime model esp. for job launching. Currently we use a <RUN ...> command follwed by a <GETPATTR ...> command to BLOCKLY launch a job and then to construct its job structure, which often makes the user staring at a Progress Bar for a boringly long time to go on operate. The runtime can quickly return a job id, but other attributes,like process pid(real pid),would not be returned soon (maybe after all tasks launched). We can make better use of this knowledge for finer monitoring of job status: process status. First construct the job structure on higher layer model (java),then LISTEN to lower layer(such as slurm or orte) to return attribute events.The lower layer should have good sense of process attributes and status changes, and report process attributes and status changes timely. Anytime there occurs some error,we can find out which process fails instead of a whole job error. I have tested that on SLURM,but I doesn't know if ORTE supports such process status report.Will we get such changes?

See Nathans/my reply in separate email.


2. About Scalable Debugger Manager
recently I study a paper-
"Extending a traditional debugger to debug massively parallel applications",Susanne M.Balle,Journal of Parallel and Distributed Computing 64(2004) 617-628

It suggests some good practice on improving debugging preformance.
PS: Greg's "architeture of a parallel relative debugger" is listed in the References. :-)

I looked into the source of sdm, and I am afraid sdm client may be a bottleneck when issuing debug instructions to servers and receiving debug responses from servers, for it has to finish a set of processes one by one. If we are to debug 10K processes, sdm client will be busy dispatching a deubg instruction and will be buried in a flood of reponses. Fortunately, implementation of sdm in MPI way fills me with courage. We can dispatch debug instructions in a way similar with MPI_BCAST() and aggregate debug responses with MPI_GATHER(). Alternately, we can adopt some idea from Susanne's paper,for example,we use a tree-like network to dispatch and aggregate.

Again,from that paper, I find out there are 3 types of debugging messages:
Type1------Identical outputs from each of the debugger/aggregators
Type2------Identical outputs apart from containing different numbers
Type3------Widely differing outputs
sdm has made Type 1 aggregations,using hash table(so cool!),but Type 2 still needs to be aggregated,so I hope future sdm work out some way to aggregate Type 2 messages.

I recently checked in a change to the SDM that does pretty much what you describe. I allocate task ID's based on the optimal broadcast strategy, then each MPI process sends to a small set of processes rather than one controller process sending to everyone. So for example, if there are 10 processes (task ID's 0-9), 0 would send to (1, 2, 4, 8), 1 would send to (3, 5, 9), 2 to 6, and 3 to 7.

For the return journey, I aggregate messages at each of the intermediate processes as they propagate back to the root process. This substantially reduces the amount of traffic in the network. Of course, it is always possible for every message to be different, in which case this approach is no better than the simply passing each message back. However in practice this seems to rarely occur.

Take a look at src/client/client_svr.c in the SDM project which is where most of this is implemented. Comments appreciated.


3. About Open MP debugging support
PTP now supports MPI debugging well.Does future PTP support Open MP debugging? If so, how?
Can we still use gdb?

By Open MP debugging, I assume that you really mean a threaded model? The SDM is really designed for MPI debugging, so for threaded models and other more complex architectures (for example the Cell), I think the SDM will need to be replaced with different backends. I don't see any reason why any debugger with thread support (such as dbx) couldn't be used to support OpenMP debugging. The Eclipse UI portion of the debugger should (hopefully) not need to be changed much, though we might want to extend the parallel debug view to support threads as well as processes. The debugger API provides a bitmask in each command to specify which processes the command applies to, so it should work equally well for threads.

If gdb thread support is good enough then it should work too.

Hope to see ptp v1.1 soon, and good luck to you.

How low will we go? Check out Yahoo! Messenger’s low PC-to-Phone call rates.
_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev



Back to the top