Hi, A long time ago (in 2002) we programmed here a non-blocking MPI_Igather with equivalent calls to MPI_Isend/MPI_Irecv (see the 2 attached files). A very convenient advantage of this version, is that I can do some work on the root process as soon as it start receiving data... Then, it wait for the next communication to terminate and process the received data. Now, I am looking at MPI_Igather (and all non-blocking collective MPI calls), and I am somewhat surprised (or ignorant) that I cannot have the root rank receive some data, then process it, then wait until the next "MPI_irecv" terminate... In other words, a MPI_Igather generate only 1 MPI_Request but I would like to have either "p" (with p = size of communicator) MPI_Request generated or be able to call "p" times MPI_WaitAny with the same MPI_Request... Am I normal? :) So my 3 questions are: #1- Is there a way to use MPI_Igather with MPI_WaitAny (or something else?) to process data as it is received? #2- Big question: will our implementation with MPI_Isend/MPI_Irecv scale to a large number of processes? What are the possible drawbacks of doing it like we did? #3- Why should I replace our implementation by the native MPI_Igather? Thanks! Eric _______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss