[MPI3 Fortran] Start discussing new Fortran binding
Craig Rasmussen
crasmussen at lanl.gov
Tue Feb 19 10:24:53 CST 2008
On Feb 19, 2008, at 8:38 AM, Lionel, Steve wrote:
>>
>> 2. Is there a way to use a preprocessor to replace something like
>> this
>>
>> integer(MPI_HANDLE_TYPE), value, intent(in) :: datatype
>>
>> with either C_INT or C_PTR, depending on what the implementation
>> requires?
>
> The proper (IMO) way to do this in Fortran is as follows:
>
> type, BIND(C) :: MPI_HANDLE_TYPE
> private
> type(C_PTR) :: handle
> end type MPI_HANDLE_TYPE
>
> This allows the user to declare things of type(MPI_HANDLE_TYPE) but
> makes the contents inaccessible other than passing, storing or
> fetching.
> The BIND(C) tells the Fortran compiler that this is an interoperable
> type and it is not allowed to pad it or rearrange the contents.
>>
Jeff and I tried to make this work out in our paper but thought there
might be problems interfacing with exiting MPI implementations.
However, I agree this would be a better approach if it can be made to
work with MPI implementations that work with both integers and
pointers to structs. I'll think some more about how to use your
approach, perhaps you could add you brain power to it as well.
I think this should be the main topic for conversation in our telecon
this week. Agree?
Cheers,
Craig
More information about the mpiwg-fortran
mailing list