> I just checked MPICH 3.2, and they *do* include MPI_SIZEOF interfaces for 
> CHARACTER and LOGICAL, but they are missing many of the other MPI_SIZEOF 
> interfaces that we have in OMPI.  Meaning: OMPI and MPICH already diverge 
> wildly on MPI_SIZEOF.  :-\

And OMPI 1.6 also had MPI_SIZEOF interfaces for CHARACTER and LOGICAL.  :-)

  
https://github.com/open-mpi/ompi-release/blob/v1.6/ompi/mpi/f90/scripts/mpi_sizeof.f90.sh#L27


> Nadia --
> 
> I believe that the character and logical types are not in this script already 
> because the description of MPI_SIZEOF in MPI-3.1 says that the input choice 
> buffer parameter is:
> 
> IN x     a Fortran variable of numeric intrinsic type (choice)
> 
> As I understand it (and my usual disclaimer here: I am *not* a Fortran 
> expert), CHARACTER and LOGICAL types are not numeric in Fortran.
> 
> However, we could add such interfaces as an extension.
> 
> I just checked MPICH 3.2, and they *do* include MPI_SIZEOF interfaces for 
> CHARACTER and LOGICAL, but they are missing many of the other MPI_SIZEOF 
> interfaces that we have in OMPI.  Meaning: OMPI and MPICH already diverge 
> wildly on MPI_SIZEOF.  :-\
> 
> I guess I don't have a strong opinion here.  If you file a PR for this patch, 
> I won't object.  :-)
> 
> 
> > On Apr 15, 2016, at 3:22 AM, DERBEY, NADIA <nadia.der...@atos.net> wrote:
> > 
> > Hi,
> > 
> > The following trivial example doesn't compile because of 2 missing types 
> > in the MPI_SIZEOF subroutines (in mpi_sizeof.f90).
> > 
> > [derbeyn@btp0 test]$ cat mpi_sizeof.f90
> >           program main
> > !        use mpi
> >           include 'mpif.h'
> > 
> >           integer ierr, sz, mpisize
> >           real r1
> >           integer i1
> >           character ch1
> >           logical l1
> > 
> >           call MPI_INIT(ierr)
> >           call MPI_SIZEOF(r1, sz, ierr)
> >           call MPI_SIZEOF(i1, sz, ierr)
> >           call MPI_SIZEOF(l1, sz, ierr)
> >           call MPI_SIZEOF(ch1, sz, ierr)
> >           call MPI_FINALIZE(ierr)
> > 
> >           end
> > [derbeyn@btp0 test]$ mpif90 -o mpi_sizeof mpi_sizeof.f90
> > mpi_sizeof.f90(14): error #6285: There is no matching specific 
> > subroutine for this generic subroutine call.   [MPI_SIZEOF]
> >           call MPI_SIZEOF(ch1, sz, ierr)
> > -------------^
> > mpi_sizeof.f90(15): error #6285: There is no matching specific
> > subroutine for this generic subroutine call.   [MPI_SIZEOF]
> >           call MPI_SIZEOF(l1, sz, ierr)
> > -------------^
> > compilation aborted for mpi_sizeof.f90 (code 1)
> > 
> > 
> > This problem happens both on master and v2.x. The following patch seems
> > to solve the issue:
> > 
> > diff --git a/ompi/mpi/fortran/base/gen-mpi-sizeof.pl
> > b/ompi/mpi/fortran/base/gen-mpi-sizeof.pl
> > index 5ea3dca3..a2a99924 100755
> > --- a/ompi/mpi/fortran/base/gen-mpi-sizeof.pl
> > +++ b/ompi/mpi/fortran/base/gen-mpi-sizeof.pl
> > @@ -145,6 +145,9 @@ sub generate {
> >    # Main
> > 
> > #############################################################################
> > 
> > +queue_sub("character", "char", "character_kinds");
> > +queue_sub("logical", "logical", "logical_kinds");
> > +
> >    for my $size (qw/8 16 32 64/) {
> >        queue_sub("integer(int${size})", "int${size}", "int${size}");
> >    }

Reply via email to