[MPI3 Fortran] Argument data sizes (was: Teleconference Wednesday, Sept. 17: Summary)

Jeff Squyres jsquyres at cisco.com
Thu Sep 18 07:51:52 CDT 2008


On Sep 17, 2008, at 4:46 PM, Craig Rasmussen wrote:

>> For what it's worth, Fortran compilers already have to deal with  
>> the interaction of modules and default=64 switches.  For example,  
>> the intrinsic iso_fortran_env module contains named constants  
>> (numeric_storage_size, for example) that have different values  
>> depending on these compiler switches.  At least in our case, we  
>> have separate modules that are stored in library subdirectories  
>> with names like 'default64'. The compiler driver knows which place  
>> to look depending on the command line options.  This works for  
>> "known" modules that are supplied along with the compiler (as  
>> opposed to user created modules).  Clearly it is possible to make  
>> the MPI module(s) known in this sense.  (In fact, we do this for  
>> MPI already on our systems.)
>
> Would this work for a third person library like OpenMPI?
>
> If two interfaces are supplied, one for 4 byte integers and one for  
> 8 byte integers, what happens when the compiler switch to go to  
> longs is chosen.  Does the compiler call the 8 byte kind version?  I  
> believe if we go this route, we can't have a default integer  
> interface because it would collide with the 8 byte integer version  
> if the default64 switch is thrown.


Isn't it meaningless to use INTERGER*8 parameters (e.g., the count to  
MPI_SEND) if the MPI doesn't support them (because the MPI spec says  
that the count is a C int)?

I can see the argument of "use a compile flag to change all your  
INTEGERs to INTEGER*8", but per Bill's argument, doesn't that imply  
that users will expect that they can pass an MPI_SEND count value that  
is too large to be held in an INTEGER?  Since the back-end MPI doesn't  
support it (since MPI mandates that counts are C int's), it won't work.

We can *tell* users that the type can be INTEGER*8 but they can't pass  
in values larger than can be held in an INTEGER, but I somehow doubt  
that this will work...  :-)

-- 
Jeff Squyres
Cisco Systems




More information about the mpiwg-fortran mailing list