MPI Forum Meetings logo

MPI Forum: mpi3-fortran Mailing List Archives

all MPI Forum: mpi3-fortran mailing list

Subject: Re: [MPI3 Fortran] Start discussing new Fortran binding
From: Craig Rasmussen (crasmussen_at_[hidden])
Date: 2008-03-05 10:53:48


II have scheduled an audio conference "MPI Fortran" or for March 7,
2008 from 11am to 12am Eastern.

The dial in numbers are 505-665-2778 local and 866-736-2112 toll free.

You will NOT need a password to access the teleconference.

Cheers,
Craig

On Feb 21, 2008, at 5:53 PM, Jeff Squyres wrote:

> On Feb 19, 2008, at 10:27 AM, Craig Rasmussen wrote:
>
>> Don't know if there are implementations where the MPI handle is not
>> an integer of size of an address. Would your suggestion work if it
>> were?
>
> Actually, does it matter?
>
> In the MPI spec, we can just mandate this part:
>
> type, BIND(C) :: MPI_HANDLE_TYPE
> private
> ....something....
> end type MPI_HANDLE_TYPE
>
> So that MPI_HANDLE_TYPE is required to be available in Fortran. What
> exactly it contains and how it is implemented is up to each MPI
> implementation. They can make it an equivalent of a C pointer, or a C
> int, or whatever they need.
>
> Let's take two obvious concrete examples:
>
> 1. Open MPI defines C MPI communicators as
>
> typedef struct ompi_comm_t * MPI_Comm;
>
> As such, Open MPI's F03 interface for communicators would be:
>
> type, BIND(C) :: MPI_COMMUNICATOR
> private
> type(C_PTR) :: handle
> end type MPI_COMMUNICATOR
>
> 2. MPICH2 defines C MPI communicators as ints. Hence, MPICH2's F03
> interface for communicators would be:
>
> type, BIND(C) :: MPI_COMMUNICATOR
> private
> type(C_INT) :: handle
> end type MPI_COMMUNICATOR
>
> Is that right?
>
> If so, my only concern is that the compiler can automatically
> translate between the F03 and C values without the need for a
> translation layer provided by the MPI implementation. That is, a
> Fortran function of MPI_SEND that takes an MPI_COMMUNICATOR type
> parameter (as described above) can be automatically translated to the
> appropriate MPI_Comm type in C. That is one of the goals of this
> interface, after all.
>
> The reason that I mention this is because I'm a C guy, not a Fortran
> guy, and the above "type, BIND(C)..." stuff looks analogous to a
> struct to me. If it is, and if that binding contains more than one
> member, are we ok on the "compiler will automatically translate it"
> front as long as there is only one member in the binding?
>
> An excellent topic for the teleconference! :-)
>
> --
> Jeff Squyres
> Cisco Systems
>
> _______________________________________________
> mpi3-fortran mailing list
> mpi3-fortran_at_[hidden]
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-fortran