[mvapich-discuss] The performance of MPI_Waitall

林灯 lind at lsec.cc.ac.cn
Tue Dec 23 22:19:56 EST 2014


Hi all,
    I am a user of MVAPICH2. Recently I am trying to use non-blocking communication to cover the cost of communication. However, something unexpectable happens and I get stuck in it.  The problem focuses on the performance of MPI_Waitall.


The structure of my code is like this


for(ts = 0; ts < 2000; ts++)
{
//...
for(...)
{
//do some calculation
}
{
        sparse_ialltoallv(...);// This is a customized non-blocking neighborhood communication function like MPI_Ineighbor_alltoallv.
         // It simply uses MPI_Isend and MPI_Irecv in case that some clusters don’t provide MPI systems supporting MPI 3.0
 
//do some calculation to cover the cost of communication
//the total cost of communication is about 2.5s and the total cost of calculation is about 30s.
//Thus, I think the calculation is large enough to cover the communication.
MPI_Waitall(...);
}
//...
}


In practice, I find that the cost of communication I can cover is about 0.3s while the cost of MPI_Waitall (2000 times) is nearly up to 2.2s and both cost increase with the number of processes in my cluster. In this sense, some part of the cost of communication, e.g. the cost of MPI_Waitall, can not be covered. Is that true? What actually does MPI_Waitall do? Is there anything I can do to reduce the cost of MPI_Waitall or replace it with other MPI API(s)? 




Deng Lin








  












-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.cse.ohio-state.edu/pipermail/mvapich-discuss/attachments/20141224/cc36cc35/attachment.html>


More information about the mvapich-discuss mailing list