Skip to content

Commit 44fd178

Browse files
authored
Merge branch E3SM-Project/copilot/ndkhommefix-cmake-logic-for-intel (PR #8172)
Fix HOMME CMake Intel/IntelLLVM compiler detection and add pm-cpu BFB machine file
2 parents 4f219e6 + 0a6d6aa commit 44fd178

File tree

9 files changed

+268
-7
lines changed

9 files changed

+268
-7
lines changed

components/eamxx/cmake/tpls/CsmShare.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ macro (CreateCsmShareTarget)
5858
target_compile_definitions(csm_share PUBLIC
5959
$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CXX_COMPILER_ID:GNU>>:CPRGNU>
6060
$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CXX_COMPILER_ID:Intel>>:CPRINTEL>
61+
$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CXX_COMPILER_ID:IntelLLVM>>:CPRINTEL>
6162
$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CXX_COMPILER_ID:Clang>>:CPRCRAY>
6263
$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CXX_COMPILER_ID:clang>>:CPRCRAY>
6364
EAMXX_STANDALONE)

components/eamxx/src/dynamics/homme/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ set (HOMME_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/homme CACHE INTERNAL "Homme bi
66

77
# If using Intel, we need to tell Homme to link against mkl rather than lapack
88

9-
if (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
9+
if (CMAKE_CXX_COMPILER_ID MATCHES "^(Intel|IntelLLVM)$")
1010
option (HOMME_USE_MKL "Whether to use Intel's MKL instead of blas/lapack" ON)
1111
option (HOMME_FIND_BLASLAPACK "Whether to use system blas/lapack" OFF)
1212
else ()

components/homme/cmake/SetCompilerFlags.cmake

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ ELSE ()
2626
ADD_DEFINITIONS(-DCPRPGI)
2727
ELSEIF (CMAKE_Fortran_COMPILER_ID STREQUAL PathScale)
2828
SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -extend-source")
29-
ELSEIF (CMAKE_Fortran_COMPILER_ID STREQUAL Intel)
29+
ELSEIF (CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel|IntelLLVM)$")
3030
SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -assume byterecl")
3131
SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fp-model fast -ftz")
3232
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model fast -ftz")
@@ -129,7 +129,7 @@ ELSE ()
129129
ELSEIF (CMAKE_Fortran_COMPILER_ID STREQUAL PGI)
130130
SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -O2")
131131
ELSEIF (CMAKE_Fortran_COMPILER_ID STREQUAL PathScale)
132-
ELSEIF (CMAKE_Fortran_COMPILER_ID STREQUAL Intel)
132+
ELSEIF (CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel|IntelLLVM)$")
133133
SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -O3")
134134
#SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mavx -DTEMP_INTEL_COMPILER_WORKAROUND_001")
135135
ELSEIF (CMAKE_Fortran_COMPILER_ID STREQUAL XL)
@@ -146,7 +146,7 @@ ELSE ()
146146
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
147147
ELSEIF (CMAKE_C_COMPILER_ID STREQUAL PGI)
148148
ELSEIF (CMAKE_C_COMPILER_ID STREQUAL PathScale)
149-
ELSEIF (CMAKE_C_COMPILER_ID STREQUAL Intel)
149+
ELSEIF (CMAKE_C_COMPILER_ID MATCHES "^(Intel|IntelLLVM)$")
150150
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
151151
#SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx -DTEMP_INTEL_COMPILER_WORKAROUND_001")
152152
ELSEIF (CMAKE_C_COMPILER_ID STREQUAL XL)
@@ -163,7 +163,7 @@ ELSE ()
163163
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -DNDEBUG")
164164
ELSEIF (CMAKE_CXX_COMPILER_ID STREQUAL PGI)
165165
ELSEIF (CMAKE_CXX_COMPILER_ID STREQUAL PathScale)
166-
ELSEIF (CMAKE_CXX_COMPILER_ID STREQUAL Intel)
166+
ELSEIF (CMAKE_CXX_COMPILER_ID MATCHES "^(Intel|IntelLLVM)$")
167167
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -DNDEBUG")
168168
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx -DTEMP_INTEL_COMPILER_WORKAROUND_001")
169169
ELSEIF (CMAKE_CXX_COMPILER_ID STREQUAL XL)
@@ -292,7 +292,7 @@ ENDIF ()
292292
OPTION(ENABLE_INTEL_PHI "Whether to build with Intel Xeon Phi (MIC) support" FALSE)
293293

294294
IF (ENABLE_INTEL_PHI)
295-
IF (NOT ${CMAKE_Fortran_COMPILER_ID} STREQUAL Intel)
295+
IF (NOT CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel|IntelLLVM)$")
296296
MESSAGE(FATAL_ERROR "Intel Phi acceleration only supported through the Intel compiler")
297297
ELSE ()
298298
SET(INTEL_PHI_FLAGS "-mmic")
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# CMake initial cache file
2+
#
3+
# This machine file works with either Intel or gnu
4+
# (selected by which modules are loaded)
5+
#
6+
#
7+
# Perlmutter generic MPI enabled compiler wrappers:
8+
SET (CMAKE_Fortran_COMPILER ftn CACHE FILEPATH "")
9+
SET (CMAKE_C_COMPILER cc CACHE FILEPATH "")
10+
SET (CMAKE_CXX_COMPILER CC CACHE FILEPATH "")
11+
12+
13+
# Set kokkos arch, to get correct avx flags
14+
SET (Kokkos_ARCH_ZEN3 ON CACHE BOOL "")
15+
16+
SET (WITH_PNETCDF FALSE CACHE FILEPATH "")
17+
18+
EXECUTE_PROCESS(COMMAND nf-config --prefix
19+
RESULT_VARIABLE NFCONFIG_RESULT
20+
OUTPUT_VARIABLE NFCONFIG_OUTPUT
21+
ERROR_VARIABLE NFCONFIG_ERROR
22+
OUTPUT_STRIP_TRAILING_WHITESPACE
23+
)
24+
SET (NetCDF_Fortran_PATH "${NFCONFIG_OUTPUT}" CACHE STRING "")
25+
26+
EXECUTE_PROCESS(COMMAND nc-config --prefix
27+
RESULT_VARIABLE NCCONFIG_RESULT
28+
OUTPUT_VARIABLE NCCONFIG_OUTPUT
29+
ERROR_VARIABLE NCCONFIG_ERROR
30+
OUTPUT_STRIP_TRAILING_WHITESPACE
31+
)
32+
SET (NetCDF_C_PATH "${NCCONFIG_OUTPUT}" CACHE STRING "")
33+
34+
SET (USE_QUEUING FALSE CACHE BOOL "")
35+
# for standalone HOMME builds:
36+
SET(CPRNC_DIR /global/cfs/cdirs/e3sm/tools/cprnc CACHE FILEPATH "")
37+
38+
SET (HOMMEXX_BFB_TESTING TRUE CACHE BOOL "")
39+
SET (BUILD_HOMME_PREQX_KOKKOS TRUE CACHE BOOL "")
40+
SET (BUILD_HOMME_THETA_KOKKOS TRUE CACHE BOOL "")
41+
SET (HOMME_TESTING_PROFILE "short" CACHE STRING "")
42+
43+
SET (HOMME_FIND_BLASLAPACK TRUE CACHE BOOL "")
44+
IF(DEFINED ENV{MKLROOT})
45+
SET (HOMME_USE_MKL "TRUE" CACHE FILEPATH "")
46+
# turn on additional intel compiler flags
47+
SET (ADD_Fortran_FLAGS "-traceback -fp-model strict -O1" CACHE STRING "")
48+
SET (ADD_C_FLAGS "-traceback -fp-model strict -O1" CACHE STRING "")
49+
SET (ADD_CXX_FLAGS "-traceback -fp-model strict -O1" CACHE STRING "")
50+
ENDIF()
51+
52+
53+
SET(USE_MPIEXEC "srun" CACHE STRING "")
54+
SET(USE_MPI_OPTIONS "-K --cpu_bind=cores" CACHE STRING "")
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# CMake initial cache file
2+
#
3+
# This machine file works with either Intel or gnu
4+
# (selected by which modules are loaded)
5+
#
6+
#
7+
# Perlmutter generic MPI enabled compiler wrappers:
8+
SET (CMAKE_Fortran_COMPILER ftn CACHE FILEPATH "")
9+
SET (CMAKE_C_COMPILER cc CACHE FILEPATH "")
10+
SET (CMAKE_CXX_COMPILER CC CACHE FILEPATH "")
11+
12+
13+
# Set kokkos arch, to get correct avx flags
14+
SET (Kokkos_ARCH_ZEN3 ON CACHE BOOL "")
15+
16+
SET (WITH_PNETCDF FALSE CACHE FILEPATH "")
17+
18+
EXECUTE_PROCESS(COMMAND nf-config --prefix
19+
RESULT_VARIABLE NFCONFIG_RESULT
20+
OUTPUT_VARIABLE NFCONFIG_OUTPUT
21+
ERROR_VARIABLE NFCONFIG_ERROR
22+
OUTPUT_STRIP_TRAILING_WHITESPACE
23+
)
24+
SET (NetCDF_Fortran_PATH "${NFCONFIG_OUTPUT}" CACHE STRING "")
25+
26+
EXECUTE_PROCESS(COMMAND nc-config --prefix
27+
RESULT_VARIABLE NCCONFIG_RESULT
28+
OUTPUT_VARIABLE NCCONFIG_OUTPUT
29+
ERROR_VARIABLE NCCONFIG_ERROR
30+
OUTPUT_STRIP_TRAILING_WHITESPACE
31+
)
32+
SET (NetCDF_C_PATH "${NCCONFIG_OUTPUT}" CACHE STRING "")
33+
34+
SET (USE_QUEUING FALSE CACHE BOOL "")
35+
# for standalone HOMME builds:
36+
SET(CPRNC_DIR /global/cfs/cdirs/e3sm/tools/cprnc CACHE FILEPATH "")
37+
38+
SET (HOMME_FIND_BLASLAPACK TRUE CACHE BOOL "")
39+
IF(DEFINED ENV{MKLROOT})
40+
SET (HOMME_USE_MKL "TRUE" CACHE FILEPATH "")
41+
# turn on additional intel compiler flags
42+
SET (ADD_Fortran_FLAGS "-traceback" CACHE STRING "")
43+
SET (ADD_C_FLAGS "-traceback" CACHE STRING "")
44+
SET (ADD_CXX_FLAGS "-traceback" CACHE STRING "")
45+
ENDIF()
46+
47+
48+
SET(USE_MPIEXEC "srun" CACHE STRING "")
49+
SET(USE_MPI_OPTIONS "-K --cpu_bind=cores" CACHE STRING "")
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# CMake initial cache file
2+
#
3+
# This machine file works with either Intel or gnu
4+
# (selected by which modules are loaded)
5+
#
6+
#
7+
# Perlmutter generic MPI enabled compiler wrappers:
8+
SET (CMAKE_Fortran_COMPILER ftn CACHE FILEPATH "")
9+
SET (CMAKE_C_COMPILER cc CACHE FILEPATH "")
10+
SET (CMAKE_CXX_COMPILER CC CACHE FILEPATH "")
11+
12+
13+
# Set kokkos arch, to get correct avx flags
14+
SET (Kokkos_ARCH_ZEN3 ON CACHE BOOL "")
15+
16+
SET (WITH_PNETCDF FALSE CACHE FILEPATH "")
17+
18+
EXECUTE_PROCESS(COMMAND nf-config --prefix
19+
RESULT_VARIABLE NFCONFIG_RESULT
20+
OUTPUT_VARIABLE NFCONFIG_OUTPUT
21+
ERROR_VARIABLE NFCONFIG_ERROR
22+
OUTPUT_STRIP_TRAILING_WHITESPACE
23+
)
24+
SET (NetCDF_Fortran_PATH "${NFCONFIG_OUTPUT}" CACHE STRING "")
25+
26+
EXECUTE_PROCESS(COMMAND nc-config --prefix
27+
RESULT_VARIABLE NCCONFIG_RESULT
28+
OUTPUT_VARIABLE NCCONFIG_OUTPUT
29+
ERROR_VARIABLE NCCONFIG_ERROR
30+
OUTPUT_STRIP_TRAILING_WHITESPACE
31+
)
32+
SET (NetCDF_C_PATH "${NCCONFIG_OUTPUT}" CACHE STRING "")
33+
34+
SET (USE_QUEUING FALSE CACHE BOOL "")
35+
# for standalone HOMME builds:
36+
SET(CPRNC_DIR /global/cfs/cdirs/e3sm/tools/cprnc CACHE FILEPATH "")
37+
38+
SET (HOMMEXX_BFB_TESTING TRUE CACHE BOOL "")
39+
SET (BUILD_HOMME_PREQX_KOKKOS TRUE CACHE BOOL "")
40+
SET (BUILD_HOMME_THETA_KOKKOS TRUE CACHE BOOL "")
41+
SET (HOMME_TESTING_PROFILE "short" CACHE STRING "")
42+
43+
SET (HOMME_FIND_BLASLAPACK TRUE CACHE BOOL "")
44+
IF(DEFINED ENV{MKLROOT})
45+
SET (HOMME_USE_MKL "TRUE" CACHE FILEPATH "")
46+
# turn on additional intel compiler flags
47+
SET (ADD_Fortran_FLAGS "-traceback -fp-model strict -O1" CACHE STRING "")
48+
SET (ADD_C_FLAGS "-traceback -fp-model strict -O1" CACHE STRING "")
49+
SET (ADD_CXX_FLAGS "-traceback -fp-model strict -O1" CACHE STRING "")
50+
ENDIF()
51+
52+
53+
SET(USE_MPIEXEC "srun" CACHE STRING "")
54+
SET(USE_MPI_OPTIONS "-K --cpu_bind=cores" CACHE STRING "")
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# CMake initial cache file
2+
#
3+
# This machine file works with either Intel or gnu
4+
# (selected by which modules are loaded)
5+
#
6+
#
7+
# Perlmutter generic MPI enabled compiler wrappers:
8+
SET (CMAKE_Fortran_COMPILER ftn CACHE FILEPATH "")
9+
SET (CMAKE_C_COMPILER cc CACHE FILEPATH "")
10+
SET (CMAKE_CXX_COMPILER CC CACHE FILEPATH "")
11+
12+
13+
# Set kokkos arch, to get correct avx flags
14+
SET (Kokkos_ARCH_ZEN3 ON CACHE BOOL "")
15+
16+
SET (WITH_PNETCDF FALSE CACHE FILEPATH "")
17+
18+
EXECUTE_PROCESS(COMMAND nf-config --prefix
19+
RESULT_VARIABLE NFCONFIG_RESULT
20+
OUTPUT_VARIABLE NFCONFIG_OUTPUT
21+
ERROR_VARIABLE NFCONFIG_ERROR
22+
OUTPUT_STRIP_TRAILING_WHITESPACE
23+
)
24+
SET (NetCDF_Fortran_PATH "${NFCONFIG_OUTPUT}" CACHE STRING "")
25+
26+
EXECUTE_PROCESS(COMMAND nc-config --prefix
27+
RESULT_VARIABLE NCCONFIG_RESULT
28+
OUTPUT_VARIABLE NCCONFIG_OUTPUT
29+
ERROR_VARIABLE NCCONFIG_ERROR
30+
OUTPUT_STRIP_TRAILING_WHITESPACE
31+
)
32+
SET (NetCDF_C_PATH "${NCCONFIG_OUTPUT}" CACHE STRING "")
33+
34+
SET (USE_QUEUING FALSE CACHE BOOL "")
35+
# for standalone HOMME builds:
36+
SET(CPRNC_DIR /global/cfs/cdirs/e3sm/tools/cprnc CACHE FILEPATH "")
37+
38+
SET (HOMME_FIND_BLASLAPACK TRUE CACHE BOOL "")
39+
IF(DEFINED ENV{MKLROOT})
40+
SET (HOMME_USE_MKL "TRUE" CACHE FILEPATH "")
41+
# turn on additional intel compiler flags
42+
SET (ADD_Fortran_FLAGS "-traceback" CACHE STRING "")
43+
SET (ADD_C_FLAGS "-traceback" CACHE STRING "")
44+
SET (ADD_CXX_FLAGS "-traceback" CACHE STRING "")
45+
ENDIF()
46+
47+
48+
SET(USE_MPIEXEC "srun" CACHE STRING "")
49+
SET(USE_MPI_OPTIONS "-K --cpu_bind=cores" CACHE STRING "")
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# CMake initial cache file
2+
#
3+
# This machine file works with either Intel or gnu
4+
# (selected by which modules are loaded)
5+
#
6+
#
7+
# Perlmutter generic MPI enabled compiler wrappers:
8+
SET (CMAKE_Fortran_COMPILER ftn CACHE FILEPATH "")
9+
SET (CMAKE_C_COMPILER cc CACHE FILEPATH "")
10+
SET (CMAKE_CXX_COMPILER CC CACHE FILEPATH "")
11+
12+
13+
# Set kokkos arch, to get correct avx flags
14+
SET (Kokkos_ARCH_ZEN3 ON CACHE BOOL "")
15+
16+
SET (WITH_PNETCDF FALSE CACHE FILEPATH "")
17+
18+
EXECUTE_PROCESS(COMMAND nf-config --prefix
19+
RESULT_VARIABLE NFCONFIG_RESULT
20+
OUTPUT_VARIABLE NFCONFIG_OUTPUT
21+
ERROR_VARIABLE NFCONFIG_ERROR
22+
OUTPUT_STRIP_TRAILING_WHITESPACE
23+
)
24+
SET (NetCDF_Fortran_PATH "${NFCONFIG_OUTPUT}" CACHE STRING "")
25+
26+
EXECUTE_PROCESS(COMMAND nc-config --prefix
27+
RESULT_VARIABLE NCCONFIG_RESULT
28+
OUTPUT_VARIABLE NCCONFIG_OUTPUT
29+
ERROR_VARIABLE NCCONFIG_ERROR
30+
OUTPUT_STRIP_TRAILING_WHITESPACE
31+
)
32+
SET (NetCDF_C_PATH "${NCCONFIG_OUTPUT}" CACHE STRING "")
33+
34+
SET (USE_QUEUING FALSE CACHE BOOL "")
35+
# for standalone HOMME builds:
36+
SET(CPRNC_DIR /global/cfs/cdirs/e3sm/tools/cprnc CACHE FILEPATH "")
37+
38+
SET (HOMMEXX_BFB_TESTING TRUE CACHE BOOL "")
39+
SET (BUILD_HOMME_PREQX_KOKKOS TRUE CACHE BOOL "")
40+
SET (BUILD_HOMME_THETA_KOKKOS TRUE CACHE BOOL "")
41+
SET (HOMME_TESTING_PROFILE "short" CACHE STRING "")
42+
43+
SET (HOMME_FIND_BLASLAPACK TRUE CACHE BOOL "")
44+
IF(DEFINED ENV{MKLROOT})
45+
SET (HOMME_USE_MKL "TRUE" CACHE FILEPATH "")
46+
# turn on additional intel compiler flags
47+
SET (ADD_Fortran_FLAGS "-traceback -fp-model strict -O1" CACHE STRING "")
48+
SET (ADD_C_FLAGS "-traceback -fp-model strict -O1" CACHE STRING "")
49+
SET (ADD_CXX_FLAGS "-traceback -fp-model strict -O1" CACHE STRING "")
50+
ENDIF()
51+
52+
53+
SET(USE_MPIEXEC "srun" CACHE STRING "")
54+
SET(USE_MPI_OPTIONS "-K --cpu_bind=cores" CACHE STRING "")

components/homme/cmake/machineFiles/pm-cpu.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ SET (CMAKE_CXX_COMPILER CC CACHE FILEPATH "")
1111

1212

1313
# Set kokkos arch, to get correct avx flags
14-
SET (Kokkos_ARCH_ZEN2 ON CACHE BOOL "")
14+
SET (Kokkos_ARCH_ZEN3 ON CACHE BOOL "")
1515

1616
SET (WITH_PNETCDF FALSE CACHE FILEPATH "")
1717

0 commit comments

Comments
 (0)