From 12a7658f559220c17f44489a0d780875aa5e2be6 Mon Sep 17 00:00:00 2001 From: Peter Doak Date: Thu, 7 Nov 2019 15:48:24 -0500 Subject: [PATCH] Unified check for sincos. First try at checking for power9 --- CMake/CheckSincos.cmake | 29 +++++++++++++++++++++++++++++ CMake/FindIBMMass.cmake | 11 +++++++---- CMakeLists.txt | 36 ++++++++++-------------------------- 3 files changed, 46 insertions(+), 30 deletions(-) create mode 100644 CMake/CheckSincos.cmake diff --git a/CMake/CheckSincos.cmake b/CMake/CheckSincos.cmake new file mode 100644 index 000000000..aae502ede --- /dev/null +++ b/CMake/CheckSincos.cmake @@ -0,0 +1,29 @@ +INCLUDE(${CMAKE_ROOT}/Modules/CheckCXXSourceCompiles.cmake) + +SET(SINCOS_INCLUDE math.h) + +SET(ENABLE_MASS FALSE CACHE BOOL "ENABLE MASS math libraries for Power architecture") +# This needs to go before HAVE_SINCOS +IF(ENABLE_MASS) + INCLUDE(CMake/FindIBMMass.cmake) + IF(HAVE_MASS) + SET(CMAKE_REQUIRED_INCLUDES ${MASS_INCLUDE_DIRECTORIES} ${CMAKE_REQUIRED_INCLUDES}) + SET(CMAKE_REQUIRED_LINK_OPTIONS ${MASS_LINKER_FLAGS}) + SET(CMAKE_REQUIRED_LIBRARIES ${MASS_LIBRARIES}) + ENDIF(HAVE_MASS) +ENDIF(ENABLE_MASS) + +MESSAGE("CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}") +MESSAGE("CMAKE_REQUIRED_LINK_OPTIONS: ${CMAKE_REQUIRED_LINK_OPTIONS}") +MESSAGE("CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}") + +SET( SINCOS_TEST_SRC + "#include \"${SINCOS_INCLUDE}\" +int main(void) { +double input = 1.1; +double outsin, outcos;; +sincos(input,&outsin, &outcos); +} +") + +CHECK_CXX_SOURCE_COMPILES("${SINCOS_TEST_SRC}" HAVE_SINCOS) diff --git a/CMake/FindIBMMass.cmake b/CMake/FindIBMMass.cmake index 57527a37e..8c73b5008 100644 --- a/CMake/FindIBMMass.cmake +++ b/CMake/FindIBMMass.cmake @@ -23,10 +23,12 @@ if (MASS_LINK_DIRECTORIES-NOTFOUND) "not found in MASS_ROOT/(${SUFFIXES})") endif (MASS_LINK_DIRECTORIES-NOTFOUND) message("MASS_LINK_DIRECTORIES: ${MASS_LINK_DIRECTORIES}") -set(MASS_LINKER_FLAGS "-L${MASS_LINK_DIRECTORIES} -Wl,-rpath,${MASS_LINK_DIRECTORIES}") -set(MASS_LIBRARIES "-lmassp9 -lmass_simdp9 -lmassvp9") - -# Check for mkl.h +set(MASS_LINKER_FLAGS -L${MASS_LINK_DIRECTORIES} -Wl,-rpath,${MASS_LINK_DIRECTORIES}) +if (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL ppc64le) + set(MASS_LIBRARIES "-lmassp9 -lmass_simdp9 -lmassvp9") +else (CMAKE_HOST_SYSTEM_PROCESSOR ppc64le) + set(MASS_LIBRARIES "-lmass -lmass_simd -lmassv") +endif () FILE( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src_mass.cxx" "#include #include @@ -63,6 +65,7 @@ IF ( HAVE_MASS ) include_directories( ${MASS_INCLUDE_DIRECTORIES} ) set( HAVE_VECTOR_MATH 1 ) set( HAVE_MASSV 1 ) + set( SINCOS_INCLUDE mass.h ) MESSAGE(STATUS "MASS found: HAVE_MASS=${HAVE_MASS}, HAVE_MASS_VML=${HAVE_MASS}") ELSE( HAVE_MASS ) SET( MASS_FOUND 0 ) diff --git a/CMakeLists.txt b/CMakeLists.txt index 77abeac29..521fe0aa3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,14 @@ SET(QMCPACK_VERSION_MINOR 8) SET(QMCPACK_VERSION_PATCH 9) SET(QMCPACK_VERSION "${QMCPACK_VERSION_MAJOR}.${QMCPACK_VERSION_MINOR}.${QMCPACK_VERSION_PATCH}") +###################################################### +# Directory where customize cmake files reside +###################################################### +SET (PROJECT_CMAKE ${qmcpack_SOURCE_DIR}/CMake) + +SET(QMCPACK_UNIT_TEST_DIR ${qmcpack_BINARY_DIR}/tests/bin) + + IF (COMPILING_ON_BGQ) # YL: Put this after PROJECT(qmcpack) because COMPILING_ON_BGQ is defined # in BGQ toolchain file which is loaded by PROJECT(). @@ -201,27 +209,9 @@ INCLUDE(${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckCXXSymbolExists.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckTypeSize.cmake) -INCLUDE(${CMAKE_ROOT}/Modules/CheckCXXSourceCompiles.cmake) -SET(ENABLE_MASS FALSE CACHE BOOL "ENABLE MASS math libraries for Power architecture") -# This needs to go before HAVE_SINCOS -IF(ENABLE_MASS) - INCLUDE(CMake/FindIBMMass.cmake) - IF(HAVE_MASS) - SET(CMAKE_REQUIRED_INCLUDES "${MASS_INCLUDE_DIRECTORIES} ${CMAKE_REQUIRED_INCLUDES}") - SET(CMAKE_REQUIRED_LINK_OPTIONS "${MASS_LINKER_FLAGS}") - SET(CMAKE_REQUIRED_LIBRARIES "${MASS_LIBRARIES}") - ENDIF(HAVE_MASS) -ENDIF(ENABLE_MASS) +INCLUDE(${PROJECT_CMAKE}/CheckSincos.cmake) -MESSAGE("CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}") - -IF(HAVE_MASS) - # CMake/FindMASS checks for sincos as well - SET(HAVE_SINCOS 1) -ELSE(HAVE_MASS) - CHECK_FUNCTION_EXISTS(sincos HAVE_SINCOS) -ENDIF() CHECK_FUNCTION_EXISTS(posix_memalign HAVE_POSIX_MEMALIGN) CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H) @@ -284,13 +274,6 @@ SET(HAVE_LIBBLITZ 0) SET(HAVE_LIBGSL 0) SET(MAC_VECLIB 0) -###################################################### -# Directory where customize cmake files reside -###################################################### -SET (PROJECT_CMAKE ${qmcpack_SOURCE_DIR}/CMake) - -SET(QMCPACK_UNIT_TEST_DIR ${qmcpack_BINARY_DIR}/tests/bin) - ###################################################### # Git information (see src/CMakeLists.txt for the # command to get repository information) @@ -575,6 +558,7 @@ INCLUDE(${CMAKE_ROOT}/Modules/FindThreads.cmake) SET(QMC_UTIL_LIBS ${LAPACK_LIBRARY} ${BLAS_LIBRARY}) +# This needs a better place to live. as does all the IF( HAVE_MKL ) stuff IF(HAVE_MASS) SET(CMAKE_CXX_FLAGS ${MASS_FLAGS} ${CMAKE_CXX_FLAGS}) SET(CMAKE_C_FLAGS ${MASS_FLAGS} ${CMAKE_C_FLAGS})