Skip to content

Commit 38cecda

Browse files
committed
Fix CUDA tracing when UR is built standalone
Previously, CUDA tracing only worked when the UR sources were built as part of the CUDA PI plugin. FindCUDACupti.cmake is copied verbatim from intel/llvm.
1 parent 4d7d3ae commit 38cecda

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

cmake/FindCUDACupti.cmake

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Copyright (C) 2024 Intel Corporation
2+
# Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM Exceptions.
3+
# See LICENSE.TXT
4+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5+
6+
# This is lifted from intel-llvm's FindCUDACupti implementation
7+
# https://github.com/intel/llvm/blob/0cd04144d9ca83371c212e8e4709a59c968291b9/sycl/cmake/modules/FindCUDACupti.cmake
8+
9+
macro(find_cuda_cupti_library)
10+
find_library(CUDA_cupti_LIBRARY
11+
NAMES cupti
12+
HINTS ${CUDA_TOOLKIT_ROOT_DIR}
13+
ENV CUDA_PATH
14+
PATH_SUFFIXES nvidia/current lib64 lib/x64 lib
15+
../extras/CUPTI/lib64/
16+
../extras/CUPTI/lib/
17+
)
18+
endmacro()
19+
20+
macro(find_cuda_cupti_include_dir)
21+
find_path(CUDA_CUPTI_INCLUDE_DIR cupti.h PATHS
22+
"${CUDA_TOOLKIT_ROOT_DIR}/extras/CUPTI/include"
23+
"${CUDA_INCLUDE_DIRS}/../extras/CUPTI/include"
24+
"${CUDA_INCLUDE_DIRS}"
25+
NO_DEFAULT_PATH)
26+
endmacro()

source/adapters/cuda/CMakeLists.txt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,46 @@ else()
7676
message(WARNING "CUDA adapter USM pools are disabled, set UMF_ENABLE_POOL_TRACKING to enable them")
7777
endif()
7878

79+
if (UR_ENABLE_TRACING)
80+
include(FindCUDACupti)
81+
# The following two ifs can be removed when FindCUDA -> FindCUDAToolkit.
82+
# CUDA_CUPTI_INCLUDE_DIR -> CUDAToolkit_CUPTI_INCLUDE_DIR
83+
if(NOT CUDA_CUPTI_INCLUDE_DIR)
84+
find_cuda_cupti_include_dir()
85+
endif()
86+
# CUDA_cupti_LIBRARY -> CUDAToolkit_cupti_LIBRARY
87+
if(NOT CUDA_cupti_LIBRARY)
88+
find_cuda_cupti_library()
89+
endif()
90+
91+
if (NOT XPTI_INCLUDES)
92+
get_target_property(XPTI_INCLUDES xpti INCLUDE_DIRECTORIES)
93+
endif()
94+
if (NOT XPTI_PROXY_SRC)
95+
get_target_property(XPTI_SRC_DIR xpti SOURCE_DIR)
96+
set(XPTI_PROXY_SRC "${XPTI_SRC_DIR}/xpti_proxy.cpp")
97+
endif()
98+
target_compile_definitions(${TARGET_NAME} PRIVATE
99+
XPTI_ENABLE_INSTRUMENTATION
100+
)
101+
target_include_directories(${TARGET_NAME} PUBLIC
102+
${XPTI_INCLUDES}
103+
${CUDA_CUPTI_INCLUDE_DIR}
104+
)
105+
target_sources(${TARGET_NAME} PRIVATE ${XPTI_PROXY_SRC})
106+
endif()
107+
79108
if (CUDA_cupti_LIBRARY)
80109
target_compile_definitions("ur_adapter_cuda" PRIVATE CUPTI_LIB_PATH="${CUDA_cupti_LIBRARY}")
110+
list(APPEND EXTRA_LIBS ${CUDA_cupti_LIBRARY})
81111
endif()
82112

83113
target_link_libraries(${TARGET_NAME} PRIVATE
84114
${PROJECT_NAME}::headers
85115
${PROJECT_NAME}::common
86116
Threads::Threads
87117
cudadrv
118+
${EXTRA_LIBS}
88119
)
89120

90121
target_include_directories(${TARGET_NAME} PRIVATE

0 commit comments

Comments
 (0)