[MPI3 Fortran] [Fwd: add TYPE(*) and DIMENSION(..) to Fortran]

Jeff Squyres jsquyres at cisco.com
Fri Sep 5 14:15:04 CDT 2008


On Sep 5, 2008, at 7:49 PM, Aleksandar Donev wrote:

>> This was also a question -- can we access the parts of the
>> descriptor?  If so, can we only do so from Fortran?
> Yes, but only from C. Inside Fortran, descriptors are "hidden"  
> objects: They
> represent arrays, which are the actual language entities. In C, they  
> will be
> structs that you can peak into and modify (detailed draft proposal  
> will be
> released by Bill Long soon), with heavy restrictions to make sure  
> you don't
> crash the Fortran program that will be using the descriptors you  
> have mucked
> up.

That is most excellent.  If we use them, we'd only use them in a read- 
only fashion.  It's great to know that they're available in C.

>> We *could* do something more intelligent, but it's questionable as to
>> whether it would be better performance (i.e., construct a type map
>> struct and have the MPI datatype engine do the heavy lifting -- but
>> the process of building that type map may be expensive, depending on
>> the complexity and size of the data.
> Is there any known stats about how many people if any use MPI  
> datatypes to
> copy strided data? I know ARMCI supports strided arrays.
> My feeling is that if the MPI library buffers stuff under the covers  
> anyway,
> there won't be any advantage.

Agreed.

But there is the issue that if the compiler copies, will the temporary  
buffer match the MPI datatype that the user passed in?

> If, however, you have some kind of DRMA or some
> such unbuffered mechanism than it would seem to me strided access  
> should be
> faster?

It gets quite complex to figure out which will be faster, and the  
underlying transport of OMPI will make that decision; it's not visible  
[anywhere near] the top-level MPI API.

> I have no clue, really. But I do know that it is good to have Fortran
> as a language allow for both options. There is nothing that says  
> that the
> Fortran MPI binding cannot have *two* MPI_Sends, one more like the C  
> binding
> (overhead is essentially one procedure call), and one more modern and
> easy-to-use (but with larger overheads, of course).


I'm not sure I follow -- I see what the pass-thru Fortran wrapper  
would be; what's the other one that you're referring to?

-- 
Jeff Squyres
Cisco Systems




More information about the mpiwg-fortran mailing list