From 8952b1107ce064ec62b19197522ed0608efb69dd Mon Sep 17 00:00:00 2001 From: Christoph Junghans <junghans@lanl.gov> Date: Fri, 11 May 2018 15:33:18 -0600 Subject: [PATCH] cmake: add user overwrite for USER-INTEL --- cmake/CMakeLists.txt | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index e4a8231684..0f91452123 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -56,6 +56,8 @@ option(BUILD_SHARED_LIBS "Build shared libs" OFF) if(BUILD_SHARED_LIBS) # for all pkg libs, mpi_stubs and linalg set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() +option(DEVELOPER_MODE "Enable developer mode" OFF) +mark_as_advanced(DEVELOPER_MODE) include(GNUInstallDirs) set(LAMMPS_LINK_LIBS) @@ -603,24 +605,29 @@ if(PKG_OPT) endif() if(PKG_USER-INTEL) - if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel") - message(FATAL_ERROR "USER-INTEL is only useful together with intel compiler") - endif() - if(CMAKE_CXX_COMPILER_VERSIONĂ‚ VERSION_LESS "2016") - message(FATAL_ERROR "USER-INTEL is needed at least 2016 intel compiler") - endif() - if(CMAKE_CXX_COMPILER_VERSIONĂ‚ MATCHES "^2017\.[34].*") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xCOMMON-AVX512") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHost") + if(NOT DEVELOPER_MODE) + if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel") + message(FATAL_ERROR "USER-INTEL is only useful together with intel compiler") + endif() + if(CMAKE_CXX_COMPILER_VERSIONĂ‚ VERSION_LESS "2016") + message(FATAL_ERROR "USER-INTEL is needed at least 2016 intel compiler") + endif() endif() - include(CheckCXXCompilerFlag) - foreach(_FLAG -qopenmp -qno-offload -fno-alias -ansi-alias -restrict -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG -O2 "-fp-model fast=2" -no-prec-div -qoverride-limits -qopt-zmm-usage=high) - check_cxx_compiler_flag("${__FLAG}" COMPILER_SUPPORTS${_FLAG}) - if(COMPILER_SUPPORTS${_FLAG}) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_FLAG}") + option(INJECT_INTEL_FLAG "Inject OMG fast flags for USER-INTEL" ON) + if(INJECT_INTEL_FLAG AND CMAKE_CXX_COMPILER_ID STREQUAL "Intel") + if(CMAKE_CXX_COMPILER_VERSIONĂ‚ MATCHES "^2017\.[34].*") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xCOMMON-AVX512") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xHost") endif() - endforeach() + include(CheckCXXCompilerFlag) + foreach(_FLAG -qopenmp -qno-offload -fno-alias -ansi-alias -restrict -DLMP_INTEL_USELRT -DLMP_USE_MKL_RNG -O2 "-fp-model fast=2" -no-prec-div -qoverride-limits -qopt-zmm-usage=high) + check_cxx_compiler_flag("${__FLAG}" COMPILER_SUPPORTS${_FLAG}) + if(COMPILER_SUPPORTS${_FLAG}) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_FLAG}") + endif() + endforeach() + endif() set(USER-INTEL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-INTEL) set(USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/intel_preprocess.h ${USER-INTEL_SOURCES_DIR}/intel_buffers.h -- GitLab