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