Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

From: Michael Kluskens (mkluskens_at_[hidden])
Date: 2006-04-30 12:16:37


MPI_Intercomm_Merge( intercomm, high, newintracomm, ier )

None of the books I have state the variable type of the second
argument for MPI_Intercomm_Merge for Fortran. Class notes I have
from David Cronk state it is a Logical.

In C it is an "int" with values of true and false.

Looking at OpenMPI 1.1a4r9780 (& openmpi-1.2a1r9780) I find the
following:

./ompi/mpi/f77/intercomm_merge_f.c:

OMPI_GENERATE_F77_BINDINGS (PMPI_INTERCOMM_MERGE,
                            pmpi_intercomm_merge,
                            pmpi_intercomm_merge_,
                            pmpi_intercomm_merge__,
                            pmpi_intercomm_merge_f,
                            (MPI_Fint *intercomm, MPI_Flogical *high,
MPI_Fint *newintercomm, MPI_Fint *ierr),
                            (intercomm, high, newintercomm, ierr) )

and

     *ierr = MPI_Intercomm_merge (c_intercomm, OMPI_LOGICAL_2_INT
(*high),
                                  &c_newcomm);

This implies to me that in Fortran the second argument should be a
logical which makes sense.

But in ./ompi/mpi/f90/mpi-f90-interfaces.h, I find:
-------------
interface MPI_Intercomm_merge

subroutine MPI_Intercomm_merge(intercomm, high, newintercomm, ierr)
   include 'mpif.h'
   integer, intent(in) :: intercomm
   integer, intent(in) :: high
   integer, intent(out) :: newintercomm
   integer, intent(out) :: ierr
end subroutine MPI_Intercomm_merge

end interface MPI_Intercomm_merge
-------------
which I suspect is wrong or at least incomplete with regards to the
second argument.

In which case the problem is also in ./ompi/mpi/f90/scripts/mpi-f90-
interfaces.h.sh
----------
subroutine ${procedure}(intercomm, high, newintercomm, ierr)
   include 'mpif.h'
   integer, intent(in) :: intercomm
   integer, intent(in) :: high
   integer, intent(out) :: newintercomm
   integer, intent(out) :: ierr
end subroutine ${procedure}

EOF
}

start MPI_Intercomm_merge small
output_162 MPI_Intercomm_merge
end MPI_Intercomm_merge
-------------

Michael

ps. MPI_Comm_get_attr is fixed in both these versions.