Skip to content

Commit

Permalink
Add new cmake variable UFS_COMPILER_SUITE to support mixed Intel comp…
Browse files Browse the repository at this point in the history
…ilers (icx, icpx, ifort)
  • Loading branch information
climbfuji committed Nov 19, 2024
1 parent 6b0f516 commit 0ca9712
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 2 deletions.
14 changes: 13 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,19 @@ else()
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Set type of build to Release." FORCE)
endif()

include(cmake/${CMAKE_Fortran_COMPILER_ID}.cmake)
if (CMAKE_C_COMPILER_ID MATCHES "IntelLLVM" AND CMAKE_Fortran_COMPILER_ID MATCHES "IntelLLVM")
set(UFS_COMPILER_SUITE "IntelLLVM")
elseif (CMAKE_C_COMPILER_ID MATCHES "IntelLLVM" AND CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
set(UFS_COMPILER_SUITE "IntelMixed")
elseif (CMAKE_C_COMPILER_ID MATCHES "Intel" AND CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
set(UFS_COMPILER_SUITE "Intel")
elseif (CMAKE_C_COMPILER_ID MATCHES "GNU" AND CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
set(UFS_COMPILER_SUITE "GNU")
else()
message(FATAL_ERROR "C compiler ${CMAKE_C_COMPILER_ID} + Fortran compiler ${CMAKE_Fortran_COMPILER_ID} not supported")
endif()
message("UFS COMPILER SUITE: ${UFS_COMPILER_SUITE}")
include(cmake/${UFS_COMPILER_SUITE}.cmake)

###############################################################################
### Find Dependencies
Expand Down
1 change: 0 additions & 1 deletion cmake/Intel.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ endif()

if(DEBUG)
add_definitions(-DDEBUG)
#set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -O0 -check -check noarg_temp_created -check nopointer -warn -warn noerrors -fp-stack-check -fstack-protector-all -fpe0 -debug -ftrapuv -init=snan,arrays")
set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -O0 -check -check noarg_temp_created -warn -warn noerrors -fp-stack-check -fstack-protector-all -fpe0 -debug -ftrapuv -init=snan,arrays")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -ftrapuv")
else()
Expand Down
61 changes: 61 additions & 0 deletions cmake/IntelMixed.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g -traceback -fpp -fno-alias -auto -safe-cray-ptr -ftz -assume byterecl -sox -align array64byte -qno-opt-dynamic-align")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -qno-opt-dynamic-align -fp-model precise")

# warning #5462: Global name too long.
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -diag-disable 5462")

# remark #7712: This variable has not been used.
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -diag-disable 7712")

# remark #8291: Recommended relationship between field width 'W' and the number of fractional digits 'D' in this edit descriptor is 'W>=D+7'.
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -diag-disable 8291")

#DH MAKE THIS THE DEPRECATION WARNING SUPPRESSOR # warning #5194: Source line truncated.
#set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -diag-disable 5194")

if(CMAKE_Platform STREQUAL "derecho.intel")
set(CMAKE_Fortran_LINK_FLAGS "-Wl,--copy-dt-needed-entries")
endif()

if(NOT 32BIT)
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -real-size 64")
endif()

if(DEBUG)
add_definitions(-DDEBUG)
set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -O0 -check -check noarg_temp_created -warn -warn noerrors -fp-stack-check -fstack-protector-all -fpe0 -debug -ftrapuv -init=snan,arrays")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -ftrapuv")
else()
if(FASTER)
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -fp-model precise -assume buffered_stdout -fno-alias -align all -debug minimal -qoverride-limits -ftz -no-ip")
set(CMAKE_C_FLAGS_RELEASE "-O3 -fp-model precise -debug minimal -qoverride-limits -ftz")
else()
set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -debug minimal -qoverride-limits")
set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -fp-model consistent")
set(CMAKE_C_FLAGS_RELEASE "-O2 -debug minimal")
set(FAST "-fast-transcendentals")
endif()
if(AVX2)
set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -march=core-avx2")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march=core-avx2")
elseif(SIMDMULTIARCH)
set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -axSSE4.2,CORE-AVX2")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -axSSE4.2,CORE-AVX2")
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mcmodel=medium")
elseif(AVX)
set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -march=core-avx-i")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march=core-avx-i")
endif()
endif()

if(APPLE)
# The linker on macOS does not include `common symbols` by default
# Passing the -c flag includes them and fixes an error with undefined symbols
set(CMAKE_Fortran_ARCHIVE_FINISH "<CMAKE_RANLIB> -c <TARGET>")
endif()

# This must be last, to override all other optimization settings.
if(DISABLE_FMA)
set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -no-fma")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -no-fma")
endif()

0 comments on commit 0ca9712

Please sign in to comment.