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
[email protected]
1 Rue de Provence BP 208
38130 Echirolles Cedex, France
www.atos.com