[MPI3 Fortran] What if Fortran is the primary interface?

Craig Rasmussen crasmussen at lanl.gov
Tue Mar 18 09:26:20 CDT 2008


On Mar 17, 2008, at 2:39 PM, Supalov, Alexander wrote:

> Hi,
>
> Careful: quite a few implementations use INTEGER to represent a handle
> as a bit mask, rather than a pointer.

My test so far indicate that this works fine too.  As I recall,

   type MPI_HANDLE
       private
       type(C_INT) :: handle
   end type MPI_HANDLE

worked for those implementations.  Since MPI_HANDLE is an opaque  
type, the implementer has freedom to define it as she wishes.

Cheers,
Craig


>
> Best regards.
>
> Alexander
>
> -----Original Message-----
> From: mpi3-fortran-bounces at lists.mpi-forum.org
> [mailto:mpi3-fortran-bounces at lists.mpi-forum.org] On Behalf Of
> Aleksandar Donev
> Sent: Monday, March 17, 2008 9:04 PM
> To: MPI-3 Fortran working group
> Subject: Re: [MPI3 Fortran] What if Fortran is the primary interface?
>
> On Monday 17 March 2008 11:54, Hubert Ritzdorf wrote:
>
>> I have an additional question. Is this really guaranteed by the
>> Fortran 2003 standard that
>> type(MPI_COMM), bind(C), protected :: MPI_COMM_WORLD
>> err = MPI_Recv (..., ..., MPI_COMM_WORLD, ...)
>> in the same C Pointer such as the MPI_Comm MPI_COMM_WORLD ?
> No, it is not.
>
>> My feeling is that it points to a structure containing the C pointer
>> MPI_COMM_WORLD.
> Exactly. One can put the VALUE attribute on the communicator dummy
> argument,
> which means that the communicator will be passed in whatever way  
> structs
> are
> passed by value (presumably put on the stack). Whether that is the  
> same
> as
> passing the actual pointer (without the enclosing struct) depends  
> on the
> ABI,
> I believe.
>
> On Monday 17 March 2008 12:53, Jeff Squyres wrote:
>> FWIW, I don't think the 2-level indirection is necessary.
> Depends on the details of the MPI implementation, and the ABI for
> passing
> arguments.
>
>> I think
>> that Craig was trying to unify everything, but I would agree with
>> Hubert: it would be better if MPI_COMM directly referred to whatever
>> the Right stuff is in C.
> What is the *set of Right things* accross implementations. Is a  
> plain C
> pointer (void*) always good enough---then just make the argument
> TYPE(C_PTR)
> and pass a pointer instead of a struct containing a pointer. Do some
> implementations use non-pointers, say a simple integer, for that
> argument?
>
> Craig's scheme has two advantages:
> 1) Uniform interface to MPI accross implementations---put inside the
> struct
> whatever you need (pointers, integers, etc.).
> 2) Strong type-checking
> BUT, it has the disadvantage that I don't think it is possible to  
> avoid
> a
> wrapper level of indirection to massage the arguments. Personally, I
> don't
> see that as a design goal: MPI internally surely will call dozens of
> wrappers
> until the actual work gets done?
>
> Best,
> Aleks
> _______________________________________________
> mpi3-fortran mailing list
> mpi3-fortran at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-fortran
> ---------------------------------------------------------------------
> Intel GmbH
> Dornacher Strasse 1
> 85622 Feldkirchen/Muenchen Germany
> Sitz der Gesellschaft: Feldkirchen bei Muenchen
> Geschaeftsfuehrer: Douglas Lusk, Peter Gleissner, Hannes Schwaderer
> Registergericht: Muenchen HRB 47456 Ust.-IdNr.
> VAT Registration No.: DE129385895
> Citibank Frankfurt (BLZ 502 109 00) 600119052
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>
>
> _______________________________________________
> mpi3-fortran mailing list
> mpi3-fortran at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-fortran




More information about the mpiwg-fortran mailing list