On Feb 2, 2012, at 1:30 PM, Darius Buntinas wrote:
>
> Hi Marc,
>
> Page 317, line 18: Can we change that to:
> "Each MPI process must call an MPI initialization routine, MPI_INIT or MPI_INIT_THREAD, exactly once."
> The way it's currently written seems a little awkward to me.
OK
>
> P318 L7: I know you're not changing the current meaning, but that sentence seems to mean that processes must call MPI_FINALIZE if it calls MPI_ABORT. I suspect the idea is that a program that calls MPI_ABORT does not "exit" but rather "aborts," but the way it's written appears contradictory to me. Can we change that to:
> "Unless there has been a call to MPI_ABORT, before each process exits, the process must call MPI_FINALIZE. Each process must ensure that all pending nonblocking communications are (locally) complete before calling MPI_FINALIZE."
OK
> P320, L1: Here you're adding the requirement that the MPI implementation must track any object it allocates. MPICH currently keeps track most objects (maybe all), but I don't think we should force that on an implementation. I feel users should clean up after themselves; any good programmer already does. Also, this requirement would mean that a buffer allocated with MPI_MEM_ALLOC is freed at MPI_FINALIZE. Do we really want to do that?
>
The example about MPI_MEM_ALLOC is not new -- it has been in the standard for a while. The text is new. I look for consistency. OK with me to say that the user should free all MPI objects (or else suffer memory leaks)-- i.e. MPI does not promise to free any resource explicitly allocated by MPI calls -- only internally used resources not visible to the programmer; OK to say MPI should clean up. Just need to make a choice (and make sure there is a "free" for each "alloc", if we make the 1st choice.).
> -d
>
> On Feb 1, 2012, at 8:33 PM, Marc Snir wrote:
>
>> <init-finalize.pdf>_______________________________________________
>> Mpi3-hybridpm mailing list
>> Mpi3-hybridpm(a)lists.mpi-forum.org
>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-hybridpm
>
>
> _______________________________________________
> Mpi3-hybridpm mailing list
> Mpi3-hybridpm(a)lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-hybridpm
Hi Marc,
Page 317, line 18: Can we change that to:
"Each MPI process must call an MPI initialization routine, MPI_INIT or MPI_INIT_THREAD, exactly once."
The way it's currently written seems a little awkward to me.
P318 L7: I know you're not changing the current meaning, but that sentence seems to mean that processes must call MPI_FINALIZE if it calls MPI_ABORT. I suspect the idea is that a program that calls MPI_ABORT does not "exit" but rather "aborts," but the way it's written appears contradictory to me. Can we change that to:
"Unless there has been a call to MPI_ABORT, before each process exits, the process must call MPI_FINALIZE. Each process must ensure that all pending nonblocking communications are (locally) complete before calling MPI_FINALIZE."
P320, L1: Here you're adding the requirement that the MPI implementation must track any object it allocates. MPICH currently keeps track most objects (maybe all), but I don't think we should force that on an implementation. I feel users should clean up after themselves; any good programmer already does. Also, this requirement would mean that a buffer allocated with MPI_MEM_ALLOC is freed at MPI_FINALIZE. Do we really want to do that?
-d
On Feb 1, 2012, at 8:33 PM, Marc Snir wrote:
> <init-finalize.pdf>_______________________________________________
> Mpi3-hybridpm mailing list
> Mpi3-hybridpm(a)lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-hybridpm
I still disagree with the idea that MPI_INIT/FINALIZE is called
per-MPI-Process. I know that this ticket does not deal with multiple MPI
processes, but unless this sort of wording is stated correctly, ticket #310
won't work.
I also see confusing phraseology that implies that MPI-processes do things
like "exit" and "make calls". I think it is going to be critical going
forward (for ticket #310) that this sort of confusion is cleared up, not
made worse. MPI Processes do not "exit" or "make calls". Only OS Processes
(threads within, actually) execute code and do things like "exit" and "make
calls". The MPI processes are the TARGETS of code executed by the OS
Process.
The big brick wall that ticket #310 will run into if we promote the idea
that "every MPI process has its own MPI_INIT/FINALIZE" is that if there are
multiple MPI processes then there is no clear way to initialize them since
there is no argument to MPI_INIT/FINALIZE that specifies the MPI Process
and there is no way to know what MPI process a thread might represent.
_______________________________________________
Douglas Miller BlueGene Messaging Development
IBM Corp., Rochester, MN USA Bldg 030-2 A401
dougmill(a)us.ibm.com Douglas Miller/Rochester/IBM
Marc Snir
<snir(a)mcs.anl.gov
> To
Sent by: mpi3-hybridpm(a)lists.mpi-forum.org,
mpi3-hybridpm-bou cc
nces(a)lists.mpi-fo
rum.org Subject
[Mpi3-hybridpm] new text for
MPI_INIT/MPI_FINALIZE
02/01/2012 08:33
PM
Please respond to
mpi3-hybridpm@lis
ts.mpi-forum.org
(See attached file: init-finalize.pdf)
_______________________________________________
Mpi3-hybridpm mailing list
Mpi3-hybridpm(a)lists.mpi-forum.org
http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-hybridpm