diff --git a/sycl/tools/sycl-trace/CMakeLists.txt b/sycl/tools/sycl-trace/CMakeLists.txt index e232b6bdeda74..b45ae195b2905 100644 --- a/sycl/tools/sycl-trace/CMakeLists.txt +++ b/sycl/tools/sycl-trace/CMakeLists.txt @@ -94,15 +94,48 @@ if(SYCL_BUILD_BACKEND_CUDA) target_compile_definitions(cuda_trace_collector PRIVATE USE_UR_CUDA) + # CUDAToolkit_CUPTI_INCLUDE_DIR is provided by FindCUDAToolkit since CMake + # 3.24, but we support versions back to 3.20. Find it if not found already. + if (NOT CUDAToolkit_CUPTI_INCLUDE_DIR) + find_path(CUDAToolkit_CUPTI_INCLUDE_DIR cupti.h PATHS + "${CUDAToolkit_ROOT_DIR}/extras/CUPTI/include" + ${CUDAToolkit_INCLUDE_DIRS} + PATH_SUFFIXES "../extras/CUPTI/include" + "../../../extras/CUPTI/include" + REQUIRED + NO_DEFAULT_PATH) + endif() + target_include_directories(cuda_trace_collector PRIVATE - ${CUDAToolkit_cupti_INCLUDE_DIR} + ${CUDAToolkit_CUPTI_INCLUDE_DIR} ) + # FindCUDATookit fails to find CUPTI in CUDA installations from runfile. + # See https://gitlab.kitware.com/cmake/cmake/-/issues/26770 + # Retry the search with extra paths if not found already. + if (NOT CUDA_cupti_LIBRARY) + get_filename_component(CUDAToolkit_LIBRARY_DIR ${CUDA_CUDART} DIRECTORY ABSOLUTE) + find_library(CUDA_cupti_LIBRARY + NAMES cupti + HINTS ${CUDAToolkit_ROOT} + ${CUDAToolkit_ROOT}/lib64 + ${CUDAToolkit_ROOT}/lib + ${CUDAToolkit_LIBRARY_DIR} + ${CUDAToolkit_LIBRARY_DIR}/.. + ${CUDAToolkit_LIBRARY_DIR}/../../.. + ${CUDAToolkit_LIBRARY_DIR}/../../../../.. + ENV CUDA_PATH + PATH_SUFFIXES lib64 lib/x64 lib + extras/CUPTI/lib64/ + extras/CUPTI/lib/ + REQUIRED + ) + endif() target_link_libraries(cuda_trace_collector PRIVATE cudadrv - ${CUDAToolkit_cupti_LIBRARY} + ${CUDA_cupti_LIBRARY} ) find_path(GEN_CUDA_META_H_DIR generated_cuda_meta.h PATHS diff --git a/unified-runtime/source/adapters/cuda/CMakeLists.txt b/unified-runtime/source/adapters/cuda/CMakeLists.txt index e7e2976548338..48305f1adfe0b 100644 --- a/unified-runtime/source/adapters/cuda/CMakeLists.txt +++ b/unified-runtime/source/adapters/cuda/CMakeLists.txt @@ -93,9 +93,22 @@ if (UR_ENABLE_TRACING AND UNIX) XPTI_ENABLE_INSTRUMENTATION XPTI_STATIC_LIBRARY ) + + # CUDAToolkit_CUPTI_INCLUDE_DIR is provided by FindCUDAToolkit since CMake + # 3.24, but we support versions back to 3.20. Find it if not found already. + if (NOT CUDAToolkit_CUPTI_INCLUDE_DIR) + find_path(CUDAToolkit_CUPTI_INCLUDE_DIR cupti.h PATHS + "${CUDAToolkit_ROOT_DIR}/extras/CUPTI/include" + ${CUDAToolkit_INCLUDE_DIRS} + PATH_SUFFIXES "../extras/CUPTI/include" + "../../../extras/CUPTI/include" + REQUIRED + NO_DEFAULT_PATH) + endif() + target_include_directories(${TARGET_NAME} PRIVATE ${XPTI_INCLUDES} - ${CUDAToolkit_cupti_INCLUDE_DIR} + ${CUDAToolkit_CUPTI_INCLUDE_DIR} ) target_sources(${TARGET_NAME} PRIVATE ${XPTI_PROXY_SRC}) endif()