[MPIWG Fortran] An implementation problem of F08 binding

Jeff Squyres (jsquyres) jsquyres at cisco.com
Thu May 1 14:56:07 CDT 2014


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/




More information about the mpiwg-fortran mailing list