On Nov 2, 2006, at 7:47 PM, Jeff Squyres wrote:
On Nov 2, 2006, at 3:18 PM, Michael Kluskens wrote:
So "large" was an attempt to provide *some* of the
interfaces -- but [your] experience has shown that this can do more
harm than good (i.e., make some legal MPI applications uncompilable
because we provide *some* interfaces to MPI_GATHER, but not all).
Very true; derived data types are always going to be a problem for
F90/F95 (as I understand those languages). The proposed F03 bindings
don't have this problem because (again, as I understand the language
-- and I am *not* a Fortran expert!) they have the equivalent of
(void*) that we can use for choice buffers.
Not knowing where to look I suspect that derived datatypes will not
be a problem because after more thought I realized that they all must
be just a single Fortran type in the actual code because I can't see
anyway they could be anything but.
I suppose. I'd be willing to accept a patch for all the things we
talked about in this thread (e.g., the stuff you did for GATHER
extrapolated for all the other collectives that need it, and either
what you did for REDUCE to allow IN_PLACE or expanding IN_PLACE to be
a unique datatype as we discussed). More specifically, I'd rather
fix *all* the collectives rather than just GATHER/dimensions and
REDUCE/IN_PLACE. I unfortunately do not have the cycles to do this
work myself. :-\
I could write a patch for the other collectives with 2 choice buffers
affected by large -- having looked at it multiple times for GATHER
the way forward is clear to me. Let me know if/when you are ready to
accept a patch, I'd rather not work on it until you are able to merge
it into the trunk so I don't have to redo it if someone else makes
changes to the affected files in the meantime. However, I don't have
time to write test programs to go beyond my testing of GATHER, but
that should not be a problem as I can't see how the other collectives
could be much different in this respect that GATHER.
IN_PLACE would be better handled with a special Fortran datatype but
I'd rather not try to do that until the 2 choice buffers are
finished, to much to handle at one time and I'm not as familiar with
the impact of this change.
Given that the large Fortran 90 interface is only meant to add the 2
choice buffers with the same type, I believe anyone who wants the
large interfaces should be willing to live with the larger interface
file, just like we choose how large of arrays we're going to build
into any of the interfaces.
It would be helpful to know if anyone else is using the Fortran 90
large interfaces in the trunk.
Michael