> 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}"); > > }