diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index 49a97225751..733183ef50b 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -1638,7 +1638,38 @@ if(USE_KINETO) message(STATUS " KINETO_LIBRARY_TYPE = ${KINETO_LIBRARY_TYPE}") if(NOT LIBKINETO_NOCUPTI) - if(TARGET CUDA::cupti) + set(CUDA_SOURCE_DIR "${CUDA_TOOLKIT_ROOT_DIR}" CACHE STRING "") + message(STATUS " CUDA_SOURCE_DIR = ${CUDA_SOURCE_DIR}") + message(STATUS " CUDA_INCLUDE_DIRS = ${CUDA_INCLUDE_DIRS}") + + if(NOT MSVC) + if(USE_CUPTI_SO) + set(CUPTI_LIB_NAME "libcupti.so") + else() + set(CUPTI_LIB_NAME "libcupti_static.a") + endif() + else() + set(CUPTI_LIB_NAME "cupti.lib") + endif() + + find_library(CUPTI_LIBRARY_PATH ${CUPTI_LIB_NAME} PATHS + ${CUDA_SOURCE_DIR} + ${CUDA_SOURCE_DIR}/extras/CUPTI/lib64 + ${CUDA_SOURCE_DIR}/lib + ${CUDA_SOURCE_DIR}/lib64 + NO_DEFAULT_PATH) + + find_path(CUPTI_INCLUDE_DIR cupti.h PATHS + ${CUDA_SOURCE_DIR}/extras/CUPTI/include + ${CUDA_INCLUDE_DIRS} + ${CUDA_SOURCE_DIR} + ${CUDA_SOURCE_DIR}/include + NO_DEFAULT_PATH) + + if(CUPTI_LIBRARY_PATH AND CUPTI_INCLUDE_DIR) + message(STATUS " CUPTI_INCLUDE_DIR = ${CUPTI_INCLUDE_DIR}") + set(CUDA_cupti_LIBRARY ${CUPTI_LIBRARY_PATH}) + message(STATUS " CUDA_cupti_LIBRARY = ${CUDA_cupti_LIBRARY}") message(STATUS "Found CUPTI") set(LIBKINETO_NOCUPTI OFF CACHE STRING "" FORCE) @@ -1651,7 +1682,7 @@ if(USE_KINETO) if(NOT APPLE) set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} "dl" "pthread") endif() - set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} $) + set(CMAKE_REQUIRED_LINK_OPTIONS "-Wl,--whole-archive,${CUPTI_LIBRARY_PATH},--no-whole-archive") check_cxx_source_runs("#include int main() { try {