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