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: Gabriele Fatigati (g.fatigati_at_[hidden])
Date: 2010-05-11 06:55:02


Yes,

it's correct, but you can use number of MPI_Test fails on MPI_ISend routines
to define a limit. Remember that if you use large buffer (more than
eager_limit) send many times in a few time, maybe it's better to use
MPI_Send routine than MPI_ISend, to avoid too much buffer memory copy.

2010/5/11 Gijsbert Wiesenekker <gijsbert.wiesenekker_at_[hidden]>

>
> 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]>
>
>> 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]
>> 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 Tel: +39 051 6171722
>
> g.fatigati [AT] cineca.it
> _______________________________________________
> users mailing list
> 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
>
>
> _______________________________________________
> users mailing list
> 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                    Tel:   +39 051 6171722
g.fatigati [AT] cineca.it