Hi,

OpenMPI-1.7.1 is announce support MPI-3 functionality such as non-blocking
collectives.

I have test MPI_Iallgatherv on a 8-node cluster, however, I got bad
performance. The MPI_Iallgatherv block the program for even longer time
than traditional MPI_Allgatherv.

Following is the test pseudo-code and result.

===========================

Using MPI_Allgatherv:

for( i=0; i<8; i++ )
{
  // computation
    mytime( t_begin );
    computation;
    mytime( t_end );
    comp_time += (t_end - t_begin);

  // communication
    t_begin = t_end;
    MPI_Allgatherv();
    mytime( t_end );
    comm_time += (t_end - t_begin);
}

result:
    comp_time = 811,630 us
    comm_time = 342,284 us

--------------------------------------------

Using MPI_Iallgatherv:

for( i=0; i<8; i++ )
{
  // computation
    mytime( t_begin );
    computation;
    mytime( t_end );
    comp_time += (t_end - t_begin);

  // communication
    t_begin = t_end;
    MPI_Iallgatherv();
    mytime( t_end );
    comm_time += (t_end - t_begin);
}

// wait for non-blocking allgather to complete
mytime( t_begin );
for( i=0; i<8; i++ )
    MPI_Wait;
mytime( t_end );
wait_time = t_end - t_begin;

result:
    comp_time = 817,397 us
    comm_time = 1,183,511 us
    wait_time = 1,294,330 us

==============================

>From the result, we can tell that MPI_Iallgatherv block the program for
1,183,511 us, much longer than that of MPI_Allgatherv, which is 342,284 us.
Even worse, it still take 1,294,330 us to wait for the non-blocking
MPI_Iallgatherv to finish.


- Zehan Cui

Reply via email to