SPECFEM / specfem3d

SPECFEM3D_Cartesian simulates acoustic (fluid), elastic (solid), coupled acoustic/elastic, poroelastic or seismic wave propagation in any type of conforming mesh of hexahedra (structured or not).
GNU General Public License v3.0
409 stars 228 forks source link

mpi_f08 module #1504

Open erlebach opened 2 years ago

erlebach commented 2 years ago

When compiling specFEM3D on a linux machine with the latest versions of gfortran and MPICH, I find that there are issues with MPI functions signatures; namely, two functions with different signatures, used in different modules are flagged by during compilation with mpif90. I have read that this issue can be resolved by using a module mpi_f08, which specFEM3D does not have. Hasn't anybody come across this issue? Specifically, I get errors of the following form when calling Make: Any help would be appreciated. (Where is the best place to ask questions?) Thanks.

mpif90 -g -O2  -std=f2003 -fimplicit-none -frange-check -fmax-errors=10 -pedantic -pedantic-errors -Waliasing -Wampersand -Wcharacter-truncation -Wline-truncation -Wsurprising -Wno-tabs -Wunderflow -ffpe-trap=invalid,zero,overflow -Wunused -Werror -O3 -finline-functions  -J./obj -I./obj -I.  -I./setup -c -o obj/parallel.sharedmpi.o src/shared/parallel.f90
src/shared/parallel.f90:314:17:

  314 |   call MPI_BCAST(buffer,1,MPI_INTEGER,0,my_local_mpi_comm_world,ier)
      |                 1
......
  332 |   call MPI_BCAST(buffer,1,MPI_LOGICAL,0,my_local_mpi_comm_world,ier)
      |                 2
Error: Type mismatch between actual argument at (1) and actual argument at (2) (INTEGER(4)/LOGICAL(4)).
src/shared/parallel.f90:484:17:

  332 |   call MPI_BCAST(buffer,1,MPI_LOGICAL,0,my_local_mpi_comm_world,ier)
      |                 2
......
  484 |   call MPI_BCAST(buffer,countval,MPI_LOGICAL,0,my_local_mpi_comm_world,ier)
      |                 1
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (scalar and rank-1)
src/shared/parallel.f90:731:18:

  661 |   call MPI_REDUCE(sendbuf,recvbuf,1,MPI_INTEGER,MPI_MIN,0,my_local_mpi_comm_world,ier)
      |                  2
......
  731 |   call MPI_REDUCE(sendbuf,recvbuf,1,CUSTOM_MPI_TYPE,MPI_MIN,0,my_local_mpi_comm_world,ier)
      |                  1
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(4)/INTEGER(4)).
src/shared/parallel.f90:751:21:

  710 |   call MPI_ALLREDUCE(send, buffer, countval, MPI_INTEGER, MPI_MAX, my_local_mpi_comm_world, ier)
      |                     2
......
  751 |   call MPI_ALLREDUCE(sendbuf,recvbuf,1,CUSTOM_MPI_TYPE,MPI_MIN,my_local_mpi_comm_world,ier)
      |                     1
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(4)/INTEGER(4)).
src/shared/parallel.f90:936:21:
danielpeter commented 1 year ago

please see the following discussion comment related to this error: https://github.com/orgs/SPECFEM/discussions/1584#discussioncomment-4795279