From 5f31532beafda099541af995e7be33270edee445 Mon Sep 17 00:00:00 2001 From: Debolskiy Andrey <and.debol@gmail.com> Date: Sat, 11 Nov 2023 17:29:08 +0300 Subject: [PATCH] added avx/avx2 support for inm cluster --- cluster_configs/inm-cluster-avx.cmake | 59 +++++++++++++++++++ ...m-cluster.cmake => inm-cluster-avx2.cmake} | 2 +- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 cluster_configs/inm-cluster-avx.cmake rename cluster_configs/{inm-cluster.cmake => inm-cluster-avx2.cmake} (96%) diff --git a/cluster_configs/inm-cluster-avx.cmake b/cluster_configs/inm-cluster-avx.cmake new file mode 100644 index 0000000..c2e7942 --- /dev/null +++ b/cluster_configs/inm-cluster-avx.cmake @@ -0,0 +1,59 @@ +#get from loaded modules versions of compilers + + +#NETCDF support +if (USE_NETCDF) + set(CUSTOM_NETCDF true) + if ( ${compiler_lc} STREQUAL "intel" OR ${compiler_lc} STREQUAL "intel_oneapi") + set(NETCDF_PATH "/opt/ohpc/pub/libs/intel/impi/netcdf/4.9.0/") + set(NETCDF_INC "${NETCDF_PATH}include") + set(NETCDF_LIB "${NETCDF_PATH}lib") + set(HDF5_LIB "/opt/ohpc/pub/libs/intel/impi/hdf5/1.10.8/lib") + set(NetCDF_LINK_FLAGS "-L${NETCDF_LIB} -lnetcdf -L${HDF5_LIB} -lhdf5") + else () + messege(ERROR "NetCDF is not supported with GNU on INM cluster") + endif() +endif() + + +if ( compiler_lc STREQUAL "intel") + if (NO_MPI) + set(CMAKE_C_COMPILER icc CACHE STRING "C compiler" FORCE) # C compiler for serial build + set(CMAKE_CXX_COMPILER c++ CACHE STRING "CXX compiler" FORCE) # C++ compiler for serial build + set(CMAKE_Fortran_COMPILER ifort CACHE STRING "Fortran compiler" FORCE) # Fortran compiler for serial build + else() + set(CMAKE_C_COMPILER mpiicpc CACHE STRING "C compiler" FORCE) # C compiler for parallel build + set(CMAKE_CXX_COMPILER mpiicpc CACHE STRING "CXX compiler" FORCE) # C++ compiler for parallel build + set(CMAKE_Fortran_COMPILER mpiifort CACHE STRING "Fortran compiler" FORCE) # Fortran compiler for parallel build + endif() + set(comp_flags " -O3 -restrict -alias-const -parallel -funroll-loops -no-ansi-alias -mavx -xavx ") +endif() + +if ( compiler_lc STREQUAL "intel_oneapi") + if (NO_MPI) + set(CMAKE_C_COMPILER icx CACHE STRING "C compiler" FORCE) # C compiler for serial build + set(CMAKE_CXX_COMPILER icpx CACHE STRING "CXX compiler" FORCE) # C++ compiler for serial build + set(CMAKE_Fortran_COMPILER ifort CACHE STRING "Fortran compiler" FORCE) # Fortran compiler for serial build + else() + set(CMAKE_C_COMPILER mpiicc -cc=icx CACHE STRING "C compiler" FORCE) # C compiler for parallel build + set(CMAKE_CXX_COMPILER mpiicpc -cc=icpx CACHE STRING "CXX compiler" FORCE) # C++ compiler for parallel build + set(CMAKE_Fortran_COMPILER mpiifort -fc=ifx CACHE STRING "Fortran compiler" FORCE) # Fortran compiler for parallel build + endif() + set(comp_flags " -O3 -no-ansi-alias -funroll-loops -mavx -xavx -Wno-tautological-constant-compare ") +endif() + +if ( compiler_lc STREQUAL "gnu") + if (NO_MPI) + set(CMAKE_C_COMPILER gcc CACHE STRING "C compiler" FORCE) # C compiler for serial build + set(CMAKE_CXX_COMPILER g++ CACHE STRING "CXX compiler" FORCE) # C++ compiler for serial build + set(CMAKE_Fortran_COMPILER gfortran CACHE STRING "Fortran compiler" FORCE) # Fortran compiler for serial build + else() + set(CMAKE_C_COMPILER mpicc CACHE STRING "C compiler" FORCE) # C compiler for parallel build + set(CMAKE_CXX_COMPILER mpicxx CACHE STRING "CXX compiler" FORCE) # C++ compiler for parallel build + set(CMAKE_Fortran_COMPILER mpifort CACHE STRING "Fortran compiler" FORCE) # Fortran compiler for parallel build + endif() + set(comp_flags " -O3 -fno-strict-aliasing -funroll-loops -mavx -std=c++0x ") +endif() + +#specify stuff for run-script +set(cluster_queue "normal") \ No newline at end of file diff --git a/cluster_configs/inm-cluster.cmake b/cluster_configs/inm-cluster-avx2.cmake similarity index 96% rename from cluster_configs/inm-cluster.cmake rename to cluster_configs/inm-cluster-avx2.cmake index 16eb836..19c7c76 100644 --- a/cluster_configs/inm-cluster.cmake +++ b/cluster_configs/inm-cluster-avx2.cmake @@ -39,7 +39,7 @@ else() set(CMAKE_CXX_COMPILER mpiicpc -cc=icpx CACHE STRING "CXX compiler" FORCE) # C++ compiler for parallel build set(CMAKE_Fortran_COMPILER mpiifort -fc=ifx CACHE STRING "Fortran compiler" FORCE) # Fortran compiler for parallel build endif() - set(comp_flags " -O3 -no-ansi-alias -funroll-loops -Wno-tautological-constant-compare ") + set(comp_flags " -O3 -no-ansi-alias -funroll-loops -xcore-avx2 -Wno-tautological-constant-compare ") endif() if ( compiler_lc STREQUAL "gnu") -- GitLab