Commit 078cb895 authored by Henderson, Shane's avatar Henderson, Shane
Browse files

Merge branch 'intel_compile' into 'master'

Get Futility compiling with IntelLLVM (OneAPI) compiler ifx

See merge request https://code.ornl.gov/futility/Futility/-/merge_requests/397
parents 75e30a92 b9409a3f
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ FUNCTION(CHECK_MPI_F2003_STANDARD_COMPILES )

            #Determine appropriate flag for compiler test
            IF(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" OR
              (MSVC_IDE AND "${CMAKE_Fortran_COMPILER}" STREQUAL "ifort"))
              (MSVC_IDE AND "${CMAKE_Fortran_COMPILER}" STREQUAL "ifx"))
              IF("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
                SET(FSTDFLAG "/std:f03")
              ELSE()
+2 −2
Original line number Diff line number Diff line
@@ -27,8 +27,8 @@ FUNCTION(CHECK_MPI_F2008_STANDARD_COMPILES )
            INCLUDE(CheckFortranSourceCompiles)

            #Determine appropriate flag for compiler test
            IF(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" OR
              (MSVC_IDE AND "${CMAKE_Fortran_COMPILER}" STREQUAL "ifort"))
            IF(CMAKE_Fortran_COMPILER_ID STREQUAL "IntelLLVM" OR
              (MSVC_IDE AND "${CMAKE_Fortran_COMPILER}" STREQUAL "ifx"))
              IF("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
                SET(FSTDFLAG "/std:f08")
              ELSE()
+20 −12
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ FOREACH(ctyp ${CONFIG_TYPES})
ENDFOREACH()

# Determine symbol for command line compiler option
IF("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" AND CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
IF("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" AND CMAKE_Fortran_COMPILER_ID STREQUAL "IntelLLVM")
    SET(CSYM "/")
ELSE()
    SET(CSYM "-")
@@ -75,6 +75,10 @@ IF(${PROJECT_NAME}_GPROF)
    MESSAGE(STATUS "Enabling gprof profiling")
ENDIF()

IF(${PROJECT_NAME}_FPE_TRAP)
    MESSAGE(STATUS "Enabling FPE trap")
ENDIF()

# Preprocessor symbol for tests
IF(${PACKAGE_NAME}_ENABLE_TESTS)
    SET(${PACKAGE_NAME}_DEFINES ${${PACKAGE_NAME}_DEFINES} UNIT_TEST)
@@ -129,8 +133,8 @@ ENDIF()

# Override the CMAKE default Fortran flags (cause they're stupid)
# Done for each supported compiler
IF(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" OR
   (MSVC_IDE AND "${CMAKE_Fortran_COMPILER}" STREQUAL "ifort"))
IF(${CMAKE_Fortran_COMPILER_ID} STREQUAL "IntelLLVM" OR
   (MSVC_IDE AND "${CMAKE_Fortran_COMPILER}" STREQUAL "ifx"))

    IF("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
        SET(s ":")
@@ -156,10 +160,11 @@ IF(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" OR
    ENDIF()

    IF(${PROJECT_NAME}_FPE_TRAP)
        SET(Fortran_FLAGS
            ${Fortran_FLAGS}
            ${CSYM}fpe-all${s}0
           )
        MESSAGE(STATUS "Cannot enable floating point exceptions with ifx compiler")
        # SET(Fortran_FLAGS
        #     ${Fortran_FLAGS}
        #     ${CSYM}fp-model=
        #    )
    ENDIF()

    IF(${PROJECT_NAME}_SUPPRESS_WARNINGS)
@@ -184,10 +189,12 @@ IF(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" OR


    SET(Fortran_FLAGS_DEBUG
        ${CSYM}O0
        ${CSYM}g3
        ${CSYM}debug${s}full
        ${CSYM}debug-parameters${s}all
        ${CSYM}warn${s}all
        ${CSYM}check${s}all
        ${CSYM}check${s}all,nouninit
        ${CSYM}traceback
       )
    IF("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
@@ -197,14 +204,15 @@ IF(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" OR

    SET(Fortran_FLAGS_RELEASE
        ${CSYM}O3
        ${CSYM}Os
        ${CSYM}fprotect-parens
       )

    SET(Fortran_FLAGS_RELWITHDEBINFO
        ${CSYM}g2
        ${CSYM}O3
        ${CSYM}Os
        ${CSYM}debug${s}full
        ${CSYM}check${s}all
        ${CSYM}fprotect-parens
        ${CSYM}warn${s}all
        ${CSYM}traceback
       )

    IF(${PACKAGE_NAME}_ENABLE_MKL)
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@
# @HEADER
GLOBAL_SET(PARDISO_LIBRARY_DIRS "$ENV{MKLROOT}/lib/intel64")

IF(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
IF(CMAKE_Fortran_COMPILER_ID STREQUAL "IntelLLVM")
TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES( PARDISO
  REQUIRED_HEADERS mkl_pardiso.h
  REQUIRED_LIBS_NAMES mkl_intel_lp64 mkl_intel_thread mkl_core
+21 −17
Original line number Diff line number Diff line
@@ -2990,13 +2990,15 @@ SUBROUTINE write_l1(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  INTEGER(SIK),DIMENSION(1),INTENT(IN),OPTIONAL :: cnt_in
  INTEGER(SIK),DIMENSION(1),INTENT(IN),OPTIONAL :: offset_in
#ifdef FUTILITY_HAVE_HDF5
  REAL(SDK) :: vals(SIZE(valst))
  REAL(SDK),ALLOCATABLE :: vals(:)
  CHARACTER(LEN=LEN(dsetname)+1) :: path
  INTEGER(HSIZE_T),DIMENSION(1) :: ldims,gdims,offset,cnt
  INTEGER,PARAMETER :: rank=1

  INTEGER(HID_T) :: mem,dspace_id,dset_id,gspace_id,plist_id

  vals=DBLE(valst)

  ! stash offset
  offset(1)=LBOUND(vals,1)-1
  IF(PRESENT(offset_in)) offset=offset_in
@@ -3018,7 +3020,6 @@ SUBROUTINE write_l1(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  CALL preWrite(thisHDF5File,rank,gdims,ldims,path,mem,dset_id,dspace_id, &
      gspace_id,plist_id,error,cnt,offset)
  mem=H5T_NATIVE_DOUBLE
  vals=DBLE(valst)
  IF(error == 0) &
      CALL h5dwrite_f(dset_id,mem,vals,gdims,error,dspace_id,gspace_id,plist_id)
  CALL postWrite(thisHDF5File,error,dset_id,dspace_id,gspace_id,plist_id)
@@ -3045,13 +3046,15 @@ SUBROUTINE write_l2(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  INTEGER(SIK),DIMENSION(2),INTENT(IN),OPTIONAL :: cnt_in
  INTEGER(SIK),DIMENSION(2),INTENT(IN),OPTIONAL :: offset_in
#ifdef FUTILITY_HAVE_HDF5
  REAL(SDK) :: vals(SIZE(valst,1),SIZE(valst,2))
  REAL(SDK),ALLOCATABLE :: vals(:,:)
  CHARACTER(LEN=LEN(dsetname)+1) :: path
  INTEGER(HSIZE_T),DIMENSION(2) :: ldims,gdims,offset,cnt
  INTEGER,PARAMETER :: rank=2

  INTEGER(HID_T) :: mem,dspace_id,dset_id,gspace_id,plist_id

  vals=DBLE(valst)

  ! stash offset
  offset(1)=LBOUND(vals,1)-1
  offset(2)=LBOUND(vals,2)-1
@@ -3074,7 +3077,6 @@ SUBROUTINE write_l2(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  CALL preWrite(thisHDF5File,rank,gdims,ldims,path,mem,dset_id,dspace_id, &
      gspace_id,plist_id,error,cnt,offset)
  mem=H5T_NATIVE_DOUBLE
  vals=DBLE(valst)
  IF(error == 0) &
      CALL h5dwrite_f(dset_id,mem,vals,gdims,error,dspace_id,gspace_id,plist_id)
  CALL postWrite(thisHDF5File,error,dset_id,dspace_id,gspace_id,plist_id)
@@ -3101,13 +3103,15 @@ SUBROUTINE write_l3(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  INTEGER(SIK),DIMENSION(3),INTENT(IN),OPTIONAL :: cnt_in
  INTEGER(SIK),DIMENSION(3),INTENT(IN),OPTIONAL :: offset_in
#ifdef FUTILITY_HAVE_HDF5
  REAL(SDK) :: vals(SIZE(valst,1),SIZE(valst,2),SIZE(valst,3))
  REAL(SDK),ALLOCATABLE :: vals(:,:,:)
  CHARACTER(LEN=LEN(dsetname)+1) :: path
  INTEGER(HSIZE_T),DIMENSION(3) :: ldims,gdims,offset,cnt
  INTEGER,PARAMETER :: rank=3

  INTEGER(HID_T) :: mem,dspace_id,dset_id,gspace_id,plist_id

  vals=DBLE(valst)

  ! stash offset
  offset(1)=LBOUND(vals,1)-1
  offset(2)=LBOUND(vals,2)-1
@@ -3131,7 +3135,6 @@ SUBROUTINE write_l3(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  CALL preWrite(thisHDF5File,rank,gdims,ldims,path,mem,dset_id,dspace_id, &
      gspace_id,plist_id,error,cnt,offset)
  mem=H5T_NATIVE_DOUBLE
  vals=DBLE(valst)
  IF(error == 0) &
      CALL h5dwrite_f(dset_id,mem,vals,gdims,error,dspace_id,gspace_id,plist_id)
  CALL postWrite(thisHDF5File,error,dset_id,dspace_id,gspace_id,plist_id)
@@ -3158,13 +3161,15 @@ SUBROUTINE write_l4(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  INTEGER(SIK),DIMENSION(4),INTENT(IN),OPTIONAL :: cnt_in
  INTEGER(SIK),DIMENSION(4),INTENT(IN),OPTIONAL :: offset_in
#ifdef FUTILITY_HAVE_HDF5
  REAL(SDK) :: vals(SIZE(valst,1),SIZE(valst,2),SIZE(valst,3),SIZE(valst,4))
  REAL(SDK),ALLOCATABLE :: vals(:,:,:,:)
  CHARACTER(LEN=LEN(dsetname)+1) :: path
  INTEGER(HSIZE_T),DIMENSION(4) :: ldims,gdims,offset,cnt
  INTEGER,PARAMETER :: rank=4

  INTEGER(HID_T) :: mem,dspace_id,dset_id,gspace_id,plist_id

  vals=DBLE(valst)

  ! stash offset
  offset(1)=LBOUND(vals,1)-1
  offset(2)=LBOUND(vals,2)-1
@@ -3189,7 +3194,6 @@ SUBROUTINE write_l4(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  CALL preWrite(thisHDF5File,rank,gdims,ldims,path,mem,dset_id,dspace_id, &
      gspace_id,plist_id,error,cnt,offset)
  mem=H5T_NATIVE_DOUBLE
  vals=DBLE(valst)
  IF(error == 0) &
      CALL h5dwrite_f(dset_id,mem,vals,gdims,error,dspace_id,gspace_id,plist_id)
  CALL postWrite(thisHDF5File,error,dset_id,dspace_id,gspace_id,plist_id)
@@ -3216,14 +3220,15 @@ SUBROUTINE write_l5(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  INTEGER(SIK),DIMENSION(5),INTENT(IN),OPTIONAL :: cnt_in
  INTEGER(SIK),DIMENSION(5),INTENT(IN),OPTIONAL :: offset_in
#ifdef FUTILITY_HAVE_HDF5
  REAL(SDK) :: vals(SIZE(valst,1),SIZE(valst,2),SIZE(valst,3), &
      SIZE(valst,4),SIZE(valst,5))
  REAL(SDK),ALLOCATABLE :: vals(:,:,:,:,:)
  CHARACTER(LEN=LEN(dsetname)+1) :: path
  INTEGER(HSIZE_T),DIMENSION(5) :: ldims,gdims,offset,cnt
  INTEGER,PARAMETER :: rank=5

  INTEGER(HID_T) :: mem,dspace_id,dset_id,gspace_id,plist_id

  vals=DBLE(valst)

  ! stash offset
  offset(1)=LBOUND(vals,1)-1
  offset(2)=LBOUND(vals,2)-1
@@ -3249,7 +3254,6 @@ SUBROUTINE write_l5(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  CALL preWrite(thisHDF5File,rank,gdims,ldims,path,mem,dset_id,dspace_id, &
      gspace_id,plist_id,error,cnt,offset)
  mem=H5T_NATIVE_DOUBLE
  vals=DBLE(valst)
  IF(error == 0) &
      CALL h5dwrite_f(dset_id,mem,vals,gdims,error,dspace_id,gspace_id,plist_id)
  CALL postWrite(thisHDF5File,error,dset_id,dspace_id,gspace_id,plist_id)
@@ -3276,14 +3280,15 @@ SUBROUTINE write_l6(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  INTEGER(SIK),DIMENSION(6),INTENT(IN),OPTIONAL :: cnt_in
  INTEGER(SIK),DIMENSION(6),INTENT(IN),OPTIONAL :: offset_in
#ifdef FUTILITY_HAVE_HDF5
  REAL(SDK) :: vals(SIZE(valst,1),SIZE(valst,2),SIZE(valst,3), &
      SIZE(valst,4),SIZE(valst,5),SIZE(valst,6))
  REAL(SDK),ALLOCATABLE :: vals(:,:,:,:,:,:)
  CHARACTER(LEN=LEN(dsetname)+1) :: path
  INTEGER(HSIZE_T),DIMENSION(6) :: ldims,gdims,offset,cnt
  INTEGER,PARAMETER :: rank=6

  INTEGER(HID_T) :: mem,dspace_id,dset_id,gspace_id,plist_id

  vals=DBLE(valst)

  ! stash offset
  offset(1)=LBOUND(vals,1)-1
  offset(2)=LBOUND(vals,2)-1
@@ -3310,7 +3315,6 @@ SUBROUTINE write_l6(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  CALL preWrite(thisHDF5File,rank,gdims,ldims,path,mem,dset_id,dspace_id, &
      gspace_id,plist_id,error,cnt,offset)
  mem=H5T_NATIVE_DOUBLE
  vals=DBLE(valst)
  IF(error == 0) &
      CALL h5dwrite_f(dset_id,mem,vals,gdims,error,dspace_id,gspace_id,plist_id)
  CALL postWrite(thisHDF5File,error,dset_id,dspace_id,gspace_id,plist_id)
@@ -3337,14 +3341,15 @@ SUBROUTINE write_l7(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  INTEGER(SIK),DIMENSION(7),INTENT(IN),OPTIONAL :: cnt_in
  INTEGER(SIK),DIMENSION(7),INTENT(IN),OPTIONAL :: offset_in
#ifdef FUTILITY_HAVE_HDF5
  REAL(SDK) :: vals(SIZE(valst,1),SIZE(valst,2),SIZE(valst,3), &
      SIZE(valst,4),SIZE(valst,5),SIZE(valst,6),SIZE(valst,7))
  REAL(SDK),ALLOCATABLE :: vals(:,:,:,:,:,:,:)
  CHARACTER(LEN=LEN(dsetname)+1) :: path
  INTEGER(HSIZE_T),DIMENSION(7) :: ldims,gdims,offset,cnt
  INTEGER,PARAMETER :: rank=7

  INTEGER(HID_T) :: mem,dspace_id,dset_id,gspace_id,plist_id

  vals=DBLE(valst)

  ! stash offset
  offset(1)=LBOUND(vals,1)-1
  offset(2)=LBOUND(vals,2)-1
@@ -3372,7 +3377,6 @@ SUBROUTINE write_l7(thisHDF5File,dsetname,valst,gdims_in,cnt_in,offset_in)
  CALL preWrite(thisHDF5File,rank,gdims,ldims,path,mem,dset_id,dspace_id, &
      gspace_id,plist_id,error,cnt,offset)
  mem=H5T_NATIVE_DOUBLE
  vals=DBLE(valst)
  IF(error == 0) &
      CALL h5dwrite_f(dset_id,mem,vals,gdims,error,dspace_id,gspace_id,plist_id)
  CALL postWrite(thisHDF5File,error,dset_id,dspace_id,gspace_id,plist_id)
Loading