Re: [MPI3 Fortran] MPI-2.1: Fortran 90 bindings
Note that if you declare the argument in the binding to be DIMENSION(*) then the programmer can pass ANY dimension array using A(1,1,1), etc. Not quite natural. The different types and kinds is still an issue. Steve -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Jeff Squyres Sent: Thursday, March 06, 2008 12:35 PM To: MPI-3 Fortran working group Subject: Re: [MPI3 Fortran] MPI-2.1: Fortran 90 bindings Importance: Low On Mar 6, 2008, at 11:13 AM, Harald Klimach wrote:
I don't know how those 15 intrinsic types are coming from. As far as I know there are 5 intrinsic types in Fortran 90: integer, real, complex, logical and character. Each of them can theoretically an unlimited number of kinds. As far as I understand it MPI allows to use the following: integer*1, *2, *4, *8, *16 real*4, *8, *16 complex*4, *8, *16 logical character Which adds up to 13 in total. But most propably I'm missing the remaining 2.
In the paper, we have a footnote: Assuming the compiler supports CHARACTER, LOGICAL{1,2,4,8}, INTEGER{1,2,4,8}, REAL{4,8,16}, and COMPLEX{8,16,32}.
Could you please explain why assumed shape arrays are necessary in the interfaces? I don't see the benefit we are gaining compared to the assumed size. I attached a little example using an assumed size array.
I cannot -- Bill Saphir was the original author of the F90 bindings (Bill's no longer involved with the MPI Forum). I don't know why he chose assumed shape vs. assumed size. I've recently been involved in MPI Fortran issues even though I'm not really a Fortran programmer (I confess to always being confused by "assumed shape" and "assumed size" :-( ). In this effort, I'm trying to be a liason between the Fortran and MPI communities. Keep in mind that we cannot make huge changes to the existing MPI F90 bindings. They're more-or-less set in stone. What we can do is deprecate them in favor of newer, better bindings (E.g., stuff that takes advantage of more modern Fortran features, such as the C-to- Fortran interoperability compiler features). That's going on for MPI-3. My goal in posting this morning was the see if we could do a very minor fix for MPI-2.1 to make the existing MPI F90 bindings implementable. My point: I don't know if we can change from assumed shape to assumed size for MPI-2.1. Possibly for MPI-2.2...? (MPI-2.2 is allowed to have small changes that require a little implementation effort) I think I would need to understand much better what this change would mean: - for existing MPI F90 applications - for existing MPI F90 implementations - for the MPI-2.x standard This is probably worth discussing on the teleconference tomorrow.
I think the dimensional information of the assumed shape array is discarded anyway, when it is handed over to the actual C-Function.
Yes, we only get a pointer to the beginning of the data.
Which leaves us with 15*50 = 750 Interfaces for the functions with one choice buffer.
This is probably something I don't understand well in Fortran; the goal is to be able to pass any intrinsic type of any array shape/size/ whatever through the "choice" MPI buffers (e.g., the buffer argument to MPI_SEND). If we can reduce the number of subroutine signatures to 750 from 5250, that's a good thing (but may be a moot point, per above).
The calculation for the 25 functions with two choice buffers isn't clear to me. Shouldn't it read (15 * 7)^2 * 25 = 275625?
Crud, I think you're right. Doh! Even so, it's too many. ;-)
If this is the case we would "only" have 15^2 * 25 = 5625 interfaces for functions with two choice buffers.
That's predicated on whether we can change the F90 bindings to use assumed size, right? -- Jeff Squyres Cisco Systems _______________________________________________ mpi3-fortran mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-fortran
participants (1)
-
Lionel, Steve