Hello all!
Im with OMPI 4.0.1 and I have a strange behaviour (or at least, unexpected) 
with some non-blocking sending calls: MPI_Isend and MPI_Ibcast. I really need 
asyncronous sending so I dont use MPI_Wait after the send call (MPI_Isend or 
MPI_Ibcast); insted of this I check "on demand" with MPI_Test to verify if 
sending its or not complete. Test Im doing it sends just an int value. Here 
some code (with MPI_Ibcast):

***SENDER***

//Note that It use an intercommunicator
MPI_Ibcast(&send_some_int_data, 1, MPI_INT, MPI_ROOT, mpi_intercomm, 
&request_sender);
//MPI_Wait(&request_sender, MPI_STATUS_IGNORE); <-- I dont want this


***RECEIVER***

MPI_Ibcast(&recv_some_int_data, 1, MPI_INT, 0, parentcomm, &request_receiver);
MPI_Wait(&request_receiver, MPI_STATUS_IGNORE);

***TEST RECEPTION (same sender instance program)***

void test_reception() {

    int request_complete;

    MPI_Test(&request_sender, &request_complete, MPI_STATUS_IGNORE);

    if (request_complete) {
        ...
    } else {
        ...
    }

}

But when I invoke this test function after some time has elapsed since I sent, 
the request isnt complete and i have to invoque this test function again and 
againg... x (variable) times, until it finally its completed. Its just an int 
it was sended, just that (all on a local machine); has no sense such delay. The 
request should be completed on the first function test invocation.

If, instead of this, I uncomment the unwanted MPI_Wait (i.e. doing it like a 
synchronous request), it completes immediately, like expected.
If I send with MPI_Isend I get the same behaviour.

I dont understand whats is going on. Any help will be very appreciated.

Regards.

Martín

Reply via email to