diff --git a/CMake/IntelCompilers.cmake b/CMake/IntelCompilers.cmake index 6ec1a159d..b8aa1d88a 100755 --- a/CMake/IntelCompilers.cmake +++ b/CMake/IntelCompilers.cmake @@ -9,6 +9,7 @@ add_definitions(-DADD_ -DINLINE_ALL=inline) set(ENABLE_OPENMP 1) set(INTEL_OPTS "-g -restrict -unroll -O3 -ip -openmp") +#MESSAGE(STATUS "CPU_IDENTITY ${CPU_IDENTITY}") #grep icpc version and determine what options to be used exec_program(icpc @@ -30,13 +31,6 @@ ELSE(ICPC_VERSION LESS 11) ENDIF(ICPC_MINOR_VERSION LESS 1) ENDIF(ICPC_VERSION LESS 11) -#check if -xHost is accepted -SET(CMAKE_TRY_ICC_FLAGS "-xHost") -CHECK_C_COMPILER_FLAG(${CMAKE_TRY_ICC_FLAGS} INTEL_CC_FLAGS) -IF(INTEL_CC_FLAGS) - SET(INTEL_OPTS "${INTEL_OPTS} ${CMAKE_TRY_ICC_FLAGS}") -ENDIF(INTEL_CC_FLAGS) - #check if -ftz is accepted SET(CMAKE_TRY_ICC_FLAGS "-ftz") CHECK_C_COMPILER_FLAG(${CMAKE_TRY_ICC_FLAGS} INTEL_CC_FLAGS) @@ -50,79 +44,116 @@ ELSE(ICC_DEPRECATED_OPTS) set(INTEL_OPTS "${INTEL_OPTS} -opt-prefetch") ENDIF(ICC_DEPRECATED_OPTS) -#exec_program(grep -# ARGS flags /proc/cpuinfo -# OUTPUT_VARIABLE CPU_FLAGS -# RETURN_VALUE CPUINFO -# ) -# -#SET(HAVE_SSE4_2 0) -#SET(HAVE_SSE4_1 0) -#SET(HAVE_SSSE3 0) -#SET(HAVE_SSE3 0) -#SET(HAVE_SSE2 0) -#SET(HAVE_SSE 0) -# -#if(CPU_FLAGS MATCHES "sse4_2") -# IF(ICC_DEPRECATED_OPTS) -# MESSAGE(WARNING "SSE4.2 needs version 11.1 and higher.") -# ELSE(ICC_DEPRECATED_OPTS) -# SET(HAVE_SSE4_2 1) -# IF(NOT SSE_OPT_SET) -# SET(SSE_OPT_SET TRUE) -# SET(INTEL_OPTS "${INTEL_OPTS} -xSSE4.2") -# ENDIF(NOT SSE_OPT_SET) -# ENDIF(ICC_DEPRECATED_OPTS) -#endif(CPU_FLAGS MATCHES "sse4_2") -# -#if(CPU_FLAGS MATCHES "sse4_1") -# SET(HAVE_SSE4_1 1) -# IF(NOT SSE_OPT_SET) -# SET(SSE_OPT_SET TRUE) -# IF(ICC_DEPRECATED_OPTS) -# SET(INTEL_OPTS "${INTEL_OPTS} -xS") -# ELSE(ICC_DEPRECATED_OPTS) -# SET(INTEL_OPTS "${INTEL_OPTS} -xSSE4.1") -# ENDIF(ICC_DEPRECATED_OPTS) -# ENDIF(NOT SSE_OPT_SET) -#endif(CPU_FLAGS MATCHES "sse4_1") -# -#if(CPU_FLAGS MATCHES "ssse3") -# SET(HAVE_SSSE3 1) -# IF(NOT SSE_OPT_SET) -# SET(SSE_OPT_SET TRUE) -# IF(ICC_DEPRECATED_OPTS) -# SET(INTEL_OPTS "${INTEL_OPTS} -xT") -# ELSE(ICC_DEPRECATED_OPTS) -# SET(INTEL_OPTS "${INTEL_OPTS} -xSSSE3") -# ENDIF(ICC_DEPRECATED_OPTS) -# ENDIF(NOT SSE_OPT_SET) -#endif(CPU_FLAGS MATCHES "ssse3") -# -#if(CPU_FLAGS MATCHES "sse3") -# SET(HAVE_SSE3 1) -# IF(NOT SSE_OPT_SET) -# SET(SSE_OPT_SET TRUE) -# IF(ICC_DEPRECATED_OPTS) -# SET(INTEL_OPTS "${INTEL_OPTS} -xP") -# ELSE(ICC_DEPRECATED_OPTS) -# SET(INTEL_OPTS "${INTEL_OPTS} -xSSE3") -# ENDIF(ICC_DEPRECATED_OPTS) -# ENDIF(NOT SSE_OPT_SET) -#endif(CPU_FLAGS MATCHES "sse3") -# -#if(CPU_FLAGS MATCHES "sse2") -# SET(HAVE_SSE2 1) -# IF(NOT SSE_OPT_SET) -# SET(SSE_OPT_SET TRUE) -# IF(ICC_DEPRECATED_OPTS) -# SET(INTEL_OPTS "${INTEL_OPTS} -xN") -# ELSE(ICC_DEPRECATED_OPTS) -# SET(INTEL_OPTS "${INTEL_OPTS} -xSSE2") -# ENDIF(ICC_DEPRECATED_OPTS) -# ENDIF(NOT SSE_OPT_SET) -#endif(CPU_FLAGS MATCHES "sse2") +exec_program(grep + ARGS flags /proc/cpuinfo + OUTPUT_VARIABLE CPU_FLAGS + RETURN_VALUE CPUINFO + ) +# not all the flags are used by the code +SET(HAVE_AVX2 0) +SET(HAVE_AVX 0) +SET(HAVE_SSE42 0) +SET(HAVE_SSE41 0) +SET(HAVE_SSSE3 0) +SET(HAVE_SSE3 0) +SET(HAVE_SSE2 0) +SET(HAVE_SSE 0) + +#check if -xHost is accepted +SET(CMAKE_TRY_ICC_FLAGS "-xHost") +CHECK_C_COMPILER_FLAG(${CMAKE_TRY_ICC_FLAGS} INTEL_CC_FLAGS) +IF(INTEL_CC_FLAGS) + SET(INTEL_OPTS "${INTEL_OPTS} ${CMAKE_TRY_ICC_FLAGS}") + SET(SSE_OPT_SET TRUE) +ELSE(INTEL_CC_FLAGS) + SET(SSE_OPT_SET FALSE) +ENDIF(INTEL_CC_FLAGS) + +if(CPU_FLAGS MATCHES "avx2") + SET(HAVE_AVX2 1) + IF(NOT SSE_OPT_SET) + IF(ICC_DEPRECATED_OPTS) + MESSAGE(WARNING "AVX2 needs version 14.0 and higher.") + ELSE(ICC_DEPRECATED_OPTS) + SET(SSE_OPT_SET TRUE) + SET(INTEL_OPTS "${INTEL_OPTS} -xCORE-AVX2") + ENDIF(ICC_DEPRECATED_OPTS) + ENDIF(NOT SSE_OPT_SET) +endif(CPU_FLAGS MATCHES "avx2") + +if(CPU_FLAGS MATCHES "avx") + SET(HAVE_AVX 1) + IF(NOT SSE_OPT_SET) + IF(ICC_DEPRECATED_OPTS) + MESSAGE(WARNING "AVX needs version 11.1 and higher.") + ELSE(ICC_DEPRECATED_OPTS) + SET(SSE_OPT_SET TRUE) + SET(INTEL_OPTS "${INTEL_OPTS} -xAVX") + ENDIF(ICC_DEPRECATED_OPTS) + ENDIF(NOT SSE_OPT_SET) +endif(CPU_FLAGS MATCHES "avx") + +if(CPU_FLAGS MATCHES "sse4_2") + SET(HAVE_SSE42 1) + IF(NOT SSE_OPT_SET) + IF(ICC_DEPRECATED_OPTS) + MESSAGE(WARNING "SSE4.2 needs version 11.1 and higher.") + ELSE(ICC_DEPRECATED_OPTS) + SET(SSE_OPT_SET TRUE) + SET(INTEL_OPTS "${INTEL_OPTS} -xSSE4.2") + ENDIF(ICC_DEPRECATED_OPTS) + ENDIF(NOT SSE_OPT_SET) +endif(CPU_FLAGS MATCHES "sse4_2") + +if(CPU_FLAGS MATCHES "sse4_1") + SET(HAVE_SSE41 1) + IF(NOT SSE_OPT_SET) + SET(SSE_OPT_SET TRUE) + IF(ICC_DEPRECATED_OPTS) + SET(INTEL_OPTS "${INTEL_OPTS} -xS") + ELSE(ICC_DEPRECATED_OPTS) + SET(INTEL_OPTS "${INTEL_OPTS} -xSSE4.1") + ENDIF(ICC_DEPRECATED_OPTS) + ENDIF(NOT SSE_OPT_SET) +endif(CPU_FLAGS MATCHES "sse4_1") + +if(CPU_FLAGS MATCHES "ssse3") + SET(HAVE_SSSE3 1) + IF(NOT SSE_OPT_SET) + SET(SSE_OPT_SET TRUE) + IF(ICC_DEPRECATED_OPTS) + SET(INTEL_OPTS "${INTEL_OPTS} -xT") + ELSE(ICC_DEPRECATED_OPTS) + SET(INTEL_OPTS "${INTEL_OPTS} -xSSSE3") + ENDIF(ICC_DEPRECATED_OPTS) + ENDIF(NOT SSE_OPT_SET) +endif(CPU_FLAGS MATCHES "ssse3") + +if(CPU_FLAGS MATCHES "sse3") + SET(HAVE_SSE3 1) + IF(NOT SSE_OPT_SET) + SET(SSE_OPT_SET TRUE) + IF(ICC_DEPRECATED_OPTS) + SET(INTEL_OPTS "${INTEL_OPTS} -xP") + ELSE(ICC_DEPRECATED_OPTS) + SET(INTEL_OPTS "${INTEL_OPTS} -xSSE3") + ENDIF(ICC_DEPRECATED_OPTS) + ENDIF(NOT SSE_OPT_SET) +endif(CPU_FLAGS MATCHES "sse3") + +if(CPU_FLAGS MATCHES "sse2") + SET(HAVE_SSE2 1) + SET(HAVE_SSE 1) + IF(NOT SSE_OPT_SET) + SET(SSE_OPT_SET TRUE) + IF(ICC_DEPRECATED_OPTS) + SET(INTEL_OPTS "${INTEL_OPTS} -xN") + ELSE(ICC_DEPRECATED_OPTS) + SET(INTEL_OPTS "${INTEL_OPTS} -xSSE2") + ENDIF(ICC_DEPRECATED_OPTS) + ENDIF(NOT SSE_OPT_SET) +endif(CPU_FLAGS MATCHES "sse2") set(CMAKE_CXX_FLAGS "${INTEL_OPTS} $ENV{CXX_FLAGS} -Wno-deprecated") set(CMAKE_C_FLAGS "${INTEL_OPTS} $ENV{CC_FLAGS} -std=c99 -Wno-deprecated") diff --git a/CMakeLists.txt b/CMakeLists.txt index 91503129b..16a48d29f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -588,6 +588,9 @@ ENDIF(HDF5_FOUND) #make sure we can find boost if it's not in /usr set(Boost_NO_BOOST_CMAKE on) +IF($ENV{BOOST_HOME} MATCHES ".") + set(BOOST_ROOT $ENV{BOOST_HOME}) +ENDIF() find_package(Boost REQUIRED) IF(Boost_FOUND) SET(HAVE_LIBBOOST 1) diff --git a/src/QMCHamiltonians/EnergyDensityEstimator.cpp b/src/QMCHamiltonians/EnergyDensityEstimator.cpp index 7024bf958..ee6bf64da 100644 --- a/src/QMCHamiltonians/EnergyDensityEstimator.cpp +++ b/src/QMCHamiltonians/EnergyDensityEstimator.cpp @@ -413,7 +413,7 @@ void EnergyDensityEstimator::write_nonzero_domains(const ParticleSet& P) } if(nonzero) { - fprintf(stdout," %d %e %e %e %e %e %e\n",i,P.Collectables[n], + fprintf(stdout," %d %e %e %e\n",i,P.Collectables[n], P.Collectables[n+1], P.Collectables[n+2]); }