On 1 Sep 2010, at 23:32, Jaison Mulerikkal wrote:
> I am getting interested in this thread.
> I'm looking for some solutions, where I can redirect a task/message (MPI_send) to a particular process (say rank 1), which is in a queue (at rank 1) to another process (say rank 2), if the queue is longer at rank 1.
> How can I do it?
> First of all, I need to know the queue length at a particular process (rank 1) at a particular instant. how can I use padb to get that info?
> Then on the basis of that info 'send' some (queued up) messages (from rank 1) to some other process (say rank 2) which are relatively free. Is that possible?
The tools being discussed are for querying the state of message queues within a parallel job from outside of that job and are not suitable for the type of introspection you are talking about.
It sounds like you are looking for some kind of shared receive queue which multiple ranks can pull messages off, I can't think of anything in MPI that would allow this kind of functionality short of having a RTS/CTS protocol in the application layer. The easiest might be to had a single rank receive all messages and keep them in a queue and then use MPI_Ssend() to forward messages to your "consumer" ranks. Substitute ranks for threads in the above text as you feel is appropriate.
Ashley Pittman, Bath, UK.
Padb - A parallel job inspection tool for cluster computing