Re: [Mpi-22] Should all constants/types be availablein all languagebindings?
On Oct 24, 2008, at 2:03 PM, Supalov, Alexander wrote:
If this requirement is to be interpreted literally, then yes, the standard must define all datatypes in all languages. However, the example following this statement shows how an MPI_REAL is transformed into an equivalent C data type. Whether or not this is indeed MPI_REAL is not clear. It may well be an MPI_FLOAT.
I'm not sure what you mean -- Example 16.16 shows making a combined datatype with 1 C int and the 5 Fortran REALs. The C code never tries to use the values in the R array; it just MPI_SEND's them. Using the MPI_REAL type passed up from Fortran is the right thing to do here (vs. using MPI_FLOAT). Alternatively, if the C code knew that the buffer was 5 reals, it wouldn't need to have a type passed in from Fortran -- just the buffer. Then it could TYPE_CREATE_STRUCT with MPI_INT and MPI_REAL and send using the resulting datatype. That's exactly why the datatypes are supposed to be defined in all languages, right? Not for dereferencing, but for sending/receiving data that originally came from another language. The way I read Hubert's text (p483:46-47), none of us are 2.1 compliant because we don't offer *all* the datatypes in all languages. Right?
By the way, this example shows that MPI::Fint may be necessary: MPI_Fint is used here to pass Fortran datatype thru the C function boundary. Imagine a C++ function. There was a ticket #4 calling for removal of the MPI::Fint until it was redefined.
Why not use MPI_Fint? -- Jeff Squyres Cisco Systems
participants (1)
-
unknown@example.com