[MPIWG Fortran] An implementation problem of F08 binding

Jeff Hammond jeff.science at gmail.com
Thu May 1 15:28:18 CDT 2014


And nothing stops Cray from providing an option to violate the MPI
standard w.r.t. the profiling interface if they want to do so to make
customers happy.  Cray usually doesn't provide MPI_Comm_spawn (and
they aren't the only vendor to do this, of course) and I don't hear
anyone crying about MPI standard violations there :-)

Jeff

On Thu, May 1, 2014 at 2:56 PM, Jeff Squyres (jsquyres)
<jsquyres at cisco.com> wrote:
> Ok, I guess I'm quibbling with your wording: yes, we eliminated the possibility of using that *one* modern Fortran feature (so that tools can still profile MPI applications at the linker layer).
>
> There's still many other modern Fortran features that are usable and beneficial to the user.
>
>
> On May 1, 2014, at 3:54 PM, Junchao Zhang <jczhang at mcs.anl.gov> wrote:
>
>> If I am correct, Bill Long wants to inline the wrapper.
>>
>> --Junchao Zhang
>>
>>
>> On Thu, May 1, 2014 at 2:51 PM, Jeff Squyres (jsquyres) <jsquyres at cisco.com> wrote:
>> On May 1, 2014, at 2:34 PM, Junchao Zhang <jczhang at mcs.anl.gov> wrote:
>>
>> > Hello,
>> >    I met a problem when implementing F08 binding in MPICH.  I have a file mpi_f08.F90, which contains all interfaces
>> >
>> > module mpi_f08
>> > ..
>> > interface MPI_Send
>> >     subroutine MPI_Send_f08ts(buf, count, datatype, dest, tag, comm, ierror)
>> >         use :: mpi_f08_types, only : MPI_Datatype, MPI_Comm
>> >         implicit none
>> >         type(*), dimension(..), intent(in) :: buf
>> >         integer, intent(in) :: count, dest, tag
>> >         type(MPI_Datatype), intent(in) :: datatype
>> >         type(MPI_Comm), intent(in) :: comm
>> >         integer, optional, intent(out) :: ierror
>> >     end subroutine MPI_Send_f08ts
>> > end interface MPI_Send
>> > ..
>> > end module mpi_f08
>> >
>> > Then for each subroutine, I create a separate file which implement the wrapper function in Fortran.  For example, send_f08ts.F90 has
>> >
>> > subroutine MPI_Send_f08ts(buf, count, datatype, dest, tag, comm, ierror)
>> >     use :: mpi_f08, only : MPI_Datatype, MPI_Comm
>> >     use, intrinsic :: iso_c_binding, only : c_int
>> >     use :: mpi_c_interface, only : c_Datatype, c_Comm
>> >     use :: mpi_c_interface, only : MPIR_Send_cdesc
>> >
>> >     implicit none
>> >     ..
>> > end subroutine MPI_Send_f08ts
>> >
>> > Bill Long pointed out problems of the implementation. 1) When users supply a bad argument to MPI_Send(), the compiler complains "No specific match can be found for the generic subprogram call MPI_SEND", instead of pointing out the offending arg.
>>
>> Maybe Tobias, CC'ed, can shed light on why this is...
>>
>> > 2) The wrapper is not in a module, which eliminates many of the advantages of using modern Fortran.
>>
>> Can you explain what you mean by this?  There's still lots of advantages for using modern Fortran...
>>
>> --
>> Jeff Squyres
>> jsquyres at cisco.com
>> For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
>>
>> _______________________________________________
>> mpiwg-fortran mailing list
>> mpiwg-fortran at lists.mpi-forum.org
>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran
>>
>> _______________________________________________
>> mpiwg-fortran mailing list
>> mpiwg-fortran at lists.mpi-forum.org
>> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran
>
>
> --
> Jeff Squyres
> jsquyres at cisco.com
> For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
>
> _______________________________________________
> mpiwg-fortran mailing list
> mpiwg-fortran at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-fortran



-- 
Jeff Hammond
jeff.science at gmail.com



More information about the mpiwg-fortran mailing list