I'm not sure this is whether a bug or a particular issue with my enviroment or setup. Anyway, I think it's worth to report.
I have been running my ROMS IS4DVAR application for a while using revision 881.
Now I decided to test the new flag SINGLE_PRECISION of revision 928, which is available since this recent update https://www.myroms.org/projects/src/ticket/789.
I'm using Intel Fortran (IFORT) version 17.0.5 20170817, MPICH library and netCDF4.
However, compiler complains of conflictant declarations in "distribute.F" with the following message:
Code: Select all
cd /home/users/tpdpbr/roms/projetos/4dvar/i4dvar.exp_01/t04/Build; /sw/apps/suse/mpi/intel/mvapich/2.2/bin/mpif90 -c -heap-arrays -fp-model precise -ip -O3 distribute.f90
distribute.f90(283): error #5286: Ambiguous generic interface MP_BCASTF: previously declared specific procedure MP_BCASTF_0DP is not distinguishable from this declaration. [MP_BCASTF_0D]
SUBROUTINE mp_bcastf_0d (ng, model, A)
-----------------^
distribute.f90(353): error #5286: Ambiguous generic interface MP_BCASTF: previously declared specific procedure MP_BCASTF_1DP is not distinguishable from this declaration. [MP_BCASTF_1D]
SUBROUTINE mp_bcastf_1d (ng, model, A)
-----------------^
distribute.f90(4364): error #5286: Ambiguous generic interface MP_REDUCE: previously declared specific procedure MP_REDUCE_0DP is not distinguishable from this declaration. [MP_REDUCE_0D]
SUBROUTINE mp_reduce_0d (ng, model, Asize, A, op_handle)
-----------------^
distribute.f90(4468): error #5286: Ambiguous generic interface MP_REDUCE: previously declared specific procedure MP_REDUCE_1DP is not distinguishable from this declaration. [MP_REDUCE_1D]
SUBROUTINE mp_reduce_1d (ng, model, Asize, A, op_handle)
-----------------^
compilation aborted for distribute.f90 (code 1)
Code: Select all
#ifdef ESMF_LIB
!! integer, parameter :: i1b= ESMF_KIND_I1 ! 8-bit
integer, parameter :: i1b= SELECTED_INT_KIND(1) ! 8-bit
!! integer, parameter :: i2b= ESMF_KIND_I2 ! 8-bit
integer, parameter :: i2b= SELECTED_INT_KIND(2) ! 8-bit
integer, parameter :: i4b= ESMF_KIND_I4 ! 16-bit
integer, parameter :: i8b= ESMF_KIND_I8 ! 32-bit
integer, parameter :: c8 = SELECTED_REAL_KIND(6,30) ! 32-bit
integer, parameter :: dp = ESMF_KIND_R8 ! 64-bit
integer, parameter :: r4 = ESMF_KIND_R4 ! 32-bit
# ifdef SINGLE_PRECISION
integer, parameter :: r8 = ESMF_KIND_R4 ! 32-bit
# else
integer, parameter :: r8 = ESMF_KIND_R8 ! 64-bit
# endif
#else
integer, parameter :: i1b= SELECTED_INT_KIND(1) ! 8-bit
integer, parameter :: i2b= SELECTED_INT_KIND(2) ! 8-bit
integer, parameter :: i4b= SELECTED_INT_KIND(4) ! 16-bit
integer, parameter :: i8b= SELECTED_INT_KIND(8) ! 32-bit
integer, parameter :: c8 = SELECTED_REAL_KIND(6,30) ! 32-bit
integer, parameter :: dp = SELECTED_REAL_KIND(12,300) ! 64-bit
integer, parameter :: r4 = SELECTED_REAL_KIND(6,30) ! 32-bit
# ifdef SINGLE_PRECISION
integer, parameter :: r8 = SELECTED_REAL_KIND(6,30) ! 32-bit
# else
integer, parameter :: r8 = SELECTED_REAL_KIND(12,300) ! 64-bit
# endif
I also tried to compile the WC13 test case with revision 928. It compiles fine without SINGLE_PRECISION, but fails the same way as with my application when the flag is activated.
I know this feature is quite recent, but has anybody already had an error similar to this?
If is there anything else I should check, like compiler flags or so, please let me know.
Any replies are much appreciated.
Thanks.