Hi Gilles,

Le 2015-10-21 20:31, Gilles Gouaillardet a écrit :
#3 difficult question ...
first, keep in mind there is currently no progress thread in Open MPI.
that means messages can be received only when MPI_Wait* or MPI_Test* is
invoked. you might hope messages are received when doing some
computation (overlap of computation and communication) but unfortunatly,
that does not happen most of the time.

I think you have pointed a problem with MPI usage we programmed.

We thought in fact that there were message progression done. Since, for example, we programmed all the MPI_Irecv and MPI_Isend into a class, we never force the MPI_Isend to progress until the class destructor is called. But if the communication class is an attribute of another class, it can be destroyed very lately into the program execution, leading to a deadlock...

So I have started to modify our classes to invoke MPI_Wait to make the progression happens.

No, I put an #ifdef around that code to be able to activate/deactivate it.

But I would like to know if the MPI I am using is able to do message progression or not: So how do an end-user like me can knows that? Does-it rely on hardware? Is there a #define by OpenMPI that one can uses into his code?

Thanks,

Eric

Reply via email to