Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Questions about MPI_Isend
From: Terry Dontje (terry.dontje_at_[hidden])
Date: 2010-05-11 06:49:49


Gijsbert Wiesenekker wrote:
>
> On May 11, 2010, at 9:29 , Gabriele Fatigati wrote:
>
>> Dear Gijsbert,
>>
>>
>> >Ideally I would like to check how many MPI_Isend messages have not
>> been processed yet, so that I can stop >sending messages if there are
>> 'too many' waiting. Is there a way to do this?
>>
>>
>> you can check number of message pending simply using MPI_Test
>> function. It return false if the request of message is in pending
>> status. The difference with MPI_Wait is in the behaviour of these two
>> routines: MPI_Wait is blocking, MPi_Test, check and returns immediately.
>>
>> Regards.
>>
>> 2010/5/11 Gijsbert Wiesenekker <gijsbert.wiesenekker_at_[hidden]
>> <mailto:gijsbert.wiesenekker_at_[hidden]>>
>>
>> An OpenMPI program of mine that uses MPI_Isend and MPI_Irecv
>> crashes after some non-reproducible time my Fedora Linux kernel
>> (invalid opcode), which makes it hard to debug (there is no
>> trace, even with the debug kernel, and if I run it under valgrind
>> it does not crash).
>> My guess is that the kernel crash is caused by OpenMPI running
>> out if memory because too many MPI_Irecv messages have been sent
>> but not been processed yet.
>> My questions are:
>> What does the OpenMPI specification say about the behaviour of
>> MPI_Isend when many messages have been sent but have not been
>> processed yet? Will it fail? Will it block until more memory
>> becomes available (I hope not, because this would cause my
>> program to deadlock)?
>> Ideally I would like to check how many MPI_Isend messages have
>> not been processed yet, so that I can stop sending messages if
>> there are 'too many' waiting. Is there a way to do this?
>>
>> Regards,
>> Gijsbert
>>
>>
>> _______________________________________________
>> users mailing list
>> users_at_[hidden] <mailto:users_at_[hidden]>
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>
>>
>>
>>
>> --
>> Ing. Gabriele Fatigati
>>
>> Parallel programmer
>>
>> CINECA Systems & Tecnologies Department
>>
>> Supercomputing Group
>>
>> Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy
>>
>> www.cineca.it <http://www.cineca.it/> Tel: +39
>> 051 6171722
>>
>> g.fatigati [AT] cineca.it <http://cineca.it/>
>> _______________________________________________
>> users mailing list
>> users_at_[hidden] <mailto:users_at_[hidden]>
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
> I thought that successful returns from MPI_Wait or MPI_test after an
> MPI_Isend only meant that the message was received successfully by
> OpenMPI and that the buffer could be reused, and not that it was
> successfully received by the other processor. Is that correct?
>
> Gijsbert
>
Correct the completion of an MPI_Isend request only say's the message
buffer is no longer needed. You could use synchronous mode sends
MPI_Issend which requests will complete when the message is being
processed at the destination (that is matched with a received).

-- 
Oracle
Terry D. Dontje | Principal Software Engineer
Developer Tools Engineering | +1.650.633.7054
Oracle * - Performance Technologies*
95 Network Drive, Burlington, MA 01803
Email terry.dontje_at_[hidden] <mailto:terry.dontje_at_[hidden]>



picture