[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