diff --git a/env.sh b/env.sh index 6fff86847..6ab2d3799 100755 --- a/env.sh +++ b/env.sh @@ -54,6 +54,11 @@ elif [[ $LOGINHOST =~ ^m[A-Za-z0-9]+\.hpc\.dkrz\.de$ ]]; then STRATEGY="mistral.dkrz.de" elif [[ $LOGINHOST =~ ^levante ]] || [[ $LOGINHOST =~ ^l[:alnum:]+\.lvt\.dkrz\.de$ ]]; then STRATEGY="levante.dkrz.de" + # following regex only matches if input is 2 word like levante.nvhpc + compid_regex="^([[:alnum:]]+)\.([[:alnum:]]+)$" + if [[ $LOGINHOST =~ $compid_regex ]]; then + COMPILERID="${BASH_REMATCH[2]}" + fi elif [[ $LOGINHOST =~ ^ollie[0-9]$ ]] || [[ $LOGINHOST =~ ^prod-[0-9]{4}$ ]]; then STRATEGY="ollie" elif [[ $LOGINHOST =~ ^albedo[0-9]$ ]] || [[ $LOGINHOST =~ ^prod-[0-9]{4}$ ]]; then diff --git a/env/levante.dkrz.de/shell.gnu b/env/levante.dkrz.de/shell.gnu index fd85dc154..4bacf20aa 100755 --- a/env/levante.dkrz.de/shell.gnu +++ b/env/levante.dkrz.de/shell.gnu @@ -18,8 +18,7 @@ export FC=mpif90 CC=mpicc CXX=mpicxx # following is only needed for libblas which is needed by params lib and often provided by lapack #module load intel-oneapi-mkl/2022.0.1-gcc-11.2.0 # so use the LD_LIBRARY_PATH or other paths like prefix paths etc for cmake -#export LD_LIBRARY_PATH=/sw/spack-levante/intel-oneapi-mkl-2022.0.1-ttdktf/mkl/2022.0.1/lib/intel64:$LD_LIBRARY_PATH -spack load intel-oneapi-mkl@2022.0.1%gcc@11.2.0 +#export LD_LIBRARY_PATH=/sw/spack-levante/intel-oneapi-mkl-2022.0.1-ttdktf/mkl/2022.0.1/lib/intel64:$LD_LIBRARY_PATH spack load intel-oneapi-mkl@2022.0.1%gcc@11.2.0 #other alternative blas #spack load netlib-lapack@3.9.1%gcc@11.2.0 diff --git a/src/MOD_PARTIT.F90 b/src/MOD_PARTIT.F90 index 6603b8922..2e8330a4b 100644 --- a/src/MOD_PARTIT.F90 +++ b/src/MOD_PARTIT.F90 @@ -5,12 +5,12 @@ module MOD_PARTIT USE, intrinsic :: ISO_FORTRAN_ENV, only : int32 USE MOD_WRITE_BINARY_ARRAYS USE MOD_READ_BINARY_ARRAYS +USE mpi #if defined(_OPENMP) USE OMP_LIB #endif IMPLICIT NONE SAVE -include 'mpif.h' integer, parameter :: MAX_LAENDERECK=16 integer, parameter :: MAX_NEIGHBOR_PARTITIONS=32 @@ -217,4 +217,4 @@ subroutine READ_T_PARTIT(partit, unit, iostat, iomsg) read(unit, iostat=iostat, iomsg=iomsg) partit%pe_status end subroutine READ_T_PARTIT -end module MOD_PARTIT +end module MOD_PARTIT \ No newline at end of file diff --git a/src/fortran_utils.F90 b/src/fortran_utils.F90 index 35efdb742..86a93d226 100644 --- a/src/fortran_utils.F90 +++ b/src/fortran_utils.F90 @@ -1,5 +1,6 @@ ! synopsis: basic Fortran utilities, no MPI, dependencies only to INTRINSIC modules module fortran_utils + use mpi implicit none contains @@ -48,7 +49,6 @@ function mpirank_to_txt(mpicomm) result(txt) integer mype integer npes integer mpierr - include 'mpif.h' call MPI_Comm_Rank(mpicomm, mype, mpierr) call MPI_Comm_Size(mpicomm, npes, mpierr) diff --git a/src/gen_modules_partitioning.F90 b/src/gen_modules_partitioning.F90 index 04ecd94d3..2e701e427 100644 --- a/src/gen_modules_partitioning.F90 +++ b/src/gen_modules_partitioning.F90 @@ -113,7 +113,7 @@ subroutine par_ex(COMM, mype, abort) ! finalizes MPI #ifndef __oasis if (present(abort)) then if (mype==0) write(*,*) 'Run finished unexpectedly!' - call MPI_ABORT(MPI_COMM_WORLD, 1 ) + call MPI_ABORT(MPI_COMM_WORLD, 1, error) else ! TODO: this is where fesom standalone, ifsinterface etc get to !1. there no abort actually even when model calls abort, and barrier may hang @@ -580,4 +580,3 @@ subroutine status_check(partit) call par_ex(partit%MPI_COMM_FESOM, partit%mype, 1) endif end subroutine status_check - diff --git a/src/ifs_interface/mpp_io.F90 b/src/ifs_interface/mpp_io.F90 index 6c57995e3..d7838cd32 100644 --- a/src/ifs_interface/mpp_io.F90 +++ b/src/ifs_interface/mpp_io.F90 @@ -6,6 +6,7 @@ !----------------------------------------------------- MODULE mpp_io + USE mpi #if defined(__MULTIO) USE iom, only : iom_enable_multio, iom_initialize, iom_init_server, iom_finalize #endif @@ -30,7 +31,6 @@ MODULE mpp_io SUBROUTINE mpp_io_init( iicomm, lio, irequired, iprovided, lmpi1 ) - INCLUDE "mpif.h" INTEGER, INTENT(INOUT) :: iicomm LOGICAL, INTENT(INOUT) :: lio INTEGER, INTENT(INOUT) :: irequired, iprovided @@ -126,7 +126,6 @@ SUBROUTINE mpp_io_init_2( iicomm ) INTEGER :: icode, ierr, icolor, iicommx, iicommm, iicommo INTEGER :: ji,inum LOGICAL :: lcompp - INCLUDE "mpif.h" ! Construct multio server communicator diff --git a/src/io_restart.F90 b/src/io_restart.F90 index 9077e27af..fd1121278 100644 --- a/src/io_restart.F90 +++ b/src/io_restart.F90 @@ -12,6 +12,7 @@ MODULE io_RESTART use MOD_PARTIT use MOD_PARSUP use fortran_utils + use mpi #if defined(__recom) use recom_glovar use recom_config @@ -771,7 +772,6 @@ subroutine read_all_raw_restarts(mpicomm, mype) integer fileunit integer status integer mpierr - include 'mpif.h' if(mype == RAW_RESTART_METADATA_RANK) then ! read metadata info for the raw restart @@ -860,7 +860,6 @@ subroutine finalize_restart() ! !_______________________________________________________________________________ subroutine read_restart(path, filegroup, mpicomm, mype) - include 'mpif.h' character(len=*), intent(in) :: path type(restart_file_group), intent(inout) :: filegroup integer, intent(in) :: mpicomm @@ -1004,7 +1003,6 @@ function is_due(unit, frequency, istep) result(d) ! integer mype ! integer npes ! integer mpierr -! include 'mpif.h' ! ! call MPI_Comm_Rank(mpicomm, mype, mpierr) ! call MPI_Comm_Size(mpicomm, npes, mpierr) @@ -1012,4 +1010,4 @@ function is_due(unit, frequency, istep) result(d) ! end function !!PS --> move this function also to fortran_utils.F90 -end module +end module \ No newline at end of file diff --git a/src/temp/MOD_PARTIT.F90 b/src/temp/MOD_PARTIT.F90 index bd3b7dec2..818b46541 100644 --- a/src/temp/MOD_PARTIT.F90 +++ b/src/temp/MOD_PARTIT.F90 @@ -5,9 +5,9 @@ module MOD_PARTIT USE, intrinsic :: ISO_FORTRAN_ENV USE MOD_WRITE_BINARY_ARRAYS USE MOD_READ_BINARY_ARRAYS +USE mpi IMPLICIT NONE SAVE -include 'mpif.h' integer, parameter :: MAX_LAENDERECK=16 integer, parameter :: MAX_NEIGHBOR_PARTITIONS=32 @@ -186,4 +186,4 @@ subroutine READ_T_PARTIT(partit, unit, iostat, iomsg) read(unit, iostat=iostat, iomsg=iomsg) partit%pe_status end subroutine READ_T_PARTIT -end module MOD_PARTIT +end module MOD_PARTIT \ No newline at end of file