Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

macos ifort / openmpi compatibility: mpi-sizeof.h

Mariano_V_
Beginner
1,376 Views

hi guys,

i am compiling my parallel application using ifort in my mac. it seems that i have a compatibility problem between  openmpi and intel ifort 2017. 

any suggestion?

when compiling a module, i have the following error:

glenan:/Users/mariano/SVN/Alya/Executables/unix |#117 > mpif90 -module Objects_x -c -fpp ../../Sources/kernel/parall/mod_communications.f90

/usr/local/include/mpif-sizeof.h(17): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_SCALAR is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_SCALAR]

      SUBROUTINE MPI_Sizeof_complex128_scalar(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(24): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R1 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R1]

      SUBROUTINE MPI_Sizeof_complex128_r1(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(31): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R2 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R2]

      SUBROUTINE MPI_Sizeof_complex128_r2(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(38): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R3 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R3]

      SUBROUTINE MPI_Sizeof_complex128_r3(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(45): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R4 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R4]

      SUBROUTINE MPI_Sizeof_complex128_r4(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(52): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R5 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R5]

      SUBROUTINE MPI_Sizeof_complex128_r5(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(59): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R6 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R6]

      SUBROUTINE MPI_Sizeof_complex128_r6(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(66): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R7 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R7]

      SUBROUTINE MPI_Sizeof_complex128_r7(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(73): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX32_SCALAR is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX32_SCALAR]

      SUBROUTINE MPI_Sizeof_complex32_scalar(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(80): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX32_R1 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX32_R1]

      SUBROUTINE MPI_Sizeof_complex32_r1(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(87): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX32_R2 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX32_R2]

      SUBROUTINE MPI_Sizeof_complex32_r2(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(94): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX32_R3 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX32_R3]

      SUBROUTINE MPI_Sizeof_complex32_r3(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(101): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX32_R4 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX32_R4]

      SUBROUTINE MPI_Sizeof_complex32_r4(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(108): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX32_R5 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX32_R5]

      SUBROUTINE MPI_Sizeof_complex32_r5(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(115): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX32_R6 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX32_R6]

      SUBROUTINE MPI_Sizeof_complex32_r6(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(122): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX32_R7 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX32_R7]

      SUBROUTINE MPI_Sizeof_complex32_r7(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(129): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX64_SCALAR is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX64_SCALAR]

      SUBROUTINE MPI_Sizeof_complex64_scalar(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(136): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX64_R1 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX64_R1]

      SUBROUTINE MPI_Sizeof_complex64_r1(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(143): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX64_R2 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX64_R2]

      SUBROUTINE MPI_Sizeof_complex64_r2(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(150): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX64_R3 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX64_R3]

      SUBROUTINE MPI_Sizeof_complex64_r3(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(157): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX64_R4 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX64_R4]

      SUBROUTINE MPI_Sizeof_complex64_r4(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(164): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX64_R5 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX64_R5]

      SUBROUTINE MPI_Sizeof_complex64_r5(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(171): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX64_R6 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX64_R6]

      SUBROUTINE MPI_Sizeof_complex64_r6(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(178): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX64_R7 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX64_R7]

      SUBROUTINE MPI_Sizeof_complex64_r7(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(185): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_INT16_SCALAR is not distinguishable from this declaration. [MPI_SIZEOF_INT16_SCALAR]

      SUBROUTINE MPI_Sizeof_int16_scalar(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(192): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_INT16_R1 is not distinguishable from this declaration. [MPI_SIZEOF_INT16_R1]

      SUBROUTINE MPI_Sizeof_int16_r1(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(199): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_INT16_R2 is not distinguishable from this declaration. [MPI_SIZEOF_INT16_R2]

      SUBROUTINE MPI_Sizeof_int16_r2(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(206): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_INT16_R3 is not distinguishable from this declaration. [MPI_SIZEOF_INT16_R3]

      SUBROUTINE MPI_Sizeof_int16_r3(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(213): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_INT16_R4 is not distinguishable from this declaration. [MPI_SIZEOF_INT16_R4]

      SUBROUTINE MPI_Sizeof_int16_r4(x, size, ierror)

-----------------^

/usr/local/include/mpif-sizeof.h(220): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_INT16_R5 is not distinguishable from this declaration. [MPI_SIZEOF_INT16_R5]

      SUBROUTINE MPI_Sizeof_int16_r5(x, size, ierror)

-----------------^

/var/folders/77/ngbk1km12l1fl6dspttb14b80000gn/T/ifortseQu2w.i90(15484): catastrophic error: Too many errors, exiting

compilation aborted for ../../Sources/kernel/parall/mod_communications.f90 (code 1)

 

0 Kudos
6 Replies
TimP
Honored Contributor III
1,376 Views

Did you follow instructions at openmpi.org to build OpenMPI against ifort?  If you are maintaining gfortran and ifort copies of openmpi, you will need to keep them separate (and separate from any other MPI), setting paths for one or the other.

0 Kudos
Mariano_V_
Beginner
1,376 Views

good point... but it seems that building an openmpi against ifort is not solving the issue...

i have downloaded the last openmpi version, 2.0.2. i make it and install with this openmpi configure:

./configure F77=ifort FC=ifort --prefix=/opt/intel-openmpi-2.0.2

i have renamed with an alias my gfortran mpif90, so now it points to 

/opt/intel-openmpi-2.0.2/bin

and i still have the same error, but now it looks like the mpif90 who is considering is correct, because it is pointing to the correct new path.

the error is now:

glenan:/Users/mariano/SVN/Alya/Executables/unix |#126 > mpif90 -module Objects_x -c -fpp ../../Sources/kernel/parall/mod_communications.f90

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(17): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_SCALAR is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_SCALAR]

      SUBROUTINE MPI_Sizeof_complex128_scalar(x, size, ierror)

-----------------^

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(24): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R1 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R1]

      SUBROUTINE MPI_Sizeof_complex128_r1(x, size, ierror)

-----------------^

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(31): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R2 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R2]

      SUBROUTINE MPI_Sizeof_complex128_r2(x, size, ierror)

-----------------^

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(38): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R3 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R3]

      SUBROUTINE MPI_Sizeof_complex128_r3(x, size, ierror)

-----------------^

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(45): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R4 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R4]

      SUBROUTINE MPI_Sizeof_complex128_r4(x, size, ierror)

-----------------^

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(52): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R5 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R5]

      SUBROUTINE MPI_Sizeof_complex128_r5(x, size, ierror)

-----------------^

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(59): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R6 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R6]

      SUBROUTINE MPI_Sizeof_complex128_r6(x, size, ierror)

-----------------^

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(66): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R7 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R7]

      SUBROUTINE MPI_Sizeof_complex128_r7(x, size, ierror)

-----------------^

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(73): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R8 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R8]

      SUBROUTINE MPI_Sizeof_complex128_r8(x, size, ierror)

-----------------^

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(80): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R9 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R9]

      SUBROUTINE MPI_Sizeof_complex128_r9(x, size, ierror)

-----------------^

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(87): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R10 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R10]

      SUBROUTINE MPI_Sizeof_complex128_r10(x, size, ierror)

-----------------^

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(94): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R11 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R11]

      SUBROUTINE MPI_Sizeof_complex128_r11(x, size, ierror)

-----------------^

/opt/intel-openmpi-2.0.2/include/mpif-sizeof.h(101): error #5286: Ambiguous generic interface MPI_SIZEOF: previously declared specific procedure MPI_SIZEOF_COMPLEX128_R12 is not distinguishable from this declaration. [MPI_SIZEOF_COMPLEX128_R12]

      SUBROUTINE MPI_Sizeof_complex128_r12(x, size, ierror)

-----------------^

 

 

0 Kudos
Steve_Lionel
Honored Contributor III
1,376 Views

The error messages suggest to me that you have INCLUDEd the MPI declarations twice.

0 Kudos
Mariano_V_
Beginner
1,376 Views

dear steve,

yes, me too... but i don't see how. I have just compiled a new openmpi using ifort as fortran compiler and used the resulting mpif90 to compile my code...

the error mentions a "opt/intel-openmpi-2.0.2/include/mpi-sizeof.h" which is the openmpi i build using intel.

if it is trying to combine this with another one, i don't know where it got it... 

0 Kudos
Steve_Lionel
Honored Contributor III
1,376 Views

I know almost nothing about OpenMPI, but the problem you are having is not related to the compiler. Typically you would not be including a file that defines just MPI_SIZEOF, but rather all of the MPI declarations. And even better would be to USE the module provided by the MPI implementation rather than using INCLUDE.

0 Kudos
shigeru__kimura
Beginner
1,376 Views

I have same error using ifort,openmpi. Please teach me this solution!  How to I resolve this problem.

0 Kudos
Reply