1 2# Set the std 3SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -c99") 4 5# Enable OpenMP 6# If just -mp is specified, OMP_NUM_THREADS must be set in order to run in parallel 7# Specifying 'allcores' will run on all cores if OMP_NUM_THREADS is not set (which seems 8# to be the default for other OpenMP implementations) 9IF(QMC_OMP) 10 SET(ENABLE_OPENMP 1) 11 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mp=allcores") 12 IF(ENABLE_OFFLOAD AND NOT CMAKE_SYSTEM_NAME STREQUAL "CrayLinuxEnvironment") 13 MESSAGE(WARNING "QMCPACK OpenMP offload is not ready for NVIDIA HPC compiler.") 14 IF(NOT DEFINED OFFLOAD_ARCH) 15 MESSAGE(FATAL_ERROR "NVIDIA HPC compiler requires -gpu=ccXX option set based on the target GPU architecture! " 16 "Please add -DOFFLOAD_ARCH=ccXX to cmake. For example, cc70 is for Volta.") 17 ENDIF() 18 SET(OPENMP_OFFLOAD_COMPILE_OPTIONS "-mp=gpu -gpu=${OFFLOAD_ARCH}") 19 ELSE() 20 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mp=allcores") 21 ENDIF() 22ENDIF(QMC_OMP) 23 24ADD_DEFINITIONS( -Drestrict=__restrict__ ) 25 26SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ") 27SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__forceinline=inline") 28 29 30# Set extra optimization specific flags 31SET( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fast" ) 32SET( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fast" ) 33SET( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -fast" ) 34SET( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -fast" ) 35 36 37# Setting this to 'OFF' adds the -A flag, which enforces strict standard compliance 38# and causes the compilation to fail with some GNU header files 39SET(CMAKE_CXX_EXTENSIONS ON) 40 41 42# Add static flags if necessary 43IF(QMC_BUILD_STATIC) 44 SET(CMAKE_CXX_LINK_FLAGS " -Bstatic") 45ENDIF(QMC_BUILD_STATIC) 46