Skip to content

Commit ab94782

Browse files
authored
Merge pull request #1693 from callumfare/callum/fix_cuda_tracing
Fix CUDA tracing when UR is built standalone
2 parents 937f419 + 38cecda commit ab94782

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)