Notes inline. On Jul 18, 2008, at 1:02 PM, Jeff Squyres wrote:
On Jul 17, 2008, at 12:41 PM, William Gropp wrote:
There's another option. Drop the requirement that all of the predefined datatypes are predefined in all languages, but specify that they may be used (with the appropriate handle conversion) as input to any routine where it makes sense.
Just curious: if you drop the requirement for direct access to all the predefined datatypes in all languages, why do you need to specify anything else? MPI-2.1:16.3.4 (transfer of handles -- the *f2c/*c2f stuff) seems to be sufficient. Is there a need to say something more?
The implicit assumption you are making is that the existence of the handle transfer functions means that the handles can be used everywhere. You can certainly argue that nothing else is needed, but MPI 2.0 felt that it was important to make it clear that this applied to the datatype routines, even if those datatypes do not exist in the calling language. In other words, you can't have different versions of MPI_Type_xxx that only know about the predefined datatypes in the calling language. Without this clarification, we could be having that argument instead :)
Further, if we drop the requirement, do we need a "high quality implementation" note about making all predefined handles available in all languages for MPI programmer convenience? I.e., what reasonable expectation should an MPI programmer have (particularly for already- existing codes) about accessing language A's predefined handles in language B? Should they *always* call C to do the translation?
For datatypes, this includes the datatype construction routines but not the communication routines (don't use MPI_INT when sending INTEGERs with Fortran). This is what the Opaque Objects text expects.
To me, dropping the requirement sounds like we're just making the user's life hard -- a Fortran library may have to introduce C code into their project, and then figure out all the cross-language compiling and linking stuff (which is not for the meek).
It might be a whole lot simpler to specifically define which predefined handles need to be available in each language. The spectrum ranges from "all languages' predefined handles must be available in every language" to "only that language A's predefined handles must be available in language A". Suggestions?
I'm in favor of explicitly specifying the values and names (because of the need to use alternate names when their might be a conflict, as in the MPI::F_COMPLEX case), and that these have the exact same value as if the handle transfer function was used. Bill
-- Jeff Squyres Cisco Systems
_______________________________________________ mpi-22 mailing list mpi-22_at_[hidden] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-22
William Gropp Paul and Cynthia Saylor Professor of Computer Science University of Illinois Urbana-Champaign *