diff --git a/cime b/cime index 80220601778a..6bc232527540 160000 --- a/cime +++ b/cime @@ -1 +1 @@ -Subproject commit 80220601778a29d2254cc2759cfc034350ba0b57 +Subproject commit 6bc232527540af1d0a6a9056b1454d3b8f3f5ca9 diff --git a/cime_config/machines/cmake_macros/CNL.cmake b/cime_config/machines/cmake_macros/CNL.cmake new file mode 100644 index 000000000000..4b9370bca66c --- /dev/null +++ b/cime_config/machines/cmake_macros/CNL.cmake @@ -0,0 +1,18 @@ +if (NOT MPILIB STREQUAL impi) + string(APPEND CMAKE_OPTS " -DCMAKE_SYSTEM_NAME=Catamount") +endif() +string(APPEND CPPDEFS " -DLINUX") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY") +endif() +set(MPICC "cc") +set(MPICXX "CC") +set(MPIFC "ftn") +set(MPI_LIB_NAME "mpich") +set(MPI_PATH "$ENV{MPICH_DIR}") +set(NETCDF_PATH "$ENV{NETCDF_DIR}") +set(PIO_FILESYSTEM_HINTS "lustre") +set(PNETCDF_PATH "$ENV{PARALLEL_NETCDF_DIR}") +set(SCC "cc") +set(SCXX "CC") +set(SFC "ftn") diff --git a/cime_config/machines/cmake_macros/Darwin.cmake b/cime_config/machines/cmake_macros/Darwin.cmake new file mode 100644 index 000000000000..d38b2b29e943 --- /dev/null +++ b/cime_config/machines/cmake_macros/Darwin.cmake @@ -0,0 +1,4 @@ +string(APPEND CPPDEFS " -DSYSDARWIN") +if (COMP_CLASS STREQUAL cpl) + string(APPEND LDFLAGS " -all_load") +endif() diff --git a/cime_config/machines/cmake_macros/Macros.cmake b/cime_config/machines/cmake_macros/Macros.cmake new file mode 100644 index 000000000000..8779ddc1f5f7 --- /dev/null +++ b/cime_config/machines/cmake_macros/Macros.cmake @@ -0,0 +1,39 @@ +# +# Use this file to include the relevant macros based on +# machine/compiler settings. This file gets copied to CASEROOT +# and that's the one that gets included by the build system. Feel free +# to modify this file in the CASEROOT. +# +cmake_policy(SET CMP0057 NEW) + +set(MACROS_DIR ${CASEROOT}/cmake_macros) + +set(UNIVERSAL_MACRO ${MACROS_DIR}/universal.cmake) +set(COMPILER_MACRO ${MACROS_DIR}/${COMPILER}.cmake) +set(OS_MACRO ${MACROS_DIR}/${OS}.cmake) +set(MACHINE_MACRO ${MACROS_DIR}/${MACH}.cmake) +set(COMPILER_OS_MACRO ${MACROS_DIR}/${COMPILER}_${OS}.cmake) +set(COMPILER_MACHINE_MACRO ${MACROS_DIR}/${COMPILER}_${MACH}.cmake) + +if (CONVERT_TO_MAKE) + get_cmake_property(VARS_BEFORE_BUILD_INTERNAL_IGNORE VARIABLES) +endif() + +# Include order defines precedence +foreach (MACRO_FILE ${UNIVERSAL_MACRO} ${COMPILER_MACRO} ${OS_MACRO} ${MACHINE_MACRO} ${COMPILER_OS_MACRO} ${COMPILER_MACHINE_MACRO}) + if (EXISTS ${MACRO_FILE}) + include(${MACRO_FILE}) + else() + message("No macro file found: ${MACRO_FILE}") + endif() +endforeach() + +if (CONVERT_TO_MAKE) + get_cmake_property(VARS_AFTER VARIABLES) + + foreach (VAR_AFTER IN LISTS VARS_AFTER) + if (NOT VAR_AFTER IN_LIST VARS_BEFORE_BUILD_INTERNAL_IGNORE) + message("E3SM_SET_MAKEFILE_VAR ${VAR_AFTER} := ${${VAR_AFTER}}") + endif() + endforeach() +endif() diff --git a/cime_config/machines/cmake_macros/cray.cmake b/cime_config/machines/cmake_macros/cray.cmake new file mode 100644 index 000000000000..7cb77bbbde40 --- /dev/null +++ b/cime_config/machines/cmake_macros/cray.cmake @@ -0,0 +1,26 @@ +if (compile_threaded) + string(APPEND CFLAGS " -h omp") +endif() +if (DEBUG) + string(APPEND CFLAGS " -g -O0") +endif() +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_R16 -DCPRCRAY") +set(FC_AUTO_R8 "-s real64") +set(FFLAGS "-f free -N 255 -h byteswapio -em") +if (compile_threaded) + string(APPEND FFLAGS " -h omp") +endif() +if (NOT compile_threaded) + string(APPEND FFLAGS " -M1077") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -O0") +endif() +set(FFLAGS_NOOPT "-O0") +set(HAS_F2008_CONTIGUOUS "TRUE") +set(LDFLAGS "-Wl,--allow-multiple-definition -h byteswapio") +if (compile_threaded) + string(APPEND LDFLAGS " -h omp") +endif() +set(SUPPORTS_CXX "TRUE") +set(CXX_LINKER "FORTRAN") diff --git a/cime_config/machines/cmake_macros/cray_theta.cmake b/cime_config/machines/cmake_macros/cray_theta.cmake new file mode 100644 index 000000000000..f91c659ffe1a --- /dev/null +++ b/cime_config/machines/cmake_macros/cray_theta.cmake @@ -0,0 +1,21 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O1") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O1") +endif() +if (COMP_NAME STREQUAL eam) + string(APPEND FFLAGS " -vector0") +endif() +set(CXX_LINKER "CXX") +set(KOKKOS_OPTIONS "--gcc-toolchain=/opt/gcc/9.3.0/snos --with-serial") +set(CXXFLAGS "-std=c++14") +if (compile_threaded) + string(APPEND CXXFLAGS " -fopenmp") +endif() +if (DEBUG) + string(APPEND CXXFLAGS " -g -Wall") +endif() +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O1") +endif() diff --git a/cime_config/machines/cmake_macros/gnu.cmake b/cime_config/machines/cmake_macros/gnu.cmake new file mode 100644 index 000000000000..ba8fe6466303 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu.cmake @@ -0,0 +1,56 @@ +set(CFLAGS "-mcmodel=medium") +if (compile_threaded) + string(APPEND CFLAGS " -fopenmp") +endif() +if (DEBUG) + string(APPEND CFLAGS " -g -Wall -fbacktrace -fcheck=bounds -ffpe-trap=invalid,zero,overflow") +endif() +if (NOT DEBUG) + string(APPEND CFLAGS " -O") +endif() +if (COMP_NAME STREQUAL csm_share) + string(APPEND CFLAGS " -std=c99") +endif() +set(CXXFLAGS "-std=c++14") +if (compile_threaded) + string(APPEND CXXFLAGS " -fopenmp") +endif() +if (DEBUG) + string(APPEND CXXFLAGS " -g -Wall -fbacktrace") +endif() +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O") +endif() +if (COMP_NAME STREQUAL cism) + string(APPEND CMAKE_OPTS " -D CISM_GNU=ON") +endif() +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_R16 -DCPRGNU") +if (DEBUG) + string(APPEND CPPDEFS " -DYAKL_DEBUG") +endif() +set(CXX_LINKER "FORTRAN") +set(FC_AUTO_R8 "-fdefault-real-8") +set(FFLAGS "-mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none") +if (compile_threaded) + string(APPEND FFLAGS " -fopenmp") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -Wall -fbacktrace -fcheck=bounds -ffpe-trap=zero,overflow") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O") +endif() +set(FFLAGS_NOOPT "-O0") +set(FIXEDFLAGS "-ffixed-form") +set(FREEFLAGS "-ffree-form") +set(HAS_F2008_CONTIGUOUS "FALSE") +if (compile_threaded) + string(APPEND LDFLAGS " -fopenmp") +endif() +set(MPICC "mpicc") +set(MPICXX "mpicxx") +set(MPIFC "mpif90") +set(SCC "gcc") +set(SCXX "g++") +set(SFC "gfortran") +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/gnu_anlworkstation.cmake b/cime_config/machines/cmake_macros/gnu_anlworkstation.cmake new file mode 100644 index 000000000000..a130c1819a8d --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_anlworkstation.cmake @@ -0,0 +1,15 @@ +set(ALBANY_PATH "/projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install") +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +set(CXX_LIBS "-lstdc++") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lblas -llapack") +set(NETCDF_PATH "$ENV{NETCDF_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(HDF5_PATH "$ENV{HDF5_PATH}") +set(SZIP_PATH "$ENV{SZIP_PATH}") +set(ZLIB_PATH "$ENV{ZLIB_PATH}") diff --git a/cime_config/machines/cmake_macros/gnu_anvil.cmake b/cime_config/machines/cmake_macros/gnu_anvil.cmake new file mode 100644 index 000000000000..509a03a5e0b1 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_anvil.cmake @@ -0,0 +1,12 @@ +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_NANOTIME -DBIT64 -DHAVE_SLASHPROC -DHAVE_GETTIMEOFDAY") +endif() +set(PIO_FILESYSTEM_HINTS "gpfs") +execute_process(COMMAND $ENV{NETCDF_FORTRAN_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -L$ENV{MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -ldl") +execute_process(COMMAND $ENV{NETCDF_C_PATH}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +set(CXX_LIBS "-lstdc++") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/gnu_ascent.cmake b/cime_config/machines/cmake_macros/gnu_ascent.cmake new file mode 100644 index 000000000000..8cf5c9c9f430 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_ascent.cmake @@ -0,0 +1,27 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +if (NOT MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf -L$ENV{HDF5_PATH}/lib -lhdf5_hl -lhdf5 -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +set(CXX_LIBS "-lstdc++") +set(MPICC "mpicc") +set(MPICXX "mpiCC") +set(MPIFC "mpif90") +set(SCC "gcc") +set(SCXX "g++") +set(SFC "gfortran") +set(PIO_FILESYSTEM_HINTS "gpfs") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/gnu_badger.cmake b/cime_config/machines/cmake_macros/gnu_badger.cmake new file mode 100644 index 000000000000..f5036cbfd415 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_badger.cmake @@ -0,0 +1,16 @@ +set(PIO_FILESYSTEM_HINTS "lustre") +set(MPICC "mpicc") +set(MPIFC "mpif90") +set(MPICXX "mpic++") +set(SFC "gfortran") +set(SCC "gcc") +set(SCXX "g++") +execute_process(COMMAND nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +execute_process(COMMAND nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lnetcdff -llapack -lblas") +string(APPEND SLIBS " $ENV{MKLROOT}/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group $ENV{MKLROOT}/lib/intel64/libmkl_intel_lp64.a $ENV{MKLROOT}/lib/intel64/libmkl_core.a $ENV{MKLROOT}/lib/intel64/libmkl_sequential.a -Wl,--end-group $ENV{MKLROOT}/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm -lz") +set(CXX_LIBS "-lstdc++") +set(NETCDF_C_PATH "$ENV{NETCDF_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/gnu_bebop.cmake b/cime_config/machines/cmake_macros/gnu_bebop.cmake new file mode 100644 index 000000000000..825c6353f7e4 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_bebop.cmake @@ -0,0 +1,11 @@ +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +set(CXX_LIBS "-lstdc++") +execute_process(COMMAND $ENV{NETCDF_FORTRAN_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +execute_process(COMMAND $ENV{NETCDF_C_PATH}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE1 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE1}") +string(APPEND SLIBS " -L$ENV{MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/gnu_cades.cmake b/cime_config/machines/cmake_macros/gnu_cades.cmake new file mode 100644 index 000000000000..b2abe4e0c272 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_cades.cmake @@ -0,0 +1,33 @@ +if (compile_threaded) + string(APPEND CFLAGS " -fopenmp") +endif() +if (COMP_NAME STREQUAL cism) + string(APPEND CMAKE_OPTS " -D CISM_GNU=ON") +endif() +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_R16") +set(CXX_LINKER "FORTRAN") +set(FC_AUTO_R8 "-fdefault-real-8") +set(FFLAGS "-O -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none -fno-range-check") +if (compile_threaded) + string(APPEND FFLAGS " -fopenmp") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -Wall") +endif() +set(FIXEDFLAGS "-ffixed-form") +set(FREEFLAGS "-ffree-form") +set(HDF5_PATH "/software/dev_tools/swtree/cs400_centos7.2_pe2016-08/hdf5-parallel/1.8.17/centos7.2_gnu5.3.0") +set(NETCDF_PATH "/software/dev_tools/swtree/cs400_centos7.2_pe2016-08/netcdf-hdf5parallel/4.3.3.1/centos7.2_gnu5.3.0") +set(PNETCDF_PATH "/software/dev_tools/swtree/cs400_centos7.2_pe2016-08/pnetcdf/1.9.0/centos7.2_gnu5.3.0") +set(LAPACK_LIBDIR "/software/tools/compilers/intel_2017/mkl/lib/intel64") +if (compile_threaded) + string(APPEND LDFLAGS " -fopenmp") +endif() +string(APPEND SLIBS " -L${NETCDF_PATH}/lib -Wl,-rpath=${NETCDF_PATH}/lib -lnetcdff -lnetcdf") +set(MPICC "mpicc") +set(MPICXX "mpic++") +set(MPIFC "mpif90") +set(SCC "gcc") +set(SCXX "gcpp") +set(SFC "gfortran") +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/gnu_chrysalis.cmake b/cime_config/machines/cmake_macros/gnu_chrysalis.cmake new file mode 100644 index 000000000000..34842f547a9c --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_chrysalis.cmake @@ -0,0 +1,12 @@ +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_NANOTIME -DBIT64 -DHAVE_SLASHPROC -DHAVE_GETTIMEOFDAY") +endif() +set(PIO_FILESYSTEM_HINTS "gpfs") +execute_process(COMMAND $ENV{NETCDF_FORTRAN_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +execute_process(COMMAND $ENV{NETCDF_C_PATH}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE1 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE1}") +string(APPEND SLIBS " -Wl,--start-group $ENV{MKLROOT}/lib/intel64/libmkl_gf_lp64.a $ENV{MKLROOT}/lib/intel64/libmkl_sequential.a $ENV{MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl") +set(CXX_LIBS "-lstdc++") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/gnu_cori-haswell.cmake b/cime_config/machines/cmake_macros/gnu_cori-haswell.cmake new file mode 100644 index 000000000000..cd127f5da442 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_cori-haswell.cmake @@ -0,0 +1,7 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +set(CXX_LIBS "-lstdc++") diff --git a/cime_config/machines/cmake_macros/gnu_cori-knl.cmake b/cime_config/machines/cmake_macros/gnu_cori-knl.cmake new file mode 100644 index 000000000000..cd127f5da442 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_cori-knl.cmake @@ -0,0 +1,7 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +set(CXX_LIBS "-lstdc++") diff --git a/cime_config/machines/cmake_macros/gnu_eddi.cmake b/cime_config/machines/cmake_macros/gnu_eddi.cmake new file mode 100644 index 000000000000..c532cd7c6500 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_eddi.cmake @@ -0,0 +1,18 @@ +set(SUPPORTS_CXX "TRUE") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY -DHAVE_BACKTRACE") +endif() +set(NETCDF_PATH "$ENV{NETCDF_HOME}") +if (NOT DEBUG) + string(APPEND FFLAGS " -fno-unsafe-math-optimizations") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -fbacktrace -fbounds-check -ffpe-trap=invalid,zero,overflow") +endif() +string(APPEND SLIBS " -L$ENV{NETCDF_HOME}/lib/ -lnetcdff -lnetcdf -lcurl -llapack -lblas") +if (MPILIB STREQUAL mpi-serial) + set(SCC "gcc") +endif() +if (MPILIB STREQUAL mpi-serial) + set(SFC "gfortran") +endif() diff --git a/cime_config/machines/cmake_macros/gnu_gcp.cmake b/cime_config/machines/cmake_macros/gnu_gcp.cmake new file mode 100644 index 000000000000..c53759846574 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_gcp.cmake @@ -0,0 +1,20 @@ +set(SUPPORTS_CXX "TRUE") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY -DHAVE_BACKTRACE -DHAVE_SLASHPROC") +endif() +set(CXX_LIBS "-lstdc++") +if (NOT DEBUG) + string(APPEND FFLAGS " -fno-unsafe-math-optimizations") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -fbacktrace -fbounds-check -ffpe-trap=invalid,zero,overflow") +endif() +string(APPEND SLIBS " -L$ENV{HDF5_PATH}/lib -lhdf5_fortran -lhdf5 -lhdf5_hl -lhdf5hl_fortran") +string(APPEND SLIBS " -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff") +string(APPEND SLIBS " -L$ENV{CURL_PATH}/lib -lcurl -lblas -llapack") +string(APPEND SLIBS " -L$ENV{LAPACK_PATH}/lib64 -lblas -llapack") +string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf") +set(HDF5_PATH "$ENV{HDF5_PATH}") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/gnu_grizzly.cmake b/cime_config/machines/cmake_macros/gnu_grizzly.cmake new file mode 100644 index 000000000000..f5036cbfd415 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_grizzly.cmake @@ -0,0 +1,16 @@ +set(PIO_FILESYSTEM_HINTS "lustre") +set(MPICC "mpicc") +set(MPIFC "mpif90") +set(MPICXX "mpic++") +set(SFC "gfortran") +set(SCC "gcc") +set(SCXX "g++") +execute_process(COMMAND nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +execute_process(COMMAND nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lnetcdff -llapack -lblas") +string(APPEND SLIBS " $ENV{MKLROOT}/lib/intel64/libmkl_scalapack_lp64.a -Wl,--start-group $ENV{MKLROOT}/lib/intel64/libmkl_intel_lp64.a $ENV{MKLROOT}/lib/intel64/libmkl_core.a $ENV{MKLROOT}/lib/intel64/libmkl_sequential.a -Wl,--end-group $ENV{MKLROOT}/lib/intel64/libmkl_blacs_intelmpi_lp64.a -lpthread -lm -lz") +set(CXX_LIBS "-lstdc++") +set(NETCDF_C_PATH "$ENV{NETCDF_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/gnu_jlse.cmake b/cime_config/machines/cmake_macros/gnu_jlse.cmake new file mode 100644 index 000000000000..6ea2fec384e0 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_jlse.cmake @@ -0,0 +1,14 @@ +string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -Wl,-rpath -Wl,$ENV{NETCDF_PATH}/lib") +execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +string(APPEND SLIBS " -L/home/azamat/soft/libs -llapack -lblas") +set(NETCDF_PATH "$ENV{NETCDF_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/gnu_lawrencium-lr6.cmake b/cime_config/machines/cmake_macros/gnu_lawrencium-lr6.cmake new file mode 100644 index 000000000000..02cc45d8e87c --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_lawrencium-lr6.cmake @@ -0,0 +1,12 @@ +set(LAPACK_LIBDIR "$ENV{LAPACK_DIR}/lib") +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +set(CXX_LIBS "-lstdc++ -lmpi_cxx") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +string(APPEND FFLAGS " -I$ENV{NETCDF_DIR}/include") +set(NETCDF_PATH "$ENV{NETCDF_DIR}") +set(PNETCDF_PATH "$ENV{PNETCDF_DIR}") +string(APPEND SLIBS " -L/global/software/sl-7.x86_64/modules/gcc/6.3.0/netcdf/4.4.1.1-gcc-p/lib -lnetcdff -lnetcdf -lnetcdf -lblas -llapack") diff --git a/cime_config/machines/cmake_macros/gnu_linux-generic.cmake b/cime_config/machines/cmake_macros/gnu_linux-generic.cmake new file mode 100644 index 000000000000..eb31d899afc4 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_linux-generic.cmake @@ -0,0 +1,5 @@ +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +execute_process(COMMAND ${NETCDF_FORTRAN_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") diff --git a/cime_config/machines/cmake_macros/gnu_mac.cmake b/cime_config/machines/cmake_macros/gnu_mac.cmake new file mode 100644 index 000000000000..2f629c960792 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_mac.cmake @@ -0,0 +1,3 @@ +string(APPEND LDFLAGS " -framework Accelerate") +set(NETCDF_PATH "$ENV{NETCDF_PATH}") +string(APPEND SLIBS " -L${NETCDF_PATH}/lib -lnetcdff -lnetcdf") diff --git a/cime_config/machines/cmake_macros/gnu_mappy.cmake b/cime_config/machines/cmake_macros/gnu_mappy.cmake new file mode 100644 index 000000000000..cd06c332fa29 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_mappy.cmake @@ -0,0 +1,18 @@ +set(ALBANY_PATH "/projects/install/rhel7-x86_64/ACME/AlbanyTrilinos/Albany/build/install") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +set(CXX_LIBS "-lstdc++") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +string(APPEND FFLAGS " -I$ENV{NETCDFROOT}/include") +set(NETCDF_PATH "$ENV{NETCDFROOT}") +if (MPILIB STREQUAL mpi-serial AND NOT compile_threaded) + set(PFUNIT_PATH "$ENV{SEMS_PFUNIT_ROOT}") +endif() +execute_process(COMMAND ${NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lblas -llapack") diff --git a/cime_config/machines/cmake_macros/gnu_melvin.cmake b/cime_config/machines/cmake_macros/gnu_melvin.cmake new file mode 100644 index 000000000000..96f9e87f20e4 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_melvin.cmake @@ -0,0 +1,18 @@ +set(ALBANY_PATH "/projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +set(CXX_LIBS "-lstdc++") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +string(APPEND FFLAGS " -I$ENV{NETCDFROOT}/include") +set(NETCDF_PATH "$ENV{NETCDFROOT}") +if (MPILIB STREQUAL mpi-serial AND NOT compile_threaded) + set(PFUNIT_PATH "$ENV{SEMS_PFUNIT_ROOT}") +endif() +execute_process(COMMAND ${NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lblas -llapack") diff --git a/cime_config/machines/cmake_macros/gnu_modex.cmake b/cime_config/machines/cmake_macros/gnu_modex.cmake new file mode 100644 index 000000000000..bec6c2421fa1 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_modex.cmake @@ -0,0 +1,14 @@ +set(SUPPORTS_CXX "TRUE") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY -DHAVE_BACKTRACE") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -fno-unsafe-math-optimizations") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -fbacktrace -fbounds-check -ffpe-trap=invalid,zero,overflow") +endif() +string(APPEND SLIBS " -L$ENV{HDF5_HOME}/lib -lhdf5_fortran -lhdf5 -lhdf5_hl -lhdf5hl_fortran") +string(APPEND SLIBS " -L$ENV{NETCDF_PATH}/lib/ -lnetcdff -lnetcdf -lcurl -lblas -llapack") +set(HDF5_PATH "$ENV{HDF5_HOME}") +set(NETCDF_PATH "$ENV{NETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/gnu_singularity.cmake b/cime_config/machines/cmake_macros/gnu_singularity.cmake new file mode 100644 index 000000000000..7fadc17a81e5 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_singularity.cmake @@ -0,0 +1,5 @@ +set(HDF5_PATH "$ENV{HDF5_PATH}") +set(NETCDF_PATH "$ENV{NETCDF_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +execute_process(COMMAND ${NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lblas -llapack") diff --git a/cime_config/machines/cmake_macros/gnu_snl-white.cmake b/cime_config/machines/cmake_macros/gnu_snl-white.cmake new file mode 100644 index 000000000000..42ff33f1ac73 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_snl-white.cmake @@ -0,0 +1,7 @@ +set(SCXX "$ENV{E3SM_SRCROOT}/externals/kokkos/bin/nvcc_wrapper") +set(MPICXX "$ENV{E3SM_SRCROOT}/externals/kokkos/bin/nvcc_wrapper") +set(KOKKOS_OPTIONS "--arch=Pascal60 --with-cuda=$ENV{CUDA_ROOT} --with-cuda-options=enable_lambda") +string(APPEND CXXFLAGS " -expt-extended-lambda -DCUDA_BUILD") +set(NETCDF_PATH "$ENV{NETCDF_FORTRAN_PATH}") +execute_process(COMMAND ${NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lblas -llapack -lcudart -lstdc++") diff --git a/cime_config/machines/cmake_macros/gnu_summit.cmake b/cime_config/machines/cmake_macros/gnu_summit.cmake new file mode 100644 index 000000000000..8cf5c9c9f430 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_summit.cmake @@ -0,0 +1,27 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +if (NOT MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf -L$ENV{HDF5_PATH}/lib -lhdf5_hl -lhdf5 -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +set(CXX_LIBS "-lstdc++") +set(MPICC "mpicc") +set(MPICXX "mpiCC") +set(MPIFC "mpif90") +set(SCC "gcc") +set(SCXX "g++") +set(SFC "gfortran") +set(PIO_FILESYSTEM_HINTS "gpfs") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/gnu_theta.cmake b/cime_config/machines/cmake_macros/gnu_theta.cmake new file mode 100644 index 000000000000..d3674c61b783 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_theta.cmake @@ -0,0 +1,15 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND CFLAGS " -O0") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND FFLAGS " -O0") +endif() +execute_process(COMMAND nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +set(CXX_LIBS "-lstdc++") diff --git a/cime_config/machines/cmake_macros/gnu_tulip.cmake b/cime_config/machines/cmake_macros/gnu_tulip.cmake new file mode 100644 index 000000000000..fba5dd0f4ca0 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnu_tulip.cmake @@ -0,0 +1,9 @@ +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +set(CXX_LIBS "-lstdc++") +execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE1 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE1} -llapack -lblas") +set(NETCDF_PATH "$ENV{NETCDF_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/gnugpu.cmake b/cime_config/machines/cmake_macros/gnugpu.cmake new file mode 100644 index 000000000000..b725700ad7da --- /dev/null +++ b/cime_config/machines/cmake_macros/gnugpu.cmake @@ -0,0 +1,53 @@ +set(CFLAGS "-mcmodel=medium") +if (compile_threaded) + string(APPEND CFLAGS " -fopenmp") +endif() +if (DEBUG) + string(APPEND CFLAGS " -g -Wall -fbacktrace -fcheck=bounds -ffpe-trap=invalid,zero,overflow") +endif() +if (NOT DEBUG) + string(APPEND CFLAGS " -O") +endif() +if (COMP_NAME STREQUAL csm_share) + string(APPEND CFLAGS " -std=c99") +endif() +set(CXXFLAGS "-std=c++14") +if (compile_threaded) + string(APPEND CXXFLAGS " -fopenmp") +endif() +if (DEBUG) + string(APPEND CXXFLAGS " -g -Wall -fbacktrace") +endif() +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O") +endif() +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_R16 -DCPRGNU") +if (DEBUG) + string(APPEND CPPDEFS " -DYAKL_DEBUG") +endif() +set(CXX_LINKER "FORTRAN") +set(FC_AUTO_R8 "-fdefault-real-8") +set(FFLAGS "-mcmodel=medium -fconvert=big-endian -ffree-line-length-none -ffixed-line-length-none") +if (compile_threaded) + string(APPEND FFLAGS " -fopenmp") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -Wall -fbacktrace -fcheck=bounds -ffpe-trap=zero,overflow") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O") +endif() +set(FFLAGS_NOOPT "-O0") +set(FIXEDFLAGS "-ffixed-form") +set(FREEFLAGS "-ffree-form") +set(HAS_F2008_CONTIGUOUS "FALSE") +if (compile_threaded) + string(APPEND LDFLAGS " -fopenmp") +endif() +set(MPICC "mpicc") +set(MPICXX "mpicxx") +set(MPIFC "mpif90") +set(SCC "gcc") +set(SCXX "g++") +set(SFC "gfortran") +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/gnugpu_ascent.cmake b/cime_config/machines/cmake_macros/gnugpu_ascent.cmake new file mode 100644 index 000000000000..18d8659f7e18 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnugpu_ascent.cmake @@ -0,0 +1,24 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +if (NOT MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf -L$ENV{HDF5_PATH}/lib -lhdf5_hl -lhdf5 -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +set(CXX_LIBS "-lstdc++") +set(MPICXX "mpiCC") +set(PIO_FILESYSTEM_HINTS "gpfs") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(SUPPORTS_CXX "TRUE") +string(APPEND CUDA_FLAGS " -O3 -arch sm_70 --use_fast_math") +set(USE_CUDA "TRUE") diff --git a/cime_config/machines/cmake_macros/gnugpu_summit.cmake b/cime_config/machines/cmake_macros/gnugpu_summit.cmake new file mode 100644 index 000000000000..405adc030163 --- /dev/null +++ b/cime_config/machines/cmake_macros/gnugpu_summit.cmake @@ -0,0 +1,25 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +string(APPEND CPPDEFS " -DTHRUST_IGNORE_CUB_VERSION_CHECK") +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +if (NOT MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf -L$ENV{HDF5_PATH}/lib -lhdf5_hl -lhdf5 -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +set(CXX_LIBS "-lstdc++") +set(MPICXX "mpiCC") +set(PIO_FILESYSTEM_HINTS "gpfs") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(SUPPORTS_CXX "TRUE") +string(APPEND CUDA_FLAGS " -O3 -arch sm_70 --use_fast_math") +set(USE_CUDA "TRUE") diff --git a/cime_config/machines/cmake_macros/ibm.cmake b/cime_config/machines/cmake_macros/ibm.cmake new file mode 100644 index 000000000000..ff42142224dd --- /dev/null +++ b/cime_config/machines/cmake_macros/ibm.cmake @@ -0,0 +1,43 @@ +set(CFLAGS "-g -qfullpath -qmaxmem=-1 -qphsinfo") +if (NOT DEBUG) + string(APPEND CFLAGS " -O3") +endif() +if (NOT DEBUG AND compile_threaded) + string(APPEND CFLAGS " -qsmp=omp") +endif() +if (DEBUG AND compile_threaded) + string(APPEND CFLAGS " -qsmp=omp:noopt") +endif() +set(CXXFLAGS "-g -qfullpath -qmaxmem=-1 -qphsinfo") +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O2") +endif() +if (NOT DEBUG AND compile_threaded) + string(APPEND CXXFLAGS " -qsmp=omp") +endif() +if (DEBUG AND compile_threaded) + string(APPEND CXXFLAGS " -qsmp=omp:noopt") +endif() +string(APPEND CPPDEFS " -DFORTRAN_SAME -DCPRIBM") +if (COMP_NAME STREQUAL eam) + string(APPEND CPPDEFS " -DUSE_CBOOL") +endif() +set(CPRE "-WF,-D") +set(FC_AUTO_R8 "-qrealsize=8") +set(FFLAGS "-g -qfullpath -qmaxmem=-1 -qphsinfo") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -qstrict -Q") +endif() +if (NOT DEBUG AND compile_threaded) + string(APPEND FFLAGS " -qsmp=omp") +endif() +if (DEBUG AND compile_threaded) + string(APPEND FFLAGS " -qsmp=omp:noopt") +endif() +if (DEBUG) + string(APPEND FFLAGS " -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en") +endif() +set(FFLAGS_NOOPT "-O0") +set(FIXEDFLAGS "-qsuffix=f=f -qfixed=132") +set(FREEFLAGS "-qsuffix=f=f90:cpp=F90") +set(HAS_F2008_CONTIGUOUS "TRUE") diff --git a/cime_config/machines/cmake_macros/ibm_AIX.cmake b/cime_config/machines/cmake_macros/ibm_AIX.cmake new file mode 100644 index 000000000000..c4e0c6ea2a02 --- /dev/null +++ b/cime_config/machines/cmake_macros/ibm_AIX.cmake @@ -0,0 +1,18 @@ +string(APPEND CFLAGS " -qarch=auto -qtune=auto -qcache=auto") +set(CONFIG_SHELL "/usr/bin/bash") +string(APPEND FFLAGS " -qarch=auto -qtune=auto -qcache=auto -qsclk=micro") +if (COMP_NAME STREQUAL eam) + string(APPEND FFLAGS " -qspill=6000") +endif() +if (DEBUG) + string(APPEND LDFLAGS " -qsigtrap=xl__trcedump") +endif() +string(APPEND LDFLAGS " -bdatapsize:64K -bstackpsize:64K -btextpsize:32K") +set(MPICC "mpcc_r") +set(MPIFC "mpxlf2003_r") +set(SCC "cc_r") +set(SFC "xlf2003_r") +string(APPEND SLIBS " -lmassv -lessl") +if (NOT DEBUG) + string(APPEND SLIBS " -lmass") +endif() diff --git a/cime_config/machines/cmake_macros/ibm_BGL.cmake b/cime_config/machines/cmake_macros/ibm_BGL.cmake new file mode 100644 index 000000000000..8176631771e1 --- /dev/null +++ b/cime_config/machines/cmake_macros/ibm_BGL.cmake @@ -0,0 +1,20 @@ +set(CFLAGS "-O3 -qstrict") +string(APPEND CFLAGS " -qtune=440 -qarch=440d") +set(CONFIG_ARGS "--build=powerpc-bgp-linux --host=powerpc64-suse-linux") +string(APPEND CPPDEFS " -DLINUX -DnoI8") +string(APPEND FFLAGS " -qtune=440 -qarch=440d") +if (NOT DEBUG) + string(APPEND FFLAGS " -O3 -qstrict -Q") +endif() +if (DEBUG) + string(APPEND FFLAGS " -qinitauto=FF911299 -qflttrap=ov:zero:inv:en") +endif() +string(APPEND FFLAGS " -qextname=flush") +set(LDFLAGS "-Wl,--relax -Wl,--allow-multiple-definition") +set(MLIBS "-L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts") +set(MPICC "blrts_xlc") +set(MPIFC "blrts_xlf2003") +set(MPI_LIB_NAME "mpich.rts") +set(MPI_PATH "/bgl/BlueLight/ppcfloor/bglsys") +set(SCC "blrts_xlc") +set(SFC "blrts_xlf2003") diff --git a/cime_config/machines/cmake_macros/ibm_BGP.cmake b/cime_config/machines/cmake_macros/ibm_BGP.cmake new file mode 100644 index 000000000000..054a9d0ddfdb --- /dev/null +++ b/cime_config/machines/cmake_macros/ibm_BGP.cmake @@ -0,0 +1,6 @@ +string(APPEND CFLAGS " -qtune=450 -qarch=450 -I/bgsys/drivers/ppcfloor/arch/include/") +set(CONFIG_ARGS "--build=powerpc-bgp-linux --host=powerpc64-suse-linux") +string(APPEND CPPDEFS " -DLINUX -DnoI8") +string(APPEND FFLAGS " -qspillsize=2500 -qtune=450 -qarch=450") +string(APPEND FFLAGS " -qextname=flush") +set(LDFLAGS "-Wl,--relax -Wl,--allow-multiple-definition") diff --git a/cime_config/machines/cmake_macros/ibm_BGQ.cmake b/cime_config/machines/cmake_macros/ibm_BGQ.cmake new file mode 100644 index 000000000000..53c3997a243e --- /dev/null +++ b/cime_config/machines/cmake_macros/ibm_BGQ.cmake @@ -0,0 +1,19 @@ +if (NOT DEBUG AND compile_threaded) + string(APPEND CFLAGS " -qsmp=omp:nested_par -qsuppress=1520-045") +endif() +if (DEBUG AND compile_threaded) + string(APPEND CFLAGS " -qsmp=omp:nested_par:noopt -qsuppress=1520-045") +endif() +set(CONFIG_ARGS "--build=powerpc-bgp-linux --host=powerpc64-suse-linux") +string(APPEND CPPDEFS " -DLINUX") +set(FFLAGS "-g -qfullpath -qmaxmem=-1 -qspillsize=2500 -qextname=flush -qphsinfo") +if (NOT DEBUG) + string(APPEND FFLAGS " -O3 -qstrict -Q") +endif() +if (NOT DEBUG AND compile_threaded) + string(APPEND FFLAGS " -qsmp=omp:nested_par -qsuppress=1520-045") +endif() +if (DEBUG AND compile_threaded) + string(APPEND FFLAGS " -qsmp=omp:nested_par:noopt -qsuppress=1520-045") +endif() +set(LDFLAGS "-Wl,--relax -Wl,--allow-multiple-definition") diff --git a/cime_config/machines/cmake_macros/ibm_ascent.cmake b/cime_config/machines/cmake_macros/ibm_ascent.cmake new file mode 100644 index 000000000000..0f1f299680b7 --- /dev/null +++ b/cime_config/machines/cmake_macros/ibm_ascent.cmake @@ -0,0 +1,29 @@ +string(APPEND CPPDEFS " -DLINUX") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +string(APPEND FFLAGS " -qzerosize -qfree=f90 -qxlf2003=polymorphic") +string(APPEND FFLAGS " -qspillsize=2500 -qextname=flush") +if (COMP_NAME STREQUAL cice AND compile_threaded) + string(APPEND FFLAGS " -qsmp=omp:noopt") +endif() +string(APPEND LDFLAGS " -Wl,--relax -Wl,--allow-multiple-definition") +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -lxlopt -lxl -lxlsmp -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +if (NOT MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf -L$ENV{HDF5_PATH}/lib -lhdf5_hl -lhdf5 -lxlopt -lxl -lxlsmp -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +set(CXX_LIBS "-L/sw/ascent/gcc/8.1.1/lib64 -lstdc++ -L$ENV{OLCF_XLC_ROOT}/lib -libmc++") +set(MPICC "mpicc") +set(MPICXX "mpiCC") +set(MPIFC "mpif90") +set(PIO_FILESYSTEM_HINTS "gpfs") +set(SCC "xlc_r") +set(SFC "xlf90_r") +set(SCXX "xlc++_r") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(SUPPORTS_CXX "TRUE") +set(KOKKOS_OPTIONS "--arch=Power9 --with-serial") diff --git a/cime_config/machines/cmake_macros/ibm_summit.cmake b/cime_config/machines/cmake_macros/ibm_summit.cmake new file mode 100644 index 000000000000..287374e53ddc --- /dev/null +++ b/cime_config/machines/cmake_macros/ibm_summit.cmake @@ -0,0 +1,29 @@ +string(APPEND CPPDEFS " -DLINUX") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +string(APPEND FFLAGS " -qzerosize -qfree=f90 -qxlf2003=polymorphic") +string(APPEND FFLAGS " -qspillsize=2500 -qextname=flush") +if (COMP_NAME STREQUAL cice AND compile_threaded) + string(APPEND FFLAGS " -qsmp=omp:noopt") +endif() +string(APPEND LDFLAGS " -Wl,--relax -Wl,--allow-multiple-definition") +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -lxlopt -lxl -lxlsmp -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +if (NOT MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf -L$ENV{HDF5_PATH}/lib -lhdf5_hl -lhdf5 -lxlopt -lxl -lxlsmp -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +set(CXX_LIBS "-L/sw/summit/gcc/8.1.1/lib64 -lstdc++ -L$ENV{OLCF_XLC_ROOT}/lib -libmc++") +set(MPICC "mpicc") +set(MPICXX "mpiCC") +set(MPIFC "mpif90") +set(PIO_FILESYSTEM_HINTS "gpfs") +set(SCC "xlc_r") +set(SFC "xlf90_r") +set(SCXX "xlc++_r") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(SUPPORTS_CXX "TRUE") +set(KOKKOS_OPTIONS "--arch=Power9 --with-serial") diff --git a/cime_config/machines/cmake_macros/ibmgpu_ascent.cmake b/cime_config/machines/cmake_macros/ibmgpu_ascent.cmake new file mode 100644 index 000000000000..8a711602b887 --- /dev/null +++ b/cime_config/machines/cmake_macros/ibmgpu_ascent.cmake @@ -0,0 +1,73 @@ +set(CFLAGS "-g -qfullpath -qmaxmem=-1 -qphsinfo") +if (NOT DEBUG) + string(APPEND CFLAGS " -O3") +endif() +if (NOT DEBUG AND compile_threaded) + string(APPEND CFLAGS " -qsmp=omp") +endif() +if (DEBUG AND compile_threaded) + string(APPEND CFLAGS " -qsmp=omp:noopt") +endif() +set(CXXFLAGS "-g -qfullpath -qmaxmem=-1 -qphsinfo") +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O2") +endif() +if (NOT DEBUG AND compile_threaded) + string(APPEND CXXFLAGS " -qsmp=omp") +endif() +if (DEBUG AND compile_threaded) + string(APPEND CXXFLAGS " -qsmp=omp:noopt") +endif() +string(APPEND CPPDEFS " -DFORTRAN_SAME -DCPRIBM") +if (COMP_NAME STREQUAL eam) + string(APPEND CPPDEFS " -DUSE_CBOOL") +endif() +string(APPEND CPPDEFS " -DLINUX") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +set(CPRE "-WF,-D") +set(FC_AUTO_R8 "-qrealsize=8") +set(FFLAGS "-g -qfullpath -qmaxmem=-1 -qphsinfo") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -qstrict -Q") +endif() +if (NOT DEBUG AND compile_threaded) + string(APPEND FFLAGS " -qsmp=omp") +endif() +if (DEBUG AND compile_threaded) + string(APPEND FFLAGS " -qsmp=omp:noopt") +endif() +if (DEBUG) + string(APPEND FFLAGS " -qinitauto=7FF7FFFF -qflttrap=ov:zero:inv:en") +endif() +string(APPEND FFLAGS " -qzerosize -qfree=f90 -qxlf2003=polymorphic") +string(APPEND FFLAGS " -qspillsize=2500 -qextname=flush") +if (COMP_NAME STREQUAL cice AND compile_threaded) + string(APPEND FFLAGS " -qsmp=omp:noopt") +endif() +set(FFLAGS_NOOPT "-O0") +set(FIXEDFLAGS "-qsuffix=f=f -qfixed=132") +set(FREEFLAGS "-qsuffix=f=f90:cpp=F90") +set(HAS_F2008_CONTIGUOUS "TRUE") +string(APPEND LDFLAGS " -Wl,--relax -Wl,--allow-multiple-definition") +string(APPEND LDFLAGS " -qsmp -qoffload -lcudart -L$ENV{CUDA_DIR}/lib64") +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -lxlopt -lxl -lxlsmp -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +if (NOT MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf -L$ENV{HDF5_PATH}/lib -lhdf5_hl -lhdf5 -lxlopt -lxl -lxlsmp -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +set(CXX_LIBS "-L/sw/ascent/gcc/8.1.1/lib64 -lstdc++ -L$ENV{OLCF_XLC_ROOT}/lib -libmc++") +set(MPICC "mpicc") +set(MPICXX "mpiCC") +set(MPIFC "mpif90") +set(PIO_FILESYSTEM_HINTS "gpfs") +set(SCC "xlc_r") +set(SFC "xlf90_r") +set(SCXX "xlc++_r") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(SUPPORTS_CXX "TRUE") +set(KOKKOS_OPTIONS "--arch=Power9 --with-serial") diff --git a/cime_config/machines/cmake_macros/ibmgpu_summit.cmake b/cime_config/machines/cmake_macros/ibmgpu_summit.cmake new file mode 100644 index 000000000000..847c0e5eec9c --- /dev/null +++ b/cime_config/machines/cmake_macros/ibmgpu_summit.cmake @@ -0,0 +1,70 @@ +set(CFLAGS "-g -qfullpath -qmaxmem=-1 -qphsinfo") +if (NOT DEBUG) + string(APPEND CFLAGS " -O3") +endif() +if (NOT DEBUG AND compile_threaded) + string(APPEND CFLAGS " -qsmp=omp") +endif() +if (DEBUG AND compile_threaded) + string(APPEND CFLAGS " -qsmp=omp:noopt") +endif() +set(CXXFLAGS "-g -qfullpath -qmaxmem=-1 -qphsinfo") +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O2") +endif() +if (NOT DEBUG AND compile_threaded) + string(APPEND CXXFLAGS " -qsmp=omp") +endif() +if (DEBUG AND compile_threaded) + string(APPEND CXXFLAGS " -qsmp=omp:noopt") +endif() +string(APPEND CPPDEFS " -DFORTRAN_SAME -DCPRIBM") +if (COMP_NAME STREQUAL eam) + string(APPEND CPPDEFS " -DUSE_CBOOL") +endif() +string(APPEND CPPDEFS " -DLINUX") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +set(CPRE "-WF,-D") +set(FC_AUTO_R8 "-qrealsize=8") +set(FFLAGS "-g -qfullpath -qmaxmem=-1 -qphsinfo") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -qstrict -Q") +endif() +if (NOT DEBUG AND compile_threaded) + string(APPEND FFLAGS " -qsmp=omp") +endif() +if (DEBUG AND compile_threaded) + string(APPEND FFLAGS " -qsmp=omp:noopt") +endif() +string(APPEND FFLAGS " -qzerosize -qfree=f90 -qxlf2003=polymorphic") +string(APPEND FFLAGS " -qspillsize=2500 -qextname=flush") +if (COMP_NAME STREQUAL cice AND compile_threaded) + string(APPEND FFLAGS " -qsmp=omp:noopt") +endif() +set(FFLAGS_NOOPT "-O0") +set(FIXEDFLAGS "-qsuffix=f=f -qfixed=132") +set(FREEFLAGS "-qsuffix=f=f90:cpp=F90") +set(HAS_F2008_CONTIGUOUS "TRUE") +string(APPEND LDFLAGS " -Wl,--relax -Wl,--allow-multiple-definition") +string(APPEND LDFLAGS " -qsmp -qoffload -lcudart -L$ENV{CUDA_DIR}/lib64") +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -lxlopt -lxl -lxlsmp -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +if (NOT MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf -L$ENV{HDF5_PATH}/lib -lhdf5_hl -lhdf5 -lxlopt -lxl -lxlsmp -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +endif() +set(CXX_LIBS "-L/sw/summit/gcc/8.1.1/lib64 -lstdc++ -L$ENV{OLCF_XLC_ROOT}/lib -libmc++") +set(MPICC "mpicc") +set(MPICXX "mpiCC") +set(MPIFC "mpif90") +set(PIO_FILESYSTEM_HINTS "gpfs") +set(SCC "xlc_r") +set(SFC "xlf90_r") +set(SCXX "xlc++_r") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(SUPPORTS_CXX "TRUE") +set(KOKKOS_OPTIONS "--arch=Power9 --with-serial") diff --git a/cime_config/machines/cmake_macros/intel.cmake b/cime_config/machines/cmake_macros/intel.cmake new file mode 100644 index 000000000000..2731e4091240 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel.cmake @@ -0,0 +1,48 @@ +set(CFLAGS "-O2 -fp-model precise -std=gnu99") +if (compile_threaded) + string(APPEND CFLAGS " -qopenmp") +endif() +if (NOT DEBUG) + string(APPEND CFLAGS " -O2 -debug minimal") +endif() +if (DEBUG) + string(APPEND CFLAGS " -O0 -g") +endif() +set(CXXFLAGS "-std=c++14 -fp-model source") +if (compile_threaded) + string(APPEND CXXFLAGS " -qopenmp") +endif() +if (DEBUG) + string(APPEND CXXFLAGS " -O0 -g") +endif() +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O2") +endif() +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL") +set(CXX_LDFLAGS "-cxxlib") +set(CXX_LINKER "FORTRAN") +set(FC_AUTO_R8 "-r8") +set(FFLAGS "-convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source") +if (compile_threaded) + string(APPEND FFLAGS " -qopenmp") +endif() +if (DEBUG) + string(APPEND FFLAGS " -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -debug minimal") +endif() +set(FFLAGS_NOOPT "-O0") +set(FIXEDFLAGS "-fixed -132") +set(FREEFLAGS "-free") +set(HAS_F2008_CONTIGUOUS "TRUE") +if (compile_threaded) + string(APPEND LDFLAGS " -qopenmp") +endif() +set(MPICC "mpicc") +set(MPICXX "mpicxx") +set(MPIFC "mpif90") +set(SCC "icc") +set(SCXX "icpc") +set(SFC "ifort") +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/intel18_snl-blake.cmake b/cime_config/machines/cmake_macros/intel18_snl-blake.cmake new file mode 100644 index 000000000000..ae501a960313 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel18_snl-blake.cmake @@ -0,0 +1,43 @@ +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL") +set(CFLAGS "-xCORE_AVX512 -mkl -std=gnu99") +if (NOT DEBUG) + string(APPEND CFLAGS " -O3 -g -debug minimal") +endif() +if (DEBUG) + string(APPEND CFLAGS " -O0 -g") +endif() +set(CXXFLAGS "-xCORE_AVX512 -mkl -std=c++14") +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O3 -g -debug minimal") +endif() +if (DEBUG) + string(APPEND CXXFLAGS " -O0 -g") +endif() +if (compile_threaded) + string(APPEND CXXFLAGS " -qopenmp") +endif() +set(FFLAGS "-convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -xCORE_AVX512 -mkl") +if (compile_threaded) + string(APPEND FFLAGS " -qopenmp") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O3 -g -debug minimal") +endif() +if (DEBUG) + string(APPEND FFLAGS " -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created") +endif() +set(LDFLAGS "-mkl -lstdc++") +if (compile_threaded) + string(APPEND LDFLAGS " -qopenmp") +endif() +string(APPEND LDFLAGS " -L$(NETCDF_FORTRAN_PATH)/lib64") +set(FIXEDFLAGS "-fixed -132") +set(FREEFLAGS "-free") +set(HAS_F2008_CONTIGUOUS "TRUE") +set(FC_AUTO_R8 "-r8") +set(SFC "ifort") +set(SCC "icc") +set(SCXX "icpc") +set(CXX_LINKER "FORTRAN") +set(CXX_LDFLAGS "-cxxlib") +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/intel_Darwin.cmake b/cime_config/machines/cmake_macros/intel_Darwin.cmake new file mode 100644 index 000000000000..887c7a6b9fbe --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_Darwin.cmake @@ -0,0 +1,24 @@ +if (NOT compile_threaded) + string(APPEND FFLAGS " -heap-arrays") +endif() +if (MPILIB STREQUAL mpich) + string(APPEND SLIBS " -mkl=cluster") +endif() +if (MPILIB STREQUAL mpich2) + string(APPEND SLIBS " -mkl=cluster") +endif() +if (MPILIB STREQUAL mpt) + string(APPEND SLIBS " -mkl=cluster") +endif() +if (MPILIB STREQUAL openmpi) + string(APPEND SLIBS " -mkl=cluster") +endif() +if (MPILIB STREQUAL mvapich) + string(APPEND SLIBS " -mkl=cluster") +endif() +if (MPILIB STREQUAL impi) + string(APPEND SLIBS " -mkl=cluster") +endif() +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -mkl") +endif() diff --git a/cime_config/machines/cmake_macros/intel_Linux.cmake b/cime_config/machines/cmake_macros/intel_Linux.cmake new file mode 100644 index 000000000000..6ab34e341885 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_Linux.cmake @@ -0,0 +1 @@ +string(APPEND FFLAGS " -mcmodel medium -shared-intel") diff --git a/cime_config/machines/cmake_macros/intel_anvil.cmake b/cime_config/machines/cmake_macros/intel_anvil.cmake new file mode 100644 index 000000000000..b10916dd7eb5 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_anvil.cmake @@ -0,0 +1,44 @@ +if (compile_threaded) + string(APPEND CFLAGS " -static-intel") +endif() +if (compile_threaded AND DEBUG) + string(APPEND CFLAGS " -heap-arrays") +endif() +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -debug minimal -qno-opt-dynamic-align") +endif() +execute_process(COMMAND $ENV{NETCDF_FORTRAN_PATH}/bin/nf-config --fflags OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND FFLAGS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +if (compile_threaded) + string(APPEND FFLAGS " -static-intel") +endif() +if (compile_threaded AND DEBUG) + string(APPEND FFLAGS " -heap-arrays") +endif() +if (compile_threaded) + string(APPEND FFLAGS_NOOPT " -static-intel") +endif() +if (compile_threaded) + string(APPEND LDFLAGS " -static-intel") +endif() +if (MPILIB STREQUAL impi) + set(MPICC "mpiicc") +endif() +if (MPILIB STREQUAL impi) + set(MPICXX "mpiicpc") +endif() +if (MPILIB STREQUAL impi) + set(MPIFC "mpiifort") +endif() +set(PIO_FILESYSTEM_HINTS "gpfs") +execute_process(COMMAND $ENV{NETCDF_FORTRAN_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +execute_process(COMMAND $ENV{NETCDF_C_PATH}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +string(APPEND SLIBS " -Wl,--start-group $ENV{MKLROOT}/lib/intel64/libmkl_intel_lp64.a $ENV{MKLROOT}/lib/intel64/libmkl_sequential.a $ENV{MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/intel_badger.cmake b/cime_config/machines/cmake_macros/intel_badger.cmake new file mode 100644 index 000000000000..063bd4b72a07 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_badger.cmake @@ -0,0 +1,31 @@ +set(PIO_FILESYSTEM_HINTS "lustre") +if (MPILIB STREQUAL impi) + set(MPICC "mpiicc") +endif() +if (MPILIB STREQUAL impi) + set(MPICXX "mpiicpc") +endif() +if (MPILIB STREQUAL impi) + set(MPIFC "mpiifort") +endif() +if (NOT MPILIB STREQUAL impi) + set(MPICC "mpicc") +endif() +if (NOT MPILIB STREQUAL impi) + set(MPICXX "mpic++") +endif() +if (NOT MPILIB STREQUAL impi) + set(MPIFC "mpif90") +endif() +set(SFC "ifort") +set(SCC "icc") +set(SCXX "icpc") +execute_process(COMMAND $ENV{NETCDF_ROOT}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +execute_process(COMMAND $ENV{NETCDF_ROOT}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lnetcdff -llapack -lblas") +string(APPEND SLIBS " -mkl -lpthread") +set(CXX_LIBS "-lstdc++") +set(NETCDF_C_PATH "$ENV{NETCDF_ROOT}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_ROOT}") +set(PNETCDF_PATH "$ENV{PNETCDF_ROOT}") diff --git a/cime_config/machines/cmake_macros/intel_bebop.cmake b/cime_config/machines/cmake_macros/intel_bebop.cmake new file mode 100644 index 000000000000..504e2052a706 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_bebop.cmake @@ -0,0 +1,22 @@ +set(ALBANY_PATH "/soft/climate/AlbanyTrilinos_06262017/Albany/buildintel/install") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +set(CXX_LIBS "-lstdc++") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -debug minimal -qno-opt-dynamic-align") +endif() +if (MPILIB STREQUAL impi) + set(MPICC "mpiicc") +endif() +if (MPILIB STREQUAL impi) + set(MPICXX "mpiicpc") +endif() +if (MPILIB STREQUAL impi) + set(MPIFC "mpiifort") +endif() +execute_process(COMMAND nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -mkl") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/intel_cascade.cmake b/cime_config/machines/cmake_macros/intel_cascade.cmake new file mode 100644 index 000000000000..81957816db2f --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_cascade.cmake @@ -0,0 +1,15 @@ +set(CONFIG_ARGS "--enable-filesystem-hints=lustre") +string(APPEND CPPDEFS " -DLINUX") +if (DEBUG) + string(APPEND FFLAGS " -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv") +endif() +set(NETCDF_PATH "$ENV{NETCDF_HOME}") +set(PIO_FILESYSTEM_HINTS "lustre") +set(PNETCDF_PATH "$ENV{PNETCDFROOT}") +set(SLIBS "-L${NETCDF_PATH}/lib -lnetcdf -lnetcdff -L$ENV{MKL_PATH}/lib/intel64 -lmkl_rt") +if (MPILIB STREQUAL mpich2) + string(APPEND SLIBS " -mkl=cluster") +endif() +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -mkl") +endif() diff --git a/cime_config/machines/cmake_macros/intel_chrysalis.cmake b/cime_config/machines/cmake_macros/intel_chrysalis.cmake new file mode 100644 index 000000000000..73f96f2cf7ec --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_chrysalis.cmake @@ -0,0 +1,35 @@ +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +string(APPEND CFLAGS " -static-intel") +string(APPEND CFLAGS " -march=core-avx2") +if (NOT DEBUG) + string(APPEND CFLAGS " -O3") +endif() +string(APPEND CXXFLAGS " -static-intel") +string(APPEND CXXFLAGS " -axCORE-AVX2") +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O3") +endif() +string(APPEND FFLAGS " -static-intel") +string(APPEND FFLAGS " -axCORE-AVX2") +if (NOT DEBUG) + string(APPEND FFLAGS " -O3 -qno-opt-dynamic-align") +endif() +set(PIO_FILESYSTEM_HINTS "gpfs") +execute_process(COMMAND $ENV{NETCDF_FORTRAN_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +execute_process(COMMAND $ENV{NETCDF_C_PATH}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE1 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE1} -mkl") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +string(APPEND LDFLAGS " -static-intel") +if (MPILIB STREQUAL impi) + set(MPICC "mpiicc") +endif() +if (MPILIB STREQUAL impi) + set(MPICXX "mpiicpc") +endif() +if (MPILIB STREQUAL impi) + set(MPIFC "mpiifort") +endif() diff --git a/cime_config/machines/cmake_macros/intel_compy.cmake b/cime_config/machines/cmake_macros/intel_compy.cmake new file mode 100644 index 000000000000..ae3f8d54ed3e --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_compy.cmake @@ -0,0 +1,26 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +if (COMP_NAME STREQUAL gptl) + string(APPEND CFLAGS " -DHAVE_SLASHPROC") +endif() +string(APPEND CPPDEFS " -DLINUX") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv -init=snan") +endif() +set(NETCDF_PATH "$ENV{NETCDF_HOME}") +set(PNETCDF_PATH "$ENV{PNETCDF_HOME}") +set(PIO_FILESYSTEM_HINTS "lustre") +set(SLIBS "-lpmi -L${NETCDF_PATH}/lib -lnetcdf -lnetcdff -L$ENV{MKL_PATH}/lib/intel64/ -lmkl_rt $ENV{PNETCDF_LIBRARIES}") +if (MPILIB STREQUAL impi) + set(MPICC "mpiicc") +endif() +if (MPILIB STREQUAL impi) + set(MPICXX "mpiicpc") +endif() +if (MPILIB STREQUAL impi) + set(MPIFC "mpiifort") +endif() diff --git a/cime_config/machines/cmake_macros/intel_constance.cmake b/cime_config/machines/cmake_macros/intel_constance.cmake new file mode 100644 index 000000000000..838ecd08f835 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_constance.cmake @@ -0,0 +1,14 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +string(APPEND CPPDEFS " -DLINUX") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv") +endif() +set(NETCDF_PATH "$ENV{NETCDF_HOME}") +set(PIO_FILESYSTEM_HINTS "lustre") +set(PNETCDF_PATH "$ENV{PNETCDFROOT}") +set(SLIBS "-L${NETCDF_PATH}/lib -lnetcdf -lnetcdff -lpmi -L$ENV{MKL_PATH} -lmkl_rt") diff --git a/cime_config/machines/cmake_macros/intel_cori-haswell.cmake b/cime_config/machines/cmake_macros/intel_cori-haswell.cmake new file mode 100644 index 000000000000..976794802513 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_cori-haswell.cmake @@ -0,0 +1,21 @@ +set(ALBANY_PATH "/global/cfs/cdirs/e3sm/software/albany-trilinos/albany-install-2020-08-07") +set(FFLAGS "-convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model consistent -fimf-use-svml") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -debug minimal -qno-opt-dynamic-align") +endif() +set(CXXFLAGS "-std=c++14 -fp-model consistent") +if (compile_threaded) + string(APPEND CXXFLAGS " -qopenmp") +endif() +if (DEBUG) + string(APPEND CXXFLAGS " -O0 -g") +endif() +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O2") +endif() +set(PETSC_PATH "$ENV{PETSC_DIR}") +set(SCC "icc") +set(SCXX "icpc") +set(SFC "ifort") +string(APPEND SLIBS " -L$ENV{NETCDF_DIR} -lnetcdff -Wl,--as-needed,-L$ENV{NETCDF_DIR}/lib -lnetcdff -lnetcdf") +string(APPEND SLIBS " -mkl -lpthread") diff --git a/cime_config/machines/cmake_macros/intel_cori-knl.cmake b/cime_config/machines/cmake_macros/intel_cori-knl.cmake new file mode 100644 index 000000000000..18dfa7598e5d --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_cori-knl.cmake @@ -0,0 +1,42 @@ +set(ALBANY_PATH "/global/homes/m/mperego/e3sm-software/albany-trilinos/albany-install-2021-01-05") +set(CONFIG_ARGS "--host=cray") +if (MPILIB STREQUAL impi) + string(APPEND CFLAGS " -axMIC-AVX512 -xCORE-AVX2") +endif() +string(APPEND CPPDEFS " -DARCH_MIC_KNL") +set(FFLAGS "-convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model consistent -fimf-use-svml") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -debug minimal -qno-opt-dynamic-align") +endif() +if (MPILIB STREQUAL impi) + string(APPEND FFLAGS " -xMIC-AVX512") +endif() +string(APPEND FFLAGS " -DHAVE_ERF_INTRINSICS") +set(CXXFLAGS "-std=c++14 -fp-model consistent") +if (compile_threaded) + string(APPEND CXXFLAGS " -qopenmp") +endif() +if (DEBUG) + string(APPEND CXXFLAGS " -O0 -g") +endif() +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O2") +endif() +if (MPILIB STREQUAL impi) + set(MPICC "mpiicc") +endif() +if (MPILIB STREQUAL impi) + set(MPICXX "mpiicpc") +endif() +if (MPILIB STREQUAL impi) + set(MPIFC "mpiifort") +endif() +if (MPILIB STREQUAL impi) + set(MPI_LIB_NAME "impi") +endif() +set(PETSC_PATH "$ENV{PETSC_DIR}") +set(SCC "icc") +set(SCXX "icpc") +set(SFC "ifort") +string(APPEND SLIBS " -L$ENV{NETCDF_DIR} -lnetcdff -Wl,--as-needed,-L$ENV{NETCDF_DIR}/lib -lnetcdff -lnetcdf") +string(APPEND SLIBS " -mkl -lpthread") diff --git a/cime_config/machines/cmake_macros/intel_ghost.cmake b/cime_config/machines/cmake_macros/intel_ghost.cmake new file mode 100644 index 000000000000..d000931ba77f --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_ghost.cmake @@ -0,0 +1,25 @@ +set(ALBANY_PATH "/projects/ccsm/AlbanyTrilinos_20190904/albany-build/install") +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +set(ESMF_LIBDIR "/projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (MPILIB STREQUAL openmpi) + set(MPI_PATH "/opt/openmpi-1.8-intel") +endif() +set(NETCDF_PATH "$ENV{NETCDFROOT}") +if (MPILIB STREQUAL mpi-serial AND NOT compile_threaded) + set(PFUNIT_PATH "/projects/ccsm/pfunit/3.2.9/mpi-serial") +endif() +set(PIO_FILESYSTEM_HINTS "lustre") +set(PNETCDF_PATH "$ENV{PNETCDFROOT}") +execute_process(COMMAND ${NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -L/projects/ccsm/BLAS-intel -lblas_LINUX") +if (MPILIB STREQUAL openmpi) + string(APPEND SLIBS " -mkl=cluster") +endif() +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -mkl") +endif() diff --git a/cime_config/machines/cmake_macros/intel_grizzly.cmake b/cime_config/machines/cmake_macros/intel_grizzly.cmake new file mode 100644 index 000000000000..063bd4b72a07 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_grizzly.cmake @@ -0,0 +1,31 @@ +set(PIO_FILESYSTEM_HINTS "lustre") +if (MPILIB STREQUAL impi) + set(MPICC "mpiicc") +endif() +if (MPILIB STREQUAL impi) + set(MPICXX "mpiicpc") +endif() +if (MPILIB STREQUAL impi) + set(MPIFC "mpiifort") +endif() +if (NOT MPILIB STREQUAL impi) + set(MPICC "mpicc") +endif() +if (NOT MPILIB STREQUAL impi) + set(MPICXX "mpic++") +endif() +if (NOT MPILIB STREQUAL impi) + set(MPIFC "mpif90") +endif() +set(SFC "ifort") +set(SCC "icc") +set(SCXX "icpc") +execute_process(COMMAND $ENV{NETCDF_ROOT}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +execute_process(COMMAND $ENV{NETCDF_ROOT}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lnetcdff -llapack -lblas") +string(APPEND SLIBS " -mkl -lpthread") +set(CXX_LIBS "-lstdc++") +set(NETCDF_C_PATH "$ENV{NETCDF_ROOT}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_ROOT}") +set(PNETCDF_PATH "$ENV{PNETCDF_ROOT}") diff --git a/cime_config/machines/cmake_macros/intel_itasca.cmake b/cime_config/machines/cmake_macros/intel_itasca.cmake new file mode 100644 index 000000000000..4110425c2c2c --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_itasca.cmake @@ -0,0 +1,32 @@ +set(CFLAGS "-O2 -fp-model precise -I/soft/intel/x86_64/2013/composer_xe_2013/composer_xe_2013_sp1.3.174/mkl/include") +if (compile_threaded) + string(APPEND CFLAGS " -openmp") +endif() +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_R16") +string(APPEND CPPDEFS " -DCPRINTEL") +set(CXX_LDFLAGS "-cxxlib") +set(CXX_LINKER "FORTRAN") +set(FC_AUTO_R8 "-r8") +set(FFLAGS "-fp-model source -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -I/soft/intel/x86_64/2013/composer_xe_2013/composer_xe_2013_sp1.3.174/mkl/include") +if (compile_threaded) + string(APPEND FFLAGS " -openmp") +endif() +if (DEBUG) + string(APPEND FFLAGS " -O0 -g -check uninit -check bounds -check pointers -fpe0") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +set(FIXEDFLAGS "-fixed -132") +set(FREEFLAGS "-free") +if (compile_threaded) + string(APPEND LDFLAGS " -openmp") +endif() +set(MPICC "mpiicc") +set(MPICXX "mpiicpc") +set(MPIFC "mpiifort") +set(SCC "icc") +set(SCXX "icpc") +set(SFC "ifort") +string(APPEND SLIBS " -L/soft/netcdf/fortran-4.4-intel-sp1-update3-parallel/lib -lnetcdff -L/soft/hdf5/hdf5-1.8.13-intel-2013-sp1-update3-impi-5.0.0.028/lib -openmp -fPIC -lnetcdf -lnetcdf -L/soft/intel/x86_64/2013/composer_xe_2013/composer_xe_2013_sp1.3.174/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -lpthread -lm") +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/intel_lawrencium-lr3.cmake b/cime_config/machines/cmake_macros/intel_lawrencium-lr3.cmake new file mode 100644 index 000000000000..a0090c35e9df --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_lawrencium-lr3.cmake @@ -0,0 +1,6 @@ +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY") +endif() +set(LAPACK_LIBDIR "/global/software/sl-6.x86_64/modules/intel/2016.1.150/lapack/3.6.0-intel/lib") +set(NETCDF_PATH "$ENV{NETCDF_DIR}") +string(APPEND SLIBS " -lnetcdff -lnetcdf -mkl") diff --git a/cime_config/machines/cmake_macros/intel_lawrencium-lr6.cmake b/cime_config/machines/cmake_macros/intel_lawrencium-lr6.cmake new file mode 100644 index 000000000000..a0090c35e9df --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_lawrencium-lr6.cmake @@ -0,0 +1,6 @@ +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY") +endif() +set(LAPACK_LIBDIR "/global/software/sl-6.x86_64/modules/intel/2016.1.150/lapack/3.6.0-intel/lib") +set(NETCDF_PATH "$ENV{NETCDF_DIR}") +string(APPEND SLIBS " -lnetcdff -lnetcdf -mkl") diff --git a/cime_config/machines/cmake_macros/intel_mappy.cmake b/cime_config/machines/cmake_macros/intel_mappy.cmake new file mode 100644 index 000000000000..34d8d7812c9f --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_mappy.cmake @@ -0,0 +1,15 @@ +set(ALBANY_PATH "/projects/install/rhel7-x86_64/ACME/AlbanyTrilinos/Albany/build/install") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +set(CXX_LIBS "-lstdc++ -lmpi_cxx") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +set(NETCDF_PATH "$ENV{NETCDFROOT}") +set(PNETCDF_PATH "$ENV{PNETCDFROOT}") +execute_process(COMMAND ${NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lblas -llapack") diff --git a/cime_config/machines/cmake_macros/intel_melvin.cmake b/cime_config/machines/cmake_macros/intel_melvin.cmake new file mode 100644 index 000000000000..4b9cd863111d --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_melvin.cmake @@ -0,0 +1,15 @@ +set(ALBANY_PATH "/projects/install/rhel6-x86_64/ACME/AlbanyTrilinos/Albany/build/install") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +set(CXX_LIBS "-lstdc++ -lmpi_cxx") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +set(NETCDF_PATH "$ENV{NETCDFROOT}") +set(PNETCDF_PATH "$ENV{PNETCDFROOT}") +execute_process(COMMAND ${NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lblas -llapack") diff --git a/cime_config/machines/cmake_macros/intel_quartz.cmake b/cime_config/machines/cmake_macros/intel_quartz.cmake new file mode 100644 index 000000000000..aa851129bb25 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_quartz.cmake @@ -0,0 +1,16 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +string(APPEND CPPDEFS " -DNO_SHR_VMATH -DCNL") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv") +endif() +string(APPEND SLIBS " -llapack -lblas") +set(MPI_LIB_NAME "mpich") +set(MPI_PATH "/usr/tce/packages/mvapich2/mvapich2-2.2-intel-18.0.1/") +set(NETCDF_PATH "/usr/tce/packages/netcdf-fortran/netcdf-fortran-4.4.4-intel-18.0.1/") +execute_process(COMMAND /usr/tce/packages/netcdf-fortran/netcdf-fortran-4.4.4-intel-18.0.1/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") diff --git a/cime_config/machines/cmake_macros/intel_sandiatoss3.cmake b/cime_config/machines/cmake_macros/intel_sandiatoss3.cmake new file mode 100644 index 000000000000..317bd3a6d69d --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_sandiatoss3.cmake @@ -0,0 +1,28 @@ +set(ALBANY_PATH "/projects/ccsm/AlbanyTrilinos_20190904/albany-build/install") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +set(ESMF_LIBDIR "/projects/ccsm/esmf-6.3.0rp1/lib/libO/Linux.intel.64.openmpi.default") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (MPILIB STREQUAL openmpi) + set(MPI_PATH "$ENV{MPIHOME}") +endif() +set(NETCDF_PATH "$ENV{NETCDFROOT}") +if (MPILIB STREQUAL mpi-serial AND NOT compile_threaded) + set(PFUNIT_PATH "/projects/ccsm/pfunit/3.2.9/mpi-serial") +endif() +set(PIO_FILESYSTEM_HINTS "lustre") +set(PNETCDF_PATH "$ENV{PNETCDFROOT}") +execute_process(COMMAND ${NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -L/projects/ccsm/BLAS-intel -lblas_LINUX -L$ENV{MKL_LIBS} -lmkl_rt") +if (MPILIB STREQUAL openmpi) + string(APPEND SLIBS " -mkl=cluster") +endif() +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -mkl") +endif() diff --git a/cime_config/machines/cmake_macros/intel_sooty.cmake b/cime_config/machines/cmake_macros/intel_sooty.cmake new file mode 100644 index 000000000000..a9d37eddba70 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_sooty.cmake @@ -0,0 +1,14 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +string(APPEND CPPDEFS " -DLINUX") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv -init=snan") +endif() +set(NETCDF_PATH "$ENV{NETCDF_PATH}") +set(PIO_FILESYSTEM_HINTS "lustre") +set(PNETCDF_PATH "$ENV{PNETCDFROOT}") +set(SLIBS "-L${NETCDF_PATH}/lib -lnetcdf -lnetcdff -lpmi -L$ENV{MKL_PATH} -lmkl_rt") diff --git a/cime_config/machines/cmake_macros/intel_stampede2.cmake b/cime_config/machines/cmake_macros/intel_stampede2.cmake new file mode 100644 index 000000000000..8d9546b25c02 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_stampede2.cmake @@ -0,0 +1,36 @@ +string(APPEND CFLAGS " -xCORE-AVX2") +string(APPEND CPPDEFS " -DLINUX") +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_NANOTIME -DBIT64 -DHAVE_VPRINTF -DHAVE_BACKTRACE -DHAVE_SLASHPROC -DHAVE_COMM_F2C -DHAVE_TIMES -DHAVE_GETTIMEOFDAY") +endif() +string(APPEND CPPDEFS " -DARCH_MIC_KNL") +set(FFLAGS "-convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model consistent -fimf-use-svml") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -debug minimal -qno-opt-dynamic-align") +endif() +string(APPEND FFLAGS " -xCORE-AVX2") +set(HDF5_PATH "$ENV{TACC_HDF5_DIR}") +set(MPICC "mpicc") +set(MPICXX "mpicxx") +set(MPIFC "mpif90") +set(MPI_LIB_NAME "impi") +if (MPILIB STREQUAL impi) + set(NETCDF_PATH "$ENV{TACC_NETCDF_DIR}") +endif() +if (MPILIB STREQUAL mpi-serial) + set(NETCDF_PATH "$ENV{TACC_NETCDF_DIR}") +endif() +set(PETSC_PATH "$ENV{PETSC_DIR}") +if (MPILIB STREQUAL impi) + set(PNETCDF_PATH "$ENV{TACC_PNETCDF_DIR}") +endif() +set(SCC "icc") +set(SCXX "icpc") +set(SFC "ifort") +if (MPILIB STREQUAL impi) + string(APPEND SLIBS " -L${NETCDF_PATH} -lnetcdff -Wl,--as-needed,-L${NETCDF_PATH}/lib -lnetcdff -lnetcdf") +endif() +if (MPILIB STREQUAL mpi-serial) + string(APPEND SLIBS " -L${NETCDF_PATH} -lnetcdff -Wl,--as-needed,-L${NETCDF_PATH}/lib -lnetcdff -lnetcdf") +endif() +string(APPEND SLIBS " -mkl -lpthread") diff --git a/cime_config/machines/cmake_macros/intel_syrah.cmake b/cime_config/machines/cmake_macros/intel_syrah.cmake new file mode 100644 index 000000000000..aa851129bb25 --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_syrah.cmake @@ -0,0 +1,16 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +string(APPEND CPPDEFS " -DNO_SHR_VMATH -DCNL") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv") +endif() +string(APPEND SLIBS " -llapack -lblas") +set(MPI_LIB_NAME "mpich") +set(MPI_PATH "/usr/tce/packages/mvapich2/mvapich2-2.2-intel-18.0.1/") +set(NETCDF_PATH "/usr/tce/packages/netcdf-fortran/netcdf-fortran-4.4.4-intel-18.0.1/") +execute_process(COMMAND /usr/tce/packages/netcdf-fortran/netcdf-fortran-4.4.4-intel-18.0.1/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") diff --git a/cime_config/machines/cmake_macros/intel_theta.cmake b/cime_config/machines/cmake_macros/intel_theta.cmake new file mode 100644 index 000000000000..e8ecb73f5f9f --- /dev/null +++ b/cime_config/machines/cmake_macros/intel_theta.cmake @@ -0,0 +1,12 @@ +set(CONFIG_ARGS "--host=cray") +string(APPEND CPPDEFS " -DARCH_MIC_KNL") +set(FFLAGS "-convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model consistent -fimf-use-svml=true") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -debug minimal -qno-opt-dynamic-align -fp-speculation=off") +endif() +string(APPEND FFLAGS " -DHAVE_ERF_INTRINSICS") +set(SCC "icc") +set(SCXX "icpc") +set(SFC "ifort") +string(APPEND SLIBS " -L$ENV{NETCDF_DIR}/lib -lnetcdff -L$ENV{NETCDF_DIR}/lib -lnetcdf -Wl,-rpath -Wl,$ENV{NETCDF_DIR}/lib") +string(APPEND SLIBS " -mkl -lpthread") diff --git a/cime_config/machines/cmake_macros/nag.cmake b/cime_config/machines/cmake_macros/nag.cmake new file mode 100644 index 000000000000..195be6dafad4 --- /dev/null +++ b/cime_config/machines/cmake_macros/nag.cmake @@ -0,0 +1,32 @@ +if (DEBUG) + string(APPEND CFLAGS " -g") +endif() +string(APPEND CFLAGS " -std=c99") +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_CRAY_POINTERS -DNO_SHR_VMATH -DCPRNAG") +set(FC_AUTO_R8 "-r8") +set(FFLAGS "-wmismatch=mpi_send,mpi_recv,mpi_bcast,mpi_allreduce,mpi_reduce,mpi_isend,mpi_irecv,mpi_irsend,mpi_rsend,mpi_gatherv,mpi_gather,mpi_scatterv,mpi_allgather,mpi_alltoallv,mpi_file_read_all,mpi_file_write_all,mpibcast,mpiscatterv,mpi_alltoallw,nfmpi_get_vara_all,NFMPI_IPUT_VARA,NFMPI_GET_VAR_ALL,NFMPI_PUT_VARA,NFMPI_PUT_ATT_REAL,NFMPI_PUT_ATT_DOUBLE,NFMPI_PUT_ATT_INT,NFMPI_GET_ATT_REAL,NFMPI_GET_ATT_INT,NFMPI_GET_ATT_DOUBLE,NFMPI_PUT_VARA_DOUBLE_ALL,NFMPI_PUT_VARA_REAL_ALL,NFMPI_PUT_VARA_INT_ALL -convert=BIG_ENDIAN") +if (NOT DEBUG) + string(APPEND FFLAGS " -ieee=full -O2") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -time -f2003 -ieee=stop") +endif() +if (DEBUG) + string(APPEND FFLAGS " -C=all -g -time -f2003 -ieee=stop") +endif() +if (DEBUG AND NOT compile_threaded) + string(APPEND FFLAGS " -gline") +endif() +if (compile_threaded) + string(APPEND FFLAGS " -openmp") +endif() +set(FIXEDFLAGS "-fixed") +set(FREEFLAGS "-free") +set(HAS_F2008_CONTIGUOUS "FALSE") +if (compile_threaded) + string(APPEND LDFLAGS " -openmp") +endif() +set(MPICC "mpicc") +set(MPIFC "mpif90") +set(SCC "gcc") +set(SFC "nagfor") diff --git a/cime_config/machines/cmake_macros/nag_cascade.cmake b/cime_config/machines/cmake_macros/nag_cascade.cmake new file mode 100644 index 000000000000..3d59f8b6e643 --- /dev/null +++ b/cime_config/machines/cmake_macros/nag_cascade.cmake @@ -0,0 +1,14 @@ +string(APPEND CPPDEFS " -DnoI8") +if (DEBUG) + string(APPEND FFLAGS " -C=all -g -O0 -v") +endif() +if (DEBUG AND COMP_NAME STREQUAL eam) + string(APPEND FFLAGS " -C=all -g -nan -O0 -v") +endif() +if (MPILIB STREQUAL mvapich2) + set(MPI_PATH "$ENV{MPI_LIB}") +endif() +set(NETCDF_PATH "$ENV{NETCDF_ROOT}") +set(PIO_FILESYSTEM_HINTS "lustre") +set(PNETCDF_PATH "$ENV{PNETCDFROOT}") +string(APPEND SLIBS " -L$ENV{NETCDF_ROOT}/lib -lnetcdf -lnetcdff -L$ENV{MKL_PATH} -lmkl_rt") diff --git a/cime_config/machines/cmake_macros/nag_constance.cmake b/cime_config/machines/cmake_macros/nag_constance.cmake new file mode 100644 index 000000000000..854411de5405 --- /dev/null +++ b/cime_config/machines/cmake_macros/nag_constance.cmake @@ -0,0 +1,14 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2 -kind=byte") +endif() +string(APPEND CPPDEFS " -DLINUX") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -kind=byte") +endif() +if (DEBUG) + string(APPEND FFLAGS " -C=all -g -O0 -v") +endif() +set(NETCDF_PATH "$ENV{NETCDF_HOME}") +set(PIO_FILESYSTEM_HINTS "lustre") +set(PNETCDF_PATH "$ENV{PNETCDFROOT}") +set(SLIBS "-L${NETCDF_PATH}/lib -lnetcdf -lnetcdff -lpmi -L$ENV{MKL_PATH} -lmkl_rt") diff --git a/cime_config/machines/cmake_macros/oneapi-ifort.cmake b/cime_config/machines/cmake_macros/oneapi-ifort.cmake new file mode 100644 index 000000000000..c5edf6ad14a0 --- /dev/null +++ b/cime_config/machines/cmake_macros/oneapi-ifort.cmake @@ -0,0 +1,54 @@ +set(FFLAGS "-convert big_endian -assume byterecl -traceback -assume realloc_lhs -fp-model consistent") +if (compile_threaded) + string(APPEND FFLAGS " -qopenmp") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND FFLAGS " -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created") +endif() +set(CFLAGS "-fp-model precise -std=gnu99 -traceback") +if (compile_threaded) + string(APPEND CFLAGS " -qopenmp") +endif() +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND CFLAGS " -O0 -g") +endif() +set(CXXFLAGS "-std=c++14 -fp-model precise -traceback") +if (compile_threaded) + string(APPEND CXXFLAGS " -qopenmp") +endif() +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND CXXFLAGS " -O0 -g") +endif() +set(SUPPORTS_CXX "TRUE") +set(CXX_LINKER "FORTRAN") +set(CXX_LDFLAGS "-cxxlib") +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL -DHAVE_SLASHPROC") +set(FC_AUTO_R8 "-r8") +set(FFLAGS_NOOPT "-O0") +set(FIXEDFLAGS "-fixed -132") +set(FREEFLAGS "-free") +set(HAS_F2008_CONTIGUOUS "TRUE") +set(MPIFC "mpif90") +set(MPICC "mpicc") +set(MPICXX "mpicxx") +set(SCC "icc") +set(SCXX "icpc") +set(SFC "ifort") +if (compile_threaded) + string(APPEND LDFLAGS " -qopenmp") +endif() +execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -Wl,-rpath -Wl,$ENV{NETCDF_PATH}/lib -mkl") +execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +set(NETCDF_PATH "$ENV{NETCDF_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/oneapi-ifx.cmake b/cime_config/machines/cmake_macros/oneapi-ifx.cmake new file mode 100644 index 000000000000..6556409ddb5d --- /dev/null +++ b/cime_config/machines/cmake_macros/oneapi-ifx.cmake @@ -0,0 +1,55 @@ +set(FFLAGS "-traceback -convert big_endian -assume byterecl -assume realloc_lhs -fp-model precise") +if (compile_threaded) + string(APPEND FFLAGS " -qopenmp") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND FFLAGS " -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created") +endif() +set(CFLAGS "-traceback -fp-model precise -std=gnu99") +if (compile_threaded) + string(APPEND CFLAGS " -qopenmp") +endif() +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND CFLAGS " -O0 -g") +endif() +set(CXXFLAGS "-traceback -std=c++17 -fp-model precise") +if (compile_threaded) + string(APPEND CXXFLAGS " -qopenmp") +endif() +if (NOT DEBUG) + string(APPEND CXXFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND CXXFLAGS " -O0 -g") +endif() +set(SUPPORTS_CXX "TRUE") +set(CXX_LINKER "FORTRAN") +set(CXX_LDFLAGS "-cxxlib") +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_R16 -DCPRINTEL -DHAVE_SLASHPROC") +set(FC_AUTO_R8 "-r8") +set(FFLAGS_NOOPT "-O0") +set(FIXEDFLAGS "-fixed -132") +set(FREEFLAGS "-free") +set(HAS_F2008_CONTIGUOUS "TRUE") +set(MPIFC "mpiifx") +set(MPICC "mpiicx") +set(MPICXX "mpiicpx") +set(SCC "icx") +set(SCXX "icpx") +set(SFC "ifx") +if (compile_threaded) + string(APPEND LDFLAGS " -qopenmp") +endif() +execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -Wl,-rpath -Wl,$ENV{NETCDF_PATH}/lib -qmkl") +execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +string(APPEND SLIBS " -fiopenmp -fopenmp-targets=spir64") +set(NETCDF_PATH "$ENV{NETCDF_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/pathscale.cmake b/cime_config/machines/cmake_macros/pathscale.cmake new file mode 100644 index 000000000000..5ab9f8752f2b --- /dev/null +++ b/cime_config/machines/cmake_macros/pathscale.cmake @@ -0,0 +1,19 @@ +if (compile_threaded) + string(APPEND CFLAGS " -mp") +endif() +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_R16 -DCPRPATHSCALE") +set(FC_AUTO_R8 "-r8") +set(FFLAGS "-O -extend_source -ftpp -fno-second-underscore -funderscoring -byteswapio") +if (compile_threaded) + string(APPEND FFLAGS " -mp") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -trapuv -Wuninitialized") +endif() +set(FFLAGS_NOOPT "-O0") +set(HAS_F2008_CONTIGUOUS "FALSE") +if (compile_threaded) + string(APPEND LDFLAGS " -mp") +endif() +set(MPICC "mpicc") +set(MPIFC "mpif90") diff --git a/cime_config/machines/cmake_macros/pgi.cmake b/cime_config/machines/cmake_macros/pgi.cmake new file mode 100644 index 000000000000..b87976f0db95 --- /dev/null +++ b/cime_config/machines/cmake_macros/pgi.cmake @@ -0,0 +1,50 @@ +set(CFLAGS "-time") +if (compile_threaded) + string(APPEND CFLAGS " -mp") +endif() +set(CXXFLAGS "-time -std=c++14") +if (compile_threaded) + string(APPEND CXXFLAGS " -mp") +endif() +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DCPRPGI") +set(CXX_LINKER "CXX") +set(FC_AUTO_R8 "-r8") +set(FFLAGS "-i4 -time -Mstack_arrays -Mextend -byteswapio -Mflushz -Kieee -Mallocatable=03") +if (compile_threaded) + string(APPEND FFLAGS " -mp") +endif() +if (DEBUG) + string(APPEND FFLAGS " -O0 -g -Ktrap=fp -Mbounds -Kieee") +endif() +if (COMP_NAME STREQUAL datm) + string(APPEND FFLAGS " -Mnovect") +endif() +if (COMP_NAME STREQUAL dlnd) + string(APPEND FFLAGS " -Mnovect") +endif() +if (COMP_NAME STREQUAL drof) + string(APPEND FFLAGS " -Mnovect") +endif() +if (COMP_NAME STREQUAL dwav) + string(APPEND FFLAGS " -Mnovect") +endif() +if (COMP_NAME STREQUAL dice) + string(APPEND FFLAGS " -Mnovect") +endif() +if (COMP_NAME STREQUAL docn) + string(APPEND FFLAGS " -Mnovect") +endif() +set(FFLAGS_NOOPT "-O0") +set(FIXEDFLAGS "-Mfixed") +set(FREEFLAGS "-Mfree") +set(HAS_F2008_CONTIGUOUS "FALSE") +set(LDFLAGS "-time -Wl,--allow-multiple-definition") +if (compile_threaded) + string(APPEND LDFLAGS " -mp") +endif() +set(MPICC "mpicc") +set(MPICXX "mpicxx") +set(MPIFC "mpif90") +set(SCC "pgcc") +set(SCXX "pgc++") +set(SFC "pgf95") diff --git a/cime_config/machines/cmake_macros/pgi_ascent.cmake b/cime_config/machines/cmake_macros/pgi_ascent.cmake new file mode 100644 index 000000000000..6a27344139e8 --- /dev/null +++ b/cime_config/machines/cmake_macros/pgi_ascent.cmake @@ -0,0 +1,23 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2 -Mvect=nosimd") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -DSUMMITDEV_PGI") +endif() +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf -L$ENV{HDF5_PATH}/lib -lhdf5_hl -lhdf5 -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +set(CXX_LINKER "FORTRAN") +set(CXX_LIBS "-lstdc++") +set(MPICC "mpicc") +set(MPICXX "mpiCC") +set(MPIFC "mpif90") +set(PIO_FILESYSTEM_HINTS "gpfs") +set(SCC "pgcc") +set(SCXX "pgc++") +set(SFC "pgfortran") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/pgi_compy.cmake b/cime_config/machines/cmake_macros/pgi_compy.cmake new file mode 100644 index 000000000000..f4601aace0a8 --- /dev/null +++ b/cime_config/machines/cmake_macros/pgi_compy.cmake @@ -0,0 +1,35 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +if (COMP_NAME STREQUAL gptl) + string(APPEND CFLAGS " -DHAVE_SLASHPROC") +endif() +set(CXX_LIBS "-lstdc++") +set(CXX_LINKER "FORTRAN") +string(APPEND CPPDEFS " -DLINUX") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND FFLAGS " -C -Mbounds -traceback -Mchkfpstk -Mchkstk -Mdalign -Mdepchk -Mextend -Miomutex -Mrecursive -Ktrap=fp -O0 -g -byteswapio -Meh_frame") +endif() +if (COMP_NAME STREQUAL eam) + string(APPEND FFLAGS " -Mnovect") +endif() +if (COMP_NAME STREQUAL cice) + string(APPEND FFLAGS " -Mnovect") +endif() +set(NETCDF_PATH "$ENV{NETCDF_HOME}") +set(PIO_FILESYSTEM_HINTS "lustre") +set(PNETCDF_PATH "$ENV{PNETCDF_HOME}") +string(APPEND SLIBS " -lpmi -L${NETCDF_PATH}/lib -lnetcdf -lnetcdff -L$ENV{MKL_PATH}/lib/intel64/ -lmkl_rt $ENV{PNETCDF_LIBRARIES}") +if (MPILIB STREQUAL impi) + set(MPICC "mpipgcc") +endif() +if (MPILIB STREQUAL impi) + set(MPICXX "mpipgcxx") +endif() +if (MPILIB STREQUAL impi) + set(MPIFC "mpipgf90") +endif() +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/pgi_constance.cmake b/cime_config/machines/cmake_macros/pgi_constance.cmake new file mode 100644 index 000000000000..2026285ffe2e --- /dev/null +++ b/cime_config/machines/cmake_macros/pgi_constance.cmake @@ -0,0 +1,17 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2") +endif() +string(APPEND CPPDEFS " -DLINUX") +if (NOT DEBUG) + string(APPEND FFLAGS " -O2") +endif() +if (DEBUG) + string(APPEND FFLAGS " -g -traceback -O0 -fpe0 -check all -check noarg_temp_created -ftrapuv") +endif() +if (DEBUG) + string(APPEND FFLAGS " -C -Mbounds -traceback -Mchkfpstk -Mchkstk -Mdalign -Mdepchk -Mextend -Miomutex -Mrecursive -Ktrap=fp -O0 -g -byteswapio -Meh_frame") +endif() +set(NETCDF_PATH "$ENV{NETCDF_HOME}") +set(PIO_FILESYSTEM_HINTS "lustre") +set(PNETCDF_PATH "$ENV{PNETCDFROOT}") +set(SLIBS "-L${NETCDF_PATH}/lib -lnetcdf -lnetcdff -lpmi -L$ENV{MPI_LIB} -lmpich") diff --git a/cime_config/machines/cmake_macros/pgi_summit.cmake b/cime_config/machines/cmake_macros/pgi_summit.cmake new file mode 100644 index 000000000000..6a27344139e8 --- /dev/null +++ b/cime_config/machines/cmake_macros/pgi_summit.cmake @@ -0,0 +1,23 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2 -Mvect=nosimd") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -DSUMMITDEV_PGI") +endif() +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf -L$ENV{HDF5_PATH}/lib -lhdf5_hl -lhdf5 -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +set(CXX_LINKER "FORTRAN") +set(CXX_LIBS "-lstdc++") +set(MPICC "mpicc") +set(MPICXX "mpiCC") +set(MPIFC "mpif90") +set(PIO_FILESYSTEM_HINTS "gpfs") +set(SCC "pgcc") +set(SCXX "pgc++") +set(SFC "pgfortran") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/pgigpu.cmake b/cime_config/machines/cmake_macros/pgigpu.cmake new file mode 100644 index 000000000000..4619a19d78b0 --- /dev/null +++ b/cime_config/machines/cmake_macros/pgigpu.cmake @@ -0,0 +1,53 @@ +set(CFLAGS "-time") +if (compile_threaded) + string(APPEND CFLAGS " -mp") +endif() +set(CXXFLAGS "-time -std=c++14") +if (compile_threaded) + string(APPEND CXXFLAGS " -mp") +endif() +string(APPEND CPPDEFS " -DFORTRANUNDERSCORE -DNO_SHR_VMATH -DNO_R16 -DCPRPGI") +set(CXX_LINKER "CXX") +set(FC_AUTO_R8 "-r8") +set(FFLAGS "-i4 -time -Mstack_arrays -Mextend -byteswapio -Mflushz -Kieee -Mallocatable=03") +if (compile_threaded) + string(APPEND FFLAGS " -mp") +endif() +if (COMP_NAME STREQUAL eam) + string(APPEND FFLAGS " ") +endif() +if (DEBUG) + string(APPEND FFLAGS " -O0 -g -Ktrap=fp -Mbounds -Kieee") +endif() +if (COMP_NAME STREQUAL datm) + string(APPEND FFLAGS " -Mnovect") +endif() +if (COMP_NAME STREQUAL dlnd) + string(APPEND FFLAGS " -Mnovect") +endif() +if (COMP_NAME STREQUAL drof) + string(APPEND FFLAGS " -Mnovect") +endif() +if (COMP_NAME STREQUAL dwav) + string(APPEND FFLAGS " -Mnovect") +endif() +if (COMP_NAME STREQUAL dice) + string(APPEND FFLAGS " -Mnovect") +endif() +if (COMP_NAME STREQUAL docn) + string(APPEND FFLAGS " -Mnovect") +endif() +set(FFLAGS_NOOPT "-O0") +set(FIXEDFLAGS "-Mfixed") +set(FREEFLAGS "-Mfree") +set(HAS_F2008_CONTIGUOUS "FALSE") +set(LDFLAGS "-time -Wl,--allow-multiple-definition -acc") +if (compile_threaded) + string(APPEND LDFLAGS " -mp") +endif() +set(MPICC "mpicc") +set(MPICXX "mpicxx") +set(MPIFC "mpif90") +set(SCC "pgcc") +set(SCXX "pgc++") +set(SFC "pgf95") diff --git a/cime_config/machines/cmake_macros/pgigpu_ascent.cmake b/cime_config/machines/cmake_macros/pgigpu_ascent.cmake new file mode 100644 index 000000000000..f14e7525e8e8 --- /dev/null +++ b/cime_config/machines/cmake_macros/pgigpu_ascent.cmake @@ -0,0 +1,24 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2 -Mvect=nosimd") +endif() +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -Mvect=nosimd -DSUMMITDEV_PGI") +endif() +string(APPEND LDFLAGS " -Minline -ta=nvidia,cc70,fastmath,loadcache:L1,unroll,fma,managed,ptxinfo -Mcuda -Minfo=accel") +string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf -L$ENV{HDF5_PATH}/lib -lhdf5_hl -lhdf5 -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +set(CXX_LINKER "FORTRAN") +set(CXX_LIBS "-lstdc++") +set(KOKKOS_OPTIONS "--arch=Power9,Volta70 --with-cuda=$ENV{CUDA_DIR} --with-cuda-options=enable_lambda") +set(MPICC "mpicc") +set(MPICXX "mpiCC") +set(MPIFC "mpif90") +set(PIO_FILESYSTEM_HINTS "gpfs") +set(SCC "pgcc") +set(SFC "pgfortran") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/pgigpu_blues.cmake b/cime_config/machines/cmake_macros/pgigpu_blues.cmake new file mode 100644 index 000000000000..93d113e124ce --- /dev/null +++ b/cime_config/machines/cmake_macros/pgigpu_blues.cmake @@ -0,0 +1,21 @@ +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_NANOTIME -DBIT64 -DHAVE_SLASHPROC -DHAVE_GETTIMEOFDAY") +endif() +set(PIO_FILESYSTEM_HINTS "gpfs") +if (NOT DEBUG) + string(APPEND CFLAGS " -O2 -Mvect=nosimd") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -Mvect=nosimd -DSUMMITDEV_PGI") +endif() +string(APPEND LDFLAGS " -Minline -ta=tesla:ccall,fastmath,loadcache:L1,unroll,fma,managed,deepcopy,nonvvm -Mcuda -Minfo=accel") +execute_process(COMMAND $ENV{NETCDF_FORTRAN_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -llapack -lblas") +execute_process(COMMAND $ENV{NETCDF_C_PATH}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +set(SUPPORTS_CXX "TRUE") +set(CXX_LINKER "FORTRAN") +set(CXX_LIBS "-lstdc++") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/pgigpu_summit.cmake b/cime_config/machines/cmake_macros/pgigpu_summit.cmake new file mode 100644 index 000000000000..f14e7525e8e8 --- /dev/null +++ b/cime_config/machines/cmake_macros/pgigpu_summit.cmake @@ -0,0 +1,24 @@ +if (NOT DEBUG) + string(APPEND CFLAGS " -O2 -Mvect=nosimd") +endif() +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_SLASHPROC") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -Mvect=nosimd -DSUMMITDEV_PGI") +endif() +string(APPEND LDFLAGS " -Minline -ta=nvidia,cc70,fastmath,loadcache:L1,unroll,fma,managed,ptxinfo -Mcuda -Minfo=accel") +string(APPEND SLIBS " -L$ENV{PNETCDF_PATH}/lib -lpnetcdf -L$ENV{HDF5_PATH}/lib -lhdf5_hl -lhdf5 -L$ENV{NETCDF_C_PATH}/lib -lnetcdf -L$ENV{NETCDF_FORTRAN_PATH}/lib -lnetcdff -L$ENV{ESSL_PATH}/lib64 -lessl -L$ENV{OLCF_NETLIB_LAPACK_ROOT}/lib -llapack") +set(CXX_LINKER "FORTRAN") +set(CXX_LIBS "-lstdc++") +set(KOKKOS_OPTIONS "--arch=Power9,Volta70 --with-cuda=$ENV{CUDA_DIR} --with-cuda-options=enable_lambda") +set(MPICC "mpicc") +set(MPICXX "mpiCC") +set(MPIFC "mpif90") +set(PIO_FILESYSTEM_HINTS "gpfs") +set(SCC "pgcc") +set(SFC "pgfortran") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") +set(SUPPORTS_CXX "TRUE") diff --git a/cime_config/machines/cmake_macros/pgigpu_swing.cmake b/cime_config/machines/cmake_macros/pgigpu_swing.cmake new file mode 100644 index 000000000000..93d113e124ce --- /dev/null +++ b/cime_config/machines/cmake_macros/pgigpu_swing.cmake @@ -0,0 +1,21 @@ +if (COMP_NAME STREQUAL gptl) + string(APPEND CPPDEFS " -DHAVE_NANOTIME -DBIT64 -DHAVE_SLASHPROC -DHAVE_GETTIMEOFDAY") +endif() +set(PIO_FILESYSTEM_HINTS "gpfs") +if (NOT DEBUG) + string(APPEND CFLAGS " -O2 -Mvect=nosimd") +endif() +if (NOT DEBUG) + string(APPEND FFLAGS " -O2 -Mvect=nosimd -DSUMMITDEV_PGI") +endif() +string(APPEND LDFLAGS " -Minline -ta=tesla:ccall,fastmath,loadcache:L1,unroll,fma,managed,deepcopy,nonvvm -Mcuda -Minfo=accel") +execute_process(COMMAND $ENV{NETCDF_FORTRAN_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -llapack -lblas") +execute_process(COMMAND $ENV{NETCDF_C_PATH}/bin/nc-config --libs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") +set(SUPPORTS_CXX "TRUE") +set(CXX_LINKER "FORTRAN") +set(CXX_LIBS "-lstdc++") +set(NETCDF_C_PATH "$ENV{NETCDF_C_PATH}") +set(NETCDF_FORTRAN_PATH "$ENV{NETCDF_FORTRAN_PATH}") +set(PNETCDF_PATH "$ENV{PNETCDF_PATH}") diff --git a/cime_config/machines/cmake_macros/universal.cmake b/cime_config/machines/cmake_macros/universal.cmake new file mode 100644 index 000000000000..1f42eb3c04a5 --- /dev/null +++ b/cime_config/machines/cmake_macros/universal.cmake @@ -0,0 +1 @@ +set(SUPPORTS_CXX "FALSE") diff --git a/cime_config/machines/cmake_macros/userdefined.cmake b/cime_config/machines/cmake_macros/userdefined.cmake new file mode 100644 index 000000000000..bf690d068b45 --- /dev/null +++ b/cime_config/machines/cmake_macros/userdefined.cmake @@ -0,0 +1,9 @@ +set(CONFIG_ARGS "") +string(APPEND CPPDEFS " ") +set(ESMF_LIBDIR "") +set(MPI_LIB_NAME "") +set(MPI_PATH "") +set(NETCDF_PATH "USERDEFINED_MUST_EDIT_THIS") +set(PNETCDF_PATH "") +execute_process(COMMAND ${NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) +string(APPEND SLIBS " # USERDEFINED ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") diff --git a/cime_config/machines/config_compilers.xml b/cime_config/machines/config_compilers.xml index 223887cf81b6..cdc8e885ae70 100644 --- a/cime_config/machines/config_compilers.xml +++ b/cime_config/machines/config_compilers.xml @@ -731,7 +731,7 @@ flags should be captured within MPAS CMake files. TRUE - -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY -DHAVE_BACKTRACE + -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY -DHAVE_BACKTRACE $ENV{NETCDF_HOME} @@ -2362,7 +2362,7 @@ flags should be captured within MPAS CMake files. TRUE - -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY -DHAVE_BACKTRACE + -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY -DHAVE_BACKTRACE -fno-unsafe-math-optimizations @@ -2381,7 +2381,7 @@ flags should be captured within MPAS CMake files. TRUE - -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY -DHAVE_BACKTRACE -DHAVE_SLASHPROC + -DHAVE_VPRINTF -DHAVE_GETTIMEOFDAY -DHAVE_BACKTRACE -DHAVE_SLASHPROC -lstdc++ diff --git a/cime_config/machines/scripts/README b/cime_config/machines/scripts/README new file mode 100644 index 000000000000..f9f3f2bf8cdd --- /dev/null +++ b/cime_config/machines/scripts/README @@ -0,0 +1,2 @@ +This scripts should only be needed temporarily during the +transition from config_compilers.xml to cmake-macros. diff --git a/cime_config/machines/scripts/compare-flags b/cime_config/machines/scripts/compare-flags new file mode 100755 index 000000000000..e9d8b260cc7a --- /dev/null +++ b/cime_config/machines/scripts/compare-flags @@ -0,0 +1,194 @@ +#! /usr/bin/env python3 + +""" +Compare two build trees to see if compiler or link flags have changed. +""" + +import argparse, sys, os, subprocess, glob +from pathlib import Path + +############################################################################### +def run_cmd_no_fail(cmd, from_dir=None): +############################################################################### + proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, + cwd=from_dir, text=True) + output, errput = proc.communicate() + stat = proc.wait() + + assert stat == 0, f"CMD: {cmd} FAILED when run from {from_dir}\nERROR: {errput}" + assert isinstance(output, str) + + return output.strip() + +############################################################################### +def parse_command_line(args, description): +############################################################################### + parser = argparse.ArgumentParser( + usage="""\n{0} +OR +{0} --help + +\033[1mEXAMPLES:\033[0m + \033[1;32m# Compare case1 to case2 \033[0m + > {0} $case1dir $case2dir + + \033[1;32m# same as ^, except with comparisons not sensitive to flag order. This flag is likely to be necessary for the flags.make to match \033[0m + > {0} $case1dir $case2dir -u + + \033[1;32m# same as ^, except limit to atm component \033[0m + > {0} $case1dir $case2dir -u -l atm.dir + + \033[1;32m# same as ^, except limit to link flags for all components \033[0m + > {0} $case1dir $case2dir -u -l link.txt +""".format(os.path.basename(args[0])), + description=description, + formatter_class=argparse.ArgumentDefaultsHelpFormatter + ) + + parser.add_argument("case1", help="The path to case1") + + parser.add_argument("case2", help="The path to case2") + + parser.add_argument("-u", "--unordered", action="store_true", + help="Make comparisons not sensitive to token order") + + parser.add_argument("-l", "--limit", dest="limits", action="append", default=[], + help="Limit compared files to files containing this substring. This option can be supplied multiple times") + + parser.add_argument("-v", "--verbose", action="store_true", help="Print diff details") + + args = parser.parse_args(args[1:]) + + return args + +############################################################################### +def find_files(builddir_cmake, filename, limits): +############################################################################### + result = [] + all_files = list(sorted(glob.glob(f"{builddir_cmake}/**/{filename}", recursive=True))) + + if limits: + for curr_file in all_files: + matches_limits = True + for limit in limits: + if limit not in curr_file: + matches_limits = False + print(f"File {curr_file} does not match limit {limit}, skipping") + break + + if matches_limits: + result.append(curr_file) + + return result + + else: + return all_files + +############################################################################### +def compare_contents(case1, case2, file1, file2, contents1, contents2, unordered, verbose): +############################################################################### + print("###############################################################################") + print(f"COMPARING FILES {file1} AND {file2}") + + normalized_contents2 = contents2.replace(case2, case1) + + lines1 = contents1.splitlines() + lines2 = normalized_contents2.splitlines() + + assert len(lines1) == len(lines2), f"{file1} and {file2} are not even the same length!" + + files_match = True + for line1, line2 in zip(lines1, lines2): + tokens1 = line1.split() + tokens2 = line2.split() + + if unordered: + tokens1.sort() + tokens2.sort() + + if tokens1 != tokens2: + if files_match: + print(" did NOT match") + files_match = False + + if verbose: + for token1, token2 in zip(tokens1, tokens2): + if token1 != token2: + print(f" {token1} != {token2}") + else: + break + + if files_match: + print(" MATCHED") + + return files_match + +############################################################################### +def compare_file_lists(case1, case2, files1, files2, unordered, verbose): +############################################################################### + result = True + for file1, file2 in zip(files1, files2): + file1p = Path(file1) + file2p = Path(file2) + + assert file1p.name == file2p.name, f"File orders did not match, {file1p.name} != {file2p.name}" + + file1c = file1p.open().read() + file2c = file2p.open().read() + + result &= compare_contents(case1, case2, file1, file2, file1c, file2c, unordered, verbose) + + return result + +############################################################################### +def compare_flags(case1, case2, unordered, limits, verbose): +############################################################################### + result = True + + assert os.path.isdir(case1), f"{case1} is not an existing directory" + assert os.path.isdir(case2), f"{case2} is not an existing directory" + + builddir1 = run_cmd_no_fail("./xmlquery EXEROOT --value", from_dir=case1) + builddir2 = run_cmd_no_fail("./xmlquery EXEROOT --value", from_dir=case2) + + casename1 = run_cmd_no_fail("./xmlquery CASE --value", from_dir=case1) + casename2 = run_cmd_no_fail("./xmlquery CASE --value", from_dir=case2) + + builddir1_cmake = os.path.join(builddir1, "cmake-bld") + builddir2_cmake = os.path.join(builddir2, "cmake-bld") + + assert os.path.isdir(builddir1_cmake), \ + f"{builddir1_cmake} is not an existing directory, you need to run case.build in {case1}" + assert os.path.isdir(builddir2_cmake), \ + f"{builddir2_cmake} is not an existing directory, you need to run case.build in {case2}" + + flag_files1 = find_files(builddir1_cmake, "flags.make", limits) + flag_files2 = find_files(builddir2_cmake, "flags.make", limits) + + link_files1 = find_files(builddir1_cmake, "link.txt", limits) + link_files2 = find_files(builddir2_cmake, "link.txt", limits) + + print() + + result &= compare_file_lists(casename1, casename2, flag_files1, flag_files2, unordered, verbose) + + result &= compare_file_lists(casename1, casename2, link_files1, link_files2, unordered, verbose) + + if result: + print("\nALL FILES MATCHED") + else: + print("\nALL FILES DID NOT MATCH") + + return result + +############################################################################### +def _main_func(description): +############################################################################### + success = compare_flags(**vars(parse_command_line(sys.argv, description))) + + sys.exit(0 if success else 1) + +############################################################################### + +if (__name__ == "__main__"): + _main_func(__doc__) diff --git a/cime_config/machines/scripts/converter b/cime_config/machines/scripts/converter new file mode 100755 index 000000000000..8c67dd1fc494 --- /dev/null +++ b/cime_config/machines/scripts/converter @@ -0,0 +1,228 @@ +#! /usr/bin/env python3 + +""" +Convert config_compilers.xml to a heirarchy of cache files. Puts files +in pwd. +""" + +import argparse, sys, os, re +import xml.etree.ElementTree as ET + +############################################################################### +def parse_command_line(args, description): +############################################################################### + parser = argparse.ArgumentParser( + usage="""\n{0} +OR +{0} --help + +\033[1mEXAMPLES:\033[0m + \033[1;32m# Convert $path/file.xml \033[0m + > {0} $path/file.xml +""".format(os.path.basename(args[0])), + description=description, + formatter_class=argparse.ArgumentDefaultsHelpFormatter + ) + + parser.add_argument("filepath", help="The path to the file to convert") + + parser.add_argument("-m", "--machine", help="Limit conversion to certain machines") + + parser.add_argument("-c", "--compiler", help="Limit conversion to certain compilers") + + args = parser.parse_args(args[1:]) + + return args + +############################################################################### +def create_shell_cmd(cmd, count): +############################################################################### + return \ +f"execute_process(COMMAND {cmd} OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE{count} OUTPUT_STRIP_TRAILING_WHITESPACE)\n" + +############################################################################### +def _create_set_statement_impl(child_text, varname, append=False): +############################################################################### + r""" + Impl of create_test_statement + + >>> _create_set_statement_impl("haha", "FOO", append=False) + 'set(FOO "haha")\n' + >>> _create_set_statement_impl("haha", "FOO", append=True) + 'string(APPEND FOO " haha")\n' + >>> print(_create_set_statement_impl("$SHELL{$ENV{NETCDF_PATH}/bin/nf-config --flibs} -lblas -llapack", "FOO", append=True)) + execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) + string(APPEND FOO " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lblas -llapack") + + >>> print(_create_set_statement_impl("STUFF $SHELL{$ENV{NETCDF_PATH}/bin/nf-config --flibs} -lblas -llapack", "FOO", append=True)) + execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) + string(APPEND FOO " STUFF ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} -lblas -llapack") + + >>> print(_create_set_statement_impl("STUFF $SHELL{$ENV{NETCDF_PATH}/bin/nf-config --flibs}", "FOO", append=True)) + execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) + string(APPEND FOO " STUFF ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") + + >>> print(_create_set_statement_impl("$SHELL{echo hi}", "FOO", append=True)) + execute_process(COMMAND echo hi OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) + string(APPEND FOO " ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0}") + + >>> print(_create_set_statement_impl("STUFF $SHELL{$ENV{NETCDF_PATH}/bin/nf-config --flibs} $SHELL{echo hi} there", "FOO", append=True)) + execute_process(COMMAND $ENV{NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND echo hi OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE1 OUTPUT_STRIP_TRAILING_WHITESPACE) + string(APPEND FOO " STUFF ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE1} there") + + >>> print(_create_set_statement_impl("STUFF $SHELL{$NETCDF_PATH/bin/nf-config --flibs} $SHELL{echo hi} there", "FOO", append=True)) + execute_process(COMMAND ${NETCDF_PATH}/bin/nf-config --flibs OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0 OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND echo hi OUTPUT_VARIABLE SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE1 OUTPUT_STRIP_TRAILING_WHITESPACE) + string(APPEND FOO " STUFF ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE0} ${SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE1} there") + + >>> + """ + bad_deref_re = re.compile(r'[$](?![{]|ENV[{]|SHELL[{])([a-zA-Z0-9_]+)') + child_text = bad_deref_re.sub(r"${\1}", child_text) + + return_text = "" + shell_cmd_count = 0 + while "$SHELL" in child_text: + start_idx = child_text.index("$SHELL") + len("$SHELL") + 1 + assert child_text[start_idx-1] == "{", f"Bad SHELL in {child_text}" + brace_depth = 1 + curr_idx = start_idx + while brace_depth > 0: + if child_text[curr_idx] == "{": + brace_depth += 1 + elif child_text[curr_idx] == "}": + brace_depth -= 1 + + curr_idx += 1 + + cmd = child_text[start_idx:curr_idx-1] + child_text = child_text.replace(child_text[start_idx - (len("$SHELL")+1):curr_idx], f"${{SHELL_CMD_OUTPUT_BUILD_INTERNAL_IGNORE{shell_cmd_count}}}") + return_text += create_shell_cmd(cmd, shell_cmd_count) + shell_cmd_count += 1 + + return_text += '{}{} "{}{}")\n'.format("string(APPEND " if append else "set(", varname, " " if append else "", child_text) + return return_text + +############################################################################### +def create_set_statement(child, varname=None, append=False): +############################################################################### + child_text = "" if child.text is None else child.text.strip() + return _create_set_statement_impl(child_text, varname if varname else child.tag, append=append) + +############################################################################### +def create_if_statement(child, varname=None, append=False): +############################################################################### + assert child.attrib, "Cannot create if statement from child with no attribs" + statement = "if (" + needs_and = False + for k,v in child.attrib.items(): + if needs_and: + statement += " AND " + + if v == "TRUE": + statement += k + elif v == "FALSE": + statement += f"NOT {k}" + elif v.startswith("!"): + statement += f"NOT {k} STREQUAL {v.strip('!')}" + else: + statement += f"{k} STREQUAL {v}" + + needs_and = True + + statement += ")\n" + + statement += " " + create_set_statement(child, varname=varname, append=append) + statement += "endif()\n" + + return statement + +############################################################################### +def create_append_statement(subchild, childname): +############################################################################### + if not subchild.attrib: + return create_set_statement(subchild, varname=childname, append=True) + else: + return create_if_statement(subchild, varname=childname, append=True) + +############################################################################### +def make_file_based_on_child(filename, compiler_element): +############################################################################### + with open(filename, "w") as fd: + file_contents = "" + for child in compiler_element: + children = [c for c in child] + if not children: + if not child.attrib: + file_contents += create_set_statement(child) + else: + file_contents += create_if_statement(child) + else: + for subchild in children: + if subchild.tag == "base": + assert not subchild.attrib, "No attributes allowed on a base child" + file_contents += create_set_statement(subchild, varname=child.tag) + elif subchild.tag == "append": + file_contents += create_append_statement(subchild, child.tag) + else: + assert False, f"Unrecognized subchild {subchild.tag}" + + fd.write(file_contents) + +############################################################################### +def convert(filepath, machine, compiler): +############################################################################### + with open(filepath, "r") as fd: + tree = ET.parse(fd) + root = tree.getroot() + + for child in root: + assert child.tag == "compiler", f"Unexpected child.tag {child.tag}" + compiler = None + the_os = None + mach = None + if "COMPILER" in child.attrib: + compiler = child.attrib["COMPILER"] + if "OS" in child.attrib: + the_os = child.attrib["OS"] + if "MACH" in child.attrib: + mach = child.attrib["MACH"] + + for k in child.attrib.keys(): + assert k in ["COMPILER", "OS", "MACH"], f"Unexpected compiler attribute {k}" + + if compiler: + filename = compiler + if the_os: + filename += f"_{the_os}" + assert not mach, "Should not specify OS and MACH" + elif mach: + filename += f"_{mach}" + + filename += ".cmake" + elif the_os: + assert mach is None, "Do not support OS+MACH, the OS on any MACH should be known and fixed" + + filename = f"{the_os}.cmake" + elif mach: + filename = f"{mach}.cmake" + + else: + filename = "universal.cmake" + + make_file_based_on_child(filename, child) + + return True + +############################################################################### +def _main_func(description): +############################################################################### + success = convert(**vars(parse_command_line(sys.argv, description))) + + sys.exit(0 if success else 1) + +############################################################################### + +if (__name__ == "__main__"): + _main_func(__doc__) diff --git a/components/cmake/common_setup.cmake b/components/cmake/common_setup.cmake index 3c6d85b25ee9..2333397ff996 100644 --- a/components/cmake/common_setup.cmake +++ b/components/cmake/common_setup.cmake @@ -451,8 +451,6 @@ endif() # endif() # Add libraries and flags that we need on the link line when C++ code is included -# We need to do these additions after CONFIG_ARGS is set, because they can sometimes break configure for mct, etc., -# if they are added to LDFLAGS in CONFIG_ARGS. if (USE_CXX) if (CXX_LIBS) set(SLIBS "${SLIBS} ${CXX_LIBS}")