Sorry, Gilles,

I cannot  update to more recent versions, because what I used is the newest 
combination of OpenMPI and Intel-Ftn  available on that cluster.

When looking at the list of improvements  on the OpenMPI website for  OpenMPI 
1.10.1 compared to 1.10.0, I do not remember having seen this item to be 
corrected.

Greeting
Michael Rachner


Von: users [mailto:users-boun...@open-mpi.org] Im Auftrag von Gilles 
Gouaillardet
Gesendet: Donnerstag, 19. November 2015 10:21
An: Open MPI Users
Betreff: Re: [OMPI users] Bug in Fortran-module MPI of OpenMPI 1.10.0 with 
Intel-Ftn-compiler

Michael,

I remember i saw similar reports.

Could you give a try to the latest v1.10.1 ?
And if that still does not work, can you upgrade icc suite and give it an other 
try ?

I cannot remember whether this is an ifort bug or the way ompi uses fortran...

Btw, any reason why you do not
Use mpi_f08 ?

HTH

Gilles

michael.rach...@dlr.de<mailto:michael.rach...@dlr.de> wrote:
Dear developers of OpenMPI,

I am trying to run our parallelized Ftn-95 code on a Linux cluster with 
OpenMPI-1-10.0 and Intel-16.0.0 Fortran compiler.
In the code I use the  module MPI  (“use MPI”-stmts).

However I am not able to compile the code, because of compiler error messages 
like this:

/src_SPRAY/mpi_wrapper.f90(2065): error #6285: There is no matching specific 
subroutin for this generic subroutine call.   [MPI_REDUCE]


The problem seems for me to be this one:

The interfaces in the module MPI for the MPI-routines do not accept a send or 
receive buffer array, which is
actually a variable, an array element or a constant (like MPI_IN_PLACE).

Example 1:
     This does not work (gives the compiler error message:      error #6285: 
There is no matching specific subroutin for this generic subroutine call  )
             ivar=123    ! <-- ivar is an integer variable, not an array
          call MPI_BCAST( ivar, 1, MPI_INTEGER, 0, MPI_COMM_WORLD), ierr_mpi )  
  ! <--- this should work, but is not accepted by the compiler

      only this cumbersome workaround works:
              ivar=123
                allocate( iarr(1) )
                iarr(1) = ivar
         call MPI_BCAST( iarr, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierr_mpi )    
! <--- this workaround works
                ivar = iarr(1)
                deallocate( iarr(1) )

Example 2:
     Any call of an MPI-routine with MPI_IN_PLACE does not work, like that 
coding:

      if(lmaster) then
        call MPI_REDUCE( MPI_IN_PLACE, rbuffarr, nelem, MPI_REAL8, MPI_MAX &    
! <--- this should work, but is not accepted by the compiler
                                         ,0_INT4, MPI_COMM_WORLD, ierr_mpi )
      else  ! slaves
        call MPI_REDUCE( rbuffarr, rdummyarr, nelem, MPI_REAL8, MPI_MAX &
                        ,0_INT4, MPI_COMM_WORLD, ierr_mpi )
      endif

    This results in this compiler error message:

      /src_SPRAY/mpi_wrapper.f90(2122): error #6285: There is no matching 
specific subroutine for this generic subroutine call.   [MPI_REDUCE]
            call MPI_REDUCE( MPI_IN_PLACE, rbuffarr, nelem, MPI_REAL8, MPI_MAX &
-------------^


In our code I observed the bug with MPI_BCAST, MPI_REDUCE, MPI_ALLREDUCE,
but probably there may be other MPI-routines with the same kind of bug.

This bug occurred for                               :     OpenMPI-1.10.0  with 
Intel-16.0.0
In contrast, this bug did NOT occur for:     OpenMPI-1.8.8    with Intel-16.0.0
                                                                            
OpenMPI-1.8.8    with Intel-15.0.3
                                                                            
OpenMPI-1.10.0  with gfortran-5.2.0

Greetings
Michael Rachner

Reply via email to