Dear all, A few comments: This a MPI-2 errata based on an existing inconsistency. Therefore we do not want to rewrite the three sections. We have three sections about the three languages. Therefore we can use different wording appropriate to each language. We do not discuss more than existing MPI_ in Fortran or C, and MPI in C++. _MPI is definitely an MPI-next topic, i.e. not part of MPI-2. It is of course allowed to do it better in MPI-next. For the time being, i.e., MPI-2 errata that should be fixed before MPI-3 is done and therefore automatically in MPI-3. The current proposal is simple: C:
"Programs must not declare names (identifiers), e.g., for variables, functions, constants, macros, types, or namespaces, beginning with the prefix MPI_."
Fortran:
"Programs must not declare names, e.g., for variables, parameters, functions, derived types, or abstract interfaces, beginning with the prefix MPI_.
C++
"Programs must not declare names (identifiers), e.g., for variables, functions, constants, macros, types, in the namespace MPI."
These sentences change only the middle part of the existing sentences and fit into the sections. If you want to provide a better wording, then please provide the full sentence and check whether you need more to change in the sections. We need to come to a consensus about the wording. And the sentence on C must also fir for C++ programmers using the MPI C interface. The reservation of MPI:: in MPI-3.0 is already described in the sections about the removal of the C++ MPI interface. Therefore, the proposed wording should be enough. Okay? Rolf ----- Original Message -----
From: "N.M. Maclaren" <[email protected]> To: "Main MPI Forum mailing list" <[email protected]> Sent: Friday, August 24, 2012 7:39:04 PM Subject: Re: [Mpi-forum] Reserved MPI_ prefix & namespace in C and Fortran On Aug 24 2012, Jeremiah Willcock wrote:
What about wording to the effect of 'the name "MPI" and names beginning with "MPI_" are reserved to the MPI implementation, and names beginning with "PMPI_" are reserved to the MPI implementation when used as global-scope function names'; that suggests that they are reserved for all purposes (and thus can be used as macro names by the implementation, etc.)? That also avoids needing to enumerate all of the cases (and there are a few missing on any of the lists we've been looking at so far) and looks more like the kind of wording that is in the language standards.
I was copying the wording in the standards fairly closely; both Fortran and C use the term 'entity' to mean 'more or less anything you can declare'. Using the terminology "reserved to the MPI implementation" rather than forbidding their declaration would work equally well.
However, the term 'global-scope function names' will NOT fly, as it makes little sense in either C or Fortran and doesn't cover external variables (in C) or half a dozen classes of external name in Fortran, including COMMON blocks, modules and BIND(C) variables in modules. Also, in Fortran, functions are only one of three classes of procedure.
You might want to also reserve "_MPI" for all purposes as well (even though that name is intended to be reserved to the compiler, not a library) because of the suggestion in the past that some preprocessor symbol be defined when compiling with MPI so that applications can detect it; _MPI follows the same pattern as _OMP and already seems to be used by some applications.
Grrk. Please don't use OpenMP as a model - the MPI standard is of MUCH higher quality, and doesn't conflict with the language standards more than it has to. You could do so, but it makes little sense. Any program that uses the name _MPI in either C or Fortran is already non-conforming (i.e. illegal) and Fortran REQUIRES it to be flagged as erroneous by the compiler.
You could request compiler implementors not to use the name _MPI for other purposes, but that's about as far as you can go while remaining in touch with ppracticality.
Regards, Nick Maclaren.
_______________________________________________ mpi-forum mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
-- Dr. Rolf Rabenseifner . . . . . . . . . .. email [email protected] High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530 University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832 Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner Nobelstr. 19, D-70550 Stuttgart, Germany . (Office: Allmandring 30)