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

Regards,
Nadia

-- 
Nadia Derbey - B1-387
HPC R&D - MPI
Tel: +33 4 76 29 77 62
nadia.der...@atos.net
1 Rue de Provence BP 208
38130 Echirolles Cedex, France
www.atos.com

Reply via email to