Open MPI logo

Open MPI User's Mailing List Archives

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

Subject: Re: [OMPI users] About the necessity of cancelation of pending communication and the use of buffer
From: Richard Treumann (treumann_at_[hidden])
Date: 2010-05-25 09:50:54

Dick Treumann - MPI Team
IBM Systems & Technology Group
Dept X2ZA / MS P963 -- 2455 South Road -- Poughkeepsie, NY 12601
Tele (845) 433-7846 Fax (845) 433-8363

users-bounces_at_[hidden] wrote on 05/25/2010 12:03:11 AM:

> [image removed]
> [OMPI users] About the necessity of cancelation of pending
> communication and the use of buffer
> Yves Caniou
> to:
> Open MPI Users
> 05/25/2010 12:04 AM
> Sent by:
> users-bounces_at_[hidden]
> Please respond to yves.caniou, Open MPI Users
> Dear All,
> I have 2 questions on the use of the MPI API:
> 1 ** Do I have to cancel Irecv() and Isend() operations before calling
> MPI_Finalize() in the case of when MPI_Finalize() is called, I know for
> that the application has finished to compute the result, and must exit?
> A silly example would be an iterative code that Isends() a value given a
> proba, and checks if it receives a value given another proba. At the end,

> each prints a value. There's no synchronization. Do I have to track all
> Isend() and cancel them before calling MPI_Finalize()?

The MPI Standard requires that all posted communications be locally
complete before a call to MPI_Finalize. That means every non blocking send
or receive must be MPI_WAITed (or successful TESTed). If the matching
operation will never be posted because the program has done all it needs
to, then you must both MPI_CANCEL those operations and MPI_WAIT them.

This is what the standard requires but that does not mean a particular MPI
implementation will fail if you ignore the rule. If you want to write
portable MPI code, obey the rule.

> 2 ** When I use a Isend() operation, the manpage says that I can't use
> buffer until the operation completes.
> What happens if I use an Isend() operation in a function, with a buffer
> declared inside the function?
> Do I have to Wait() for the communication to finish before returning, or
> declare the buffer as a global variable?
I see somebody answered this part.
> Thank you!
> .Yves.
> --
> Yves Caniou
> Associate Professor at Université Lyon 1,
> Member of the team project INRIA GRAAL in the LIP ENS-Lyon,
> Délégation CNRS in Japan French Laboratory of Informatics (JFLI),
> * in Information Technology Center, The University of Tokyo,
> 2-11-16 Yayoi, Bunkyo-ku, Tokyo 113-8658, Japan
> tel: +81-3-5841-0540
> * in National Institute of Informatics
> 2-1-2 Hitotsubashi, Chiyoda-ku, Tokyo 101-8430, Japan
> tel: +81-3-4212-2412
> _______________________________________________
> users mailing list
> users_at_[hidden]