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.wiesenek...@gmail.com <mailto:gijsbert.wiesenek...@gmail.com>>

    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
    us...@open-mpi.org <mailto:us...@open-mpi.org>
    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
us...@open-mpi.org <mailto:us...@open-mpi.org>
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.don...@oracle.com <mailto:terry.don...@oracle.com>

Reply via email to