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@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
users@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                    Tel:   +39 051 6171722

g.fatigati [AT] cineca.it          
_______________________________________________
users mailing list
users@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.dontje@oracle.com