Re: new version of threads section

Marc Snir (snir@watson.ibm.com)
Fri, 14 Mar 1997 19:04:38 -0400




To: mpi-external @ mcs.anl.gov
cc: (bcc: Marc Snir/Watson/IBM Research)
Subject: Re: new version of threads section

I really like defining the new MPI_THREAD_INIT() routine as an alternative
to MPI_INIT(). Some random thoughts:

- What happens if MPI is unable to provide the requested level of
strictness? Is this an error?

***
MPI should provide as much strictness as it can, and let the user abort if
this is not enough. I shall clarify
****

- The names for the different degees of strictness are a bit of a mess; it
would not be immediately obvious to the casual observer that they are
related. So I would propose the following (still imperfect) names instead:

MPI_THREAD_SINGLE
MPI_THREAD_MULTIPLE_MAIN
MPI_THREAD_MULTIPLE_ONE
MPI_THREAD_MULTIPLE_MANY
MPI_THREAD_QUERY (see below)

*****
I am not sure these names are obvious either. Should think about it.
*****

I think it would also be nice if we specified that these values should
translate to integers with increasing values, so that programmers can just
use a simple greater-than/less-than test instead of a switch/case
statement.

***
OK
****

- Adding yet another flavor of MPI_INITIALIZED() is ugly, especially since
it breaks the symmetry that we just gave ourselves by adding
MPI_FINALIZED(). Instead, I propose that we add a MPI_THREAD_QUERY value,
which simply asks MPI_THREAD_INIT() to return the current level of
strictness, or MPI_UNDEFINED if MPI has not yet been initialized.

****
Either is OK by me -- can have a beauty contest. I have replaced the pair
INIT/INITIALIZED by THREAD_INIT/THREAD_INITIALIZED. If we go back to
MPI_THREAD_QUERY, then there is no need to allow this call before INIT.
****

- The new MPI_THREAD_MAIN() routine should more properly be named
MPI_THREAD_IS_MAIN()

*****
OK
****

- Let's do keep the argc/argv arguments out, please!

****
OK
*****

--
Eric Salo    Silicon Graphics Inc.    salo@sgi.com