specifies the size of the Fortran 90 interface module that is
created. In Fortran 90 the compiler can validate all your calls only
if it has information of the functions/subroutines that you are
calling. This is done via a module with interfaces in OpenMPI and
almost every program anyone writes--if there is another way I don't
know about it yet.
Problem with MPI is that almost every call involves routines that can
accept a range of arguments in certain locations.
MPI_INIT is trivial
MPI_SEND is not. The first argument has dozens of possible types:
character, logical, integer, real, complex, which each can be
different sizes and also can be a scalar or an array with dimension 1
through 7. How many is that, lots.
And MPI_SEND is an easy case.
OpenMPI gives you four choices:
trivial -- MPI-2 F90-specific functions only
small -- trivial + all MPI functions without choice buffers
medium -- small + all MPI functions with one choice buffer (MPI_SEND
large -- medium + all MPI functions with 2 choice buffers, but only
when both buffers are the same type and same dimension (as currently
implemented). (MPI_GATHER for example) -- apparently new to 1.1
alphas and will be delayed to 1.2
What I discovered is that the two choice buffers are only half useful
as currently implemented, since in half of the cases the buffers are
likely to be of different dimensions.
Then you have the special parameters, such as MPI_ANY_SOURCE,
MPI_ANY_TAG, MPI_STATUS_IGNORE and the biggest scary monster of all
MPI_IN_PLACE (declared double complex for reasons I don't understand
yet, but for good reason I'm certain, offhand I'd guess the number of
bytes the C routines expect in those locations).
On Jun 1, 2006, at 4:41 PM, Brock Palen wrote:
> What are these "small" and "large" modules? What would they provide?
> On Jun 1, 2006, at 4:30 PM, Jeff Squyres ((jsquyres)) wrote:
>> Michael --
>> You're right again. Thanks for keeping us honest!
>> We clearly did not think through all the issues for the "large" F90
>> interface; I've opened ticket #55 for the issue. I'm inclined to
>> the same approach as for the other issues you discovered -- disable
>> "large" for v1.1 and push the fixes to v1.2.
>>> -----Original Message-----
>>> From: users-bounces_at_[hidden]
>>> [mailto:users-bounces_at_[hidden]] On Behalf Of Michael Kluskens
>>> Sent: Tuesday, May 30, 2006 3:40 PM
>>> To: Open MPI Users
>>> Subject: [OMPI users] MPI_GATHER: missing f90 interfaces for
>>> mixed dimensions
>>> Looking at limitations of the following:
>>> specify the types of functions in the
>>> Fortran 90 MPI
>>> module, where size is one of:
>>> trivial (MPI-2
>>> F90-specific functions only), small
>>> (trivial + all
>>> MPI functions without choice buffers),
>>> medium (small
>>> + all MPI functions with one choice
>>> buffer), large
>>> (medium + all MPI functions with 2 choice
>>> but only when both buffers are the
>>> same type)
>>> Not sure what "same type" was intended to mean here, if same type
>>> than reasonable, but if same type and dimension (and as implemented)
>>> then I can't see where any generic installation, i.e. more than one
>>> user, could use --with-mpi-f90-size=large. If fact I found one case
>>> where a bunch of the generated interfaces are a waste of space and a
>>> really bad idea as far as I can tell.