--with-mpi-f90-size=SIZE

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 for example)

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

Clear?

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).

Michael


On Jun 1, 2006, at 4:41 PM, Brock Palen wrote:

What are these "small" and "large"  modules?  What would they provide?
Brock

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 take
the same approach as for the other issues you discovered -- disable
"large" for v1.1 and push the fixes to v1.2.

https://svn.open-mpi.org/trac/ompi/ticket/55

-----Original Message-----
From: users-boun...@open-mpi.org
[mailto:users-boun...@open-mpi.org] 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:

   --with-mpi-f90-size=SIZE
                           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
buffers,
                           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.

Reply via email to