Hello,
I start my MPI application with a single process. This single MPI process
spawns various other MPI applications (having one process each) using separate
calls of MPI_Comm_spawn (I can't do a single call to spawn or use
spawn_multiple). So I have to keep track of many INTERcommunicators, which I
do so in a list.
My question:
Since I have this (possibly long) list of INTERcommunicators, what is the best
way to do a blocking recv over this list? Currently I have a loop that walks
through each node in the list, and does an MPI_Iprobe. If the probe indicates
a message, I go ahead and call MPI_Recv on that INTERcommunicator and return
the msg. If the probe indicates no message, I continue on to the next
INTERcommunicator in the list. Once the end of the list is reached, its
starts over at the beginning. The apparent problem with this method is that it
is CPU intensive.
I have looked into MPI_Irecv but it doesnt seem to fit what I want.
I appreciate any help.
Regards,
Andy Tarpley
|