Unified check for sincos. First try at checking for power9

This commit is contained in:
Peter Doak 2019-11-07 15:48:24 -05:00
parent a0585156d8
commit 12a7658f55
3 changed files with 46 additions and 30 deletions

29
CMake/CheckSincos.cmake Normal file
View File

@ -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)

View File

@ -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 <math.h>
#include <mass.h>
@ -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 )

View File

@ -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})