Andrea Negri
2016-05-21 16:17:13 UTC
Hi, in the last few days I ported my entire fortran mpi code to "use
mpif_08". You really did a great job with this interface. However,
since HDF5 still uses integers to handle communicators, I have a
module where I still use "use mpi", and with gfortran 5.3.0 and
openmpi-1.10.2 I got some errors.
I have been able to produce an extremely minimalistic example that
reproduces the same errors. If you try to compile with mpifort -c this
file
!==========================================
module test1_mod
! I use ONLY here just to show you that errors happen even with ONLY
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
implicit none
private
public :: test1
contains
subroutine test1(a)
implicit none
real, intent(inout) :: a
integer :: ierr
a=0
call mpi_barrier(MPI_COMM_WORLD, ierr)
endsubroutine test1
endmodule test1_mod
module prova2
use mpi_f08
implicit none
private
contains
subroutine prova3
use test
implicit none
real :: a
call test1(a)
endsubroutine prova3
endmodule prova2
!==========================================
and I obtain the errors:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_argv_null with binding label mpi_fortran_argv_null
at (1) uses the same global identifier as entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_argvs_null with binding label
mpi_fortran_argvs_null at (1) uses the same global identifier as
entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_bottom with binding label mpi_fortran_bottom at
(1) uses the same global identifier as entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_errcodes_ignore with binding label
mpi_fortran_errcodes_ignore at (1) uses the same global identifier as
entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_in_place with binding label mpi_fortran_in_place
at (1) uses the same global identifier as entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_status_ignore with binding label
mpi_fortran_status_ignore at (1) uses the same global identifier as
entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_statuses_ignore with binding label
mpi_fortran_statuses_ignore at (1) uses the same global identifier as
entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_unweighted with binding label
mpi_fortran_unweighted at (1) uses the same global identifier as
entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_weights_empty with binding label
mpi_fortran_weights_empty at (1) uses the same global identifier as
entity at (2)
I don't know if this is a compiler-related issue, since the PRIVATE
statement should mask everything...
Thanks in advance for the help.
Andrea
mpif_08". You really did a great job with this interface. However,
since HDF5 still uses integers to handle communicators, I have a
module where I still use "use mpi", and with gfortran 5.3.0 and
openmpi-1.10.2 I got some errors.
I have been able to produce an extremely minimalistic example that
reproduces the same errors. If you try to compile with mpifort -c this
file
!==========================================
module test1_mod
! I use ONLY here just to show you that errors happen even with ONLY
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
implicit none
private
public :: test1
contains
subroutine test1(a)
implicit none
real, intent(inout) :: a
integer :: ierr
a=0
call mpi_barrier(MPI_COMM_WORLD, ierr)
endsubroutine test1
endmodule test1_mod
module prova2
use mpi_f08
implicit none
private
contains
subroutine prova3
use test
implicit none
real :: a
call test1(a)
endsubroutine prova3
endmodule prova2
!==========================================
and I obtain the errors:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_argv_null with binding label mpi_fortran_argv_null
at (1) uses the same global identifier as entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_argvs_null with binding label
mpi_fortran_argvs_null at (1) uses the same global identifier as
entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_bottom with binding label mpi_fortran_bottom at
(1) uses the same global identifier as entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_errcodes_ignore with binding label
mpi_fortran_errcodes_ignore at (1) uses the same global identifier as
entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_in_place with binding label mpi_fortran_in_place
at (1) uses the same global identifier as entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_status_ignore with binding label
mpi_fortran_status_ignore at (1) uses the same global identifier as
entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_statuses_ignore with binding label
mpi_fortran_statuses_ignore at (1) uses the same global identifier as
entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_unweighted with binding label
mpi_fortran_unweighted at (1) uses the same global identifier as
entity at (2)
prova.f90:19.4:
use mpi_f08
1
prova.f90:2.4:
use mpi, only: MPI_BARRIER, MPI_COMM_WORLD
2
Error: Variable mpi_weights_empty with binding label
mpi_fortran_weights_empty at (1) uses the same global identifier as
entity at (2)
I don't know if this is a compiler-related issue, since the PRIVATE
statement should mask everything...
Thanks in advance for the help.
Andrea