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