Hello
I got a problem with my code, wich run some kinf of a simulator.
I get 4 worker (aka 4 mpi process ) wich process data.
These data aren't available at the same time, so i get another
process (Splitter) wich send chunk of data to each process in round
robin.
This work well using MPI_Send and Receive but aftet that i need to
reduce all the data.
I hope to be able to use MPI_Reduce to reduce all data from all
worker but there is a problem :
1. All results data aren't available at the same time, dut to the
delay from the original data delay.
2. I cannot wait all data to be computed, i need to proceed the
reduce a soon as possible
So when the first and second worker have finished, i can reduce the
two results data and keep the results on the first worker.
And when the third and the fourth have finished, i can reduce these
two too, and keep results on third worker.
At last i need to reduce data from first and third worker.
The only way to do that using MPI_Reduce is to create
"communicators".
All i want is :
commA : contain W1 W2
commB : contain W3 W4
commC : contain W1 W3
Let's say i've already create a communicator only for my workers
I can easily add this line in all my workers :
MPI_Comm_Split(workers_comm,(int)(workerId/2),rank,CommAlpha)
If i understand well i will get an communicator on W1 and W2 wich
contains W1 and W2, and a communicator on W3 and W4 wich contains
W3 and W4. Am i right?
But next when i try to use (only on W1 and W3):
MPI_Create_comm(MPI_Comm workers_comm,group,commC),
I need also to call MPI_Create_comm on W2 and W4 or it will
block. Why?
After that, i got lot of non persistent error depending of the
number of worker i want to use.
So is this allowed to create and use overlapping communicator?
and if so how to do that?
Thanks
Mathieu