MPI_SIZEOF can be used only for (MPI-2.2, page 494, line 41): <type> X ! a Fortran variable of numeric intrinsic type (Note that all other MPI routines with buffers are always declared with <type> BUF(*) which should mean the same as the new TYPE(*),DIMENSION(..). Based on this, it is clear that MPI_SIZEOF is provided only for non-arrays.) MPI-2.2, page 496, line 40 shows that it can be uused also for arrays, but with the meaning of using only one element. Example INTEGER :: size, ierror INTEGER :: xtype1, xtype2 ! storage for a MPI derived datatype handle REAL(SELECT_REAL_KIND(2,5)) :: x(100) CALL MPI_SIZEOF(x, size, ierror) CALL MPI_TYPE_MATCH_SIZE(MPI_CLASS_REAL, size, xtype1, ierror) should return a datatype handle that has locally the same meaning as CALL MPI_TYPE_CREATE_F90_REAL(2,5, xtype2, ierror) The matching rules for xtype1 and xtype2 are different: - xtype1 handles in two different MPI processes match if the size is identical in these two processes. - xtype2 handles in two different MPI processes match if the arguments 2,5 are identical in these two processes;ยด the internal presentation in a heterogenous system may be different, i.e., one node may provide internally REAL*2 and size is 2, and on another node only REAL*4 is provided and size is 4. I propose, not to touch this part of the standard as long as Fortran does not provide an exactly same intrinsic SIZEOF function. Rolf ----- Original Message -----
From: "Craig E Rasmussen" <[email protected]> To: "MPI-3 Fortran working group" <[email protected]> Sent: Tuesday, May 31, 2011 8:50:35 PM Subject: Re: [MPI3 Fortran] MPI_SIZEOF question STORAGE_SIZE returns the size in bits so I'm not sure it is appropriate. I think C_SIZEOF would be better although it only works with interoperable types which I think is OK for MPI-3. But if the object is an array, C_SIZEOF returns the length (in bytes) of the entire array. I'm not sure what value MPI_SIZEOF is supposed to provide. Is it related to C?
-craig
On May 23, 2011, at 12:16 PM, Jeff Squyres wrote:
On May 23, 2011, at 10:47 AM, Bill Long wrote:
Ultimately, I'd be inclined to just scrap the routine as redundant.
This function has been there since 1996 (i.e., MPI-2).
Is it now obsolete? I.e., the Fortran instrinsic STORAGE_SIZE suitable? If so, we can deprecate the old MPI_SIZEOF function and not put it in the new MPI-3 fortran module... but it still has to be implemented in the existing MPI-2 fortran "use mpi" module (even if it's deprecated).
Can you answer Rolf's questions? I'm particularly interested in the fortran wrapper questions.
-- Jeff Squyres [email protected] For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
_______________________________________________ mpi3-fortran mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-fortran
_______________________________________________ mpi3-fortran mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-fortran
-- 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)