[MPI3 Fortran] MPI-2.1: Fortran 90 bindings

Lionel, Steve steve.lionel at intel.com
Thu Mar 6 15:36:47 CST 2008

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.


-----Original Message-----
From: mpi3-fortran-bounces at lists.mpi-forum.org
[mailto:mpi3-fortran-bounces at lists.mpi-forum.org] On Behalf Of Jeff
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},  
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  

I think I would need to understand much better what this change would  

- 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
mpi3-fortran at lists.mpi-forum.org

More information about the mpiwg-fortran mailing list