Open MPI logo

Open MPI User's Mailing List Archives

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

Subject: [OMPI users] About the correct use of DIET_Finalize()
From: Yves Caniou (yves.caniou_at_[hidden])
Date: 2010-05-07 00:54:20


Dear All,

My parallel application ends when each process receives a msg, done in an
async way (but my question still arise if sync comm were used, see the ref to
the manpage). Senders call MPI_Finalize() after a call to MPI_Wait() and
receivers call MPI_Finalize() after having received the message.

An execution gives me that all proc finish as planned but I obtain the
following errors (times the number of processor used)
--------------------------------
        With openMPI 1.4.2 compiled with gcc-4.5 on a Quad-Core AMD Opteron(tm)
Processor 8356
*** The MPI_Finalize() function was called after MPI_FINALIZE was invoked.
*** This is disallowed by the MPI standard.
*** Your MPI job will now abort.
Abort after MPI_FINALIZE completed successfully; not able to guarantee that
all other processes were killed!

        With openMPI 1.4.1 (debian package), Intel(R) Core(TM)2 Duo CPU P9600
*** An error occurred in MPI_Finalize
*** after MPI was finalized
*** MPI_ERRORS_ARE_FATAL (your MPI job will now abort)
Abort after MPI_FINALIZE completed successfully; not able to guarantee that
all other processes were killed!
---------------------------------

I think it comes from the fact that, as mentionned in the man of
MPI_Finalize():
        For example, a successful return from a blocking communication opera-
       tion or from MPI_Wait or MPI_Test means that the communication is com-
       pleted by the user and the buffer can be reused, but does not guarantee
       that the local process has no more work to do.

Nonetheless, if MPI_Finaliaze() is called before that the exchange of messages
really takes place, receivers wouldn't call their MPI_Finalize(), but would
just be issuing an abort thing, no?

Well, I'm perplex. When do I know when my proc can make the call to
MPI_Finalize() and obtain an execution without error messages?

Thank you for any help.

.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 
http://graal.ens-lyon.fr/~ycaniou/