IF (Tacho_ENABLE_INT_INT) SET(TACHO_USE_INT_INT ON) SET(TACHO_USE_INT_SIZE_T OFF) ELSE() SET(TACHO_USE_INT_INT OFF) SET(TACHO_USE_INT_SIZE_T ON) ENDIF() SET(TACHO_HAVE_MKL ${TPL_ENABLE_MKL}) SET(TACHO_HAVE_LAPACK ${TPL_ENABLE_LAPACK}) SET(TACHO_HAVE_BLAS ${TPL_ENABLE_BLAS}) SET(TACHO_HAVE_CUSPARSE ${TPL_ENABLE_CUSPARSE}) SET(TACHO_HAVE_METIS ${TPL_ENABLE_METIS}) SET(TACHO_HAVE_METIS_MT ${TPL_ENABLE_MTMETIS}) SET(TACHO_HAVE_SCOTCH ${TPL_ENABLE_Scotch}) SET(TACHO_HAVE_TRILINOS_SS ${Trilinos_ENABLE_TrilinosSS}) SET(TACHO_HAVE_SUITESPARSE ${TPL_ENABLE_Cholmod}) SET(TACHO_HAVE_TEUCHOS ${Trilinos_ENABLE_Teuchos}) SET(TACHO_HAVE_VTUNE ${TPL_ENABLE_VTune}) IF (Tacho_REMOVE_DEPRECATED_PARAMETERS) SET(TACHO_DEPRECATED_PARAMETERS OFF) ELSE() SET(TACHO_DEPRECATED_PARAMETERS ON) ENDIF() #----------------------------------------------------------------------------- TRIBITS_CONFIGURE_FILE(Tacho_config.h) TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/impl) #----------------------------------------------------------------------------- SET(TRILINOS_INCDIR ${${PROJECT_NAME}_INSTALL_INCLUDE_DIR}) #----------------------------------------------------------------------------- SET(HEADERS_PUBLIC "") SET(HEADERS_PRIVATE "") SET(SOURCES "") FILE(GLOB HEADERS_PUBLIC *.hpp impl/*.hpp) LIST( APPEND HEADERS_PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/Tacho_config.h ) APPEND_SET(SOURCES impl/Tacho_Util.cpp impl/Tacho_Blas_External.cpp impl/Tacho_Lapack_External.cpp impl/Tacho_GraphTools_Metis.cpp impl/Tacho_SymbolicTools.cpp ) SET(TACHO_ETI_FILE "Tacho_Driver") SET(TACHO_ETI_DEVICE_NAME "") SET(TACHO_ETI_DEVICE_TYPE "") SET(TACHO_ETI_WITH_TASK "") IF (Kokkos_ENABLE_SERIAL) LIST(APPEND TACHO_ETI_DEVICE_NAME "Serial") LIST(APPEND TACHO_ETI_DEVICE_TYPE "Kokkos::Device") LIST(APPEND TACHO_ETI_WITH_TASK "0") ENDIF() IF (Kokkos_ENABLE_OPENMP) LIST(APPEND TACHO_ETI_DEVICE_NAME "OpenMP") LIST(APPEND TACHO_ETI_DEVICE_TYPE "Kokkos::Device") LIST(APPEND TACHO_ETI_WITH_TASK "1") ENDIF() IF (Kokkos_ENABLE_CUDA) LIST(APPEND TACHO_ETI_DEVICE_NAME "CUDA") LIST(APPEND TACHO_ETI_DEVICE_TYPE "Kokkos::Device") LIST(APPEND TACHO_ETI_WITH_TASK "0") ENDIF() IF (Kokkos_ENABLE_HIP) LIST(APPEND TACHO_ETI_DEVICE_NAME "HIP") LIST(APPEND TACHO_ETI_DEVICE_TYPE "Kokkos::Device") LIST(APPEND TACHO_ETI_WITH_TASK "0") ENDIF() IF (Kokkos_ENABLE_SYCL) LIST(APPEND TACHO_ETI_DEVICE_NAME "SYCL") LIST(APPEND TACHO_ETI_DEVICE_TYPE "Kokkos::Device") LIST(APPEND TACHO_ETI_WITH_TASK "0") ENDIF() LIST(LENGTH TACHO_ETI_DEVICE_NAME ETI_DEVICE_COUNT) MATH(EXPR ETI_DEVICE_COUNT "${ETI_DEVICE_COUNT}-1") SET(TACHO_ETI_VALUE_NAME "") SET(TACHO_ETI_VALUE_TYPE "") LIST(APPEND TACHO_ETI_VALUE_NAME "double") LIST(APPEND TACHO_ETI_VALUE_TYPE "double") LIST(APPEND TACHO_ETI_VALUE_NAME "float") LIST(APPEND TACHO_ETI_VALUE_TYPE "float") LIST(APPEND TACHO_ETI_VALUE_NAME "complex_double") LIST(APPEND TACHO_ETI_VALUE_TYPE "Kokkos::complex") LIST(APPEND TACHO_ETI_VALUE_NAME "complex_float") LIST(APPEND TACHO_ETI_VALUE_TYPE "Kokkos::complex") LIST(LENGTH TACHO_ETI_VALUE_NAME ETI_VALUE_COUNT) MATH(EXPR ETI_VALUE_COUNT "${ETI_VALUE_COUNT}-1") FOREACH(I RANGE ${ETI_DEVICE_COUNT}) LIST(GET TACHO_ETI_DEVICE_NAME ${I} ETI_DEVICE_NAME) LIST(GET TACHO_ETI_DEVICE_TYPE ${I} ETI_DEVICE_TYPE) LIST(GET TACHO_ETI_WITH_TASK ${I} ETI_WITH_TASK) FOREACH(J RANGE ${ETI_VALUE_COUNT}) LIST(GET TACHO_ETI_VALUE_NAME ${J} ETI_VALUE_NAME) LIST(GET TACHO_ETI_VALUE_TYPE ${J} ETI_VALUE_TYPE) FOREACH(ETI_FILE IN LISTS TACHO_ETI_FILE) SET(ETI_NAME "${ETI_FILE}_ETI_${ETI_VALUE_NAME}_${ETI_DEVICE_NAME}") MESSAGE(STATUS "Generating ETI: ${ETI_NAME}.cpp") CONFIGURE_FILE(eti/${ETI_FILE}_ETI.in eti/${ETI_NAME}.cpp) APPEND_SET(SOURCES eti/${ETI_NAME}.cpp) ENDFOREACH() ENDFOREACH() ENDFOREACH() #----------------------------------------------------------------------------- TRIBITS_ADD_LIBRARY( tacho HEADERS ${HEADERS_PUBLIC} NOINSTALLHEADERS ${HEADERS_PRIVATE} SOURCES ${SOURCES} DEPLIBS )