Skip to content

Commit c9bf12c

Browse files
committed
Use CUDAToolkit
Signed-off-by: cyy <[email protected]>
1 parent 04c9e86 commit c9bf12c

File tree

2 files changed

+42
-141
lines changed

2 files changed

+42
-141
lines changed

libkineto/CMakeLists.txt

Lines changed: 26 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44
# This source code is licensed under the BSD-style license found in the
55
# LICENSE file in the root directory of this source tree.
66

7-
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
8-
9-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
7+
cmake_minimum_required(VERSION 3.27 FATAL_ERROR)
8+
project(kineto VERSION 0.1 LANGUAGES CXX C)
109

1110
#install libraries into correct locations on all platforms
1211
include(GNUInstallDirs)
@@ -23,8 +22,6 @@ function(get_filelist name outputvar)
2322
set(${outputvar} ${_tempvar} PARENT_SCOPE)
2423
endfunction()
2524

26-
project(kineto VERSION 0.1 LANGUAGES CXX C)
27-
2825
set(KINETO_LIBRARY_TYPE "default" CACHE STRING
2926
"Type of library (default, static or shared) to build")
3027
set_property(CACHE KINETO_LIBRARY_TYPE PROPERTY STRINGS default shared)
@@ -42,8 +39,8 @@ if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
4239
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
4340
endif()
4441

45-
if (NOT CUDA_SOURCE_DIR)
46-
set(CUDA_SOURCE_DIR "$ENV{CUDA_SOURCE_DIR}")
42+
if (DEFINED CUDA_SOURCE_DIR AND NOT DEFINED CUDAToolkit_ROOT)
43+
set(CUDAToolkit_ROOT "${CUDA_SOURCE_DIR}")
4744
message(STATUS " CUDA_SOURCE_DIR = ${CUDA_SOURCE_DIR}")
4845
endif()
4946

@@ -52,81 +49,20 @@ if (NOT ROCM_SOURCE_DIR)
5249
message(STATUS " ROCM_SOURCE_DIR = ${ROCM_SOURCE_DIR}")
5350
endif()
5451

55-
if (KINETO_BUILD_TESTS)
56-
enable_testing()
57-
if (NOT CUDA_SOURCE_DIR)
58-
set(CUDA_SOURCE_DIR "$ENV{CUDA_HOME}")
59-
message(STATUS " CUDA_SOURCE_DIR = ${CUDA_SOURCE_DIR}")
60-
endif()
61-
62-
if (NOT CUPTI_INCLUDE_DIR)
63-
find_path(CUPTI_INCLUDE_DIR cupti.h PATHS
64-
${CUDA_SOURCE_DIR}/extras/CUPTI/include
65-
${CUDA_INCLUDE_DIRS}
66-
${CUDA_SOURCE_DIR}
67-
${CUDA_SOURCE_DIR}/include
68-
NO_DEFAULT_PATH)
69-
endif()
70-
71-
if (NOT CUDA_cupti_LIBRARY)
72-
if(NOT MSVC)
73-
set(CUPTI_LIB_NAME "libcupti.so")
74-
else()
75-
set(CUPTI_LIB_NAME "cupti.lib")
76-
endif()
77-
find_library(CUPTI_LIBRARY_PATH ${CUPTI_LIB_NAME} PATHS
78-
${CUDA_SOURCE_DIR}
79-
${CUDA_SOURCE_DIR}/extras/CUPTI/lib64
80-
${CUDA_SOURCE_DIR}/lib
81-
${CUDA_SOURCE_DIR}/lib64
82-
NO_DEFAULT_PATH)
83-
endif()
84-
85-
if (NOT CUDA_nvperf_host_LIBRARY)
86-
set(CUDA_NVPERF_HOST_LIB_NAME "libnvperf_host.so")
87-
find_library(CUDA_NVPERF_HOST_LIB_PATH ${CUDA_NVPERF_HOST_LIB_NAME} PATHS
88-
${CUDA_SOURCE_DIR}
89-
${CUDA_SOURCE_DIR}/extras/CUPTI/lib64
90-
${CUDA_SOURCE_DIR}/lib
91-
${CUDA_SOURCE_DIR}/lib64
92-
NO_DEFAULT_PATH)
93-
endif()
94-
95-
if (NOT CUDA_cudart_LIBRARY)
96-
set(CUDA_CUDART_LIB_NAME "libcudart.so")
97-
find_library(CUDA_CUDART_LIB_PATH ${CUDA_CUDART_LIB_NAME} PATHS
98-
${CUDA_SOURCE_DIR}
99-
${CUDA_SOURCE_DIR}/lib
100-
${CUDA_SOURCE_DIR}/lib64
101-
NO_DEFAULT_PATH)
102-
endif()
103-
104-
if(CUDA_NVPERF_HOST_LIB_PATH)
105-
set(CUDA_nvperf_host_LIBRARY ${CUDA_NVPERF_HOST_LIB_PATH})
106-
message(STATUS " CUDA_nvperf_host_LIBRARY = ${CUDA_nvperf_host_LIBRARY}")
107-
endif()
108-
109-
if(CUDA_CUDART_LIB_PATH)
110-
set(CUDA_cudart_LIBRARY ${CUDA_CUDART_LIB_PATH})
111-
message(STATUS " CUDA_cudart_LIBRARY = ${CUDA_cudart_LIBRARY}")
112-
endif()
52+
# Set LIBKINETO_NOCUPTI to explicitly disable CUPTI
53+
# Otherwise, CUPTI is disabled if not found
54+
set(LIBKINETO_NOCUPTI ON CACHE BOOL "" FORCE)
11355

114-
if(CUPTI_LIBRARY_PATH AND CUPTI_INCLUDE_DIR)
115-
message(STATUS " CUPTI_INCLUDE_DIR = ${CUPTI_INCLUDE_DIR}")
116-
set(CUDA_cupti_LIBRARY ${CUPTI_LIBRARY_PATH})
117-
message(STATUS " CUDA_cupti_LIBRARY = ${CUDA_cupti_LIBRARY}")
118-
message(STATUS "Found CUPTI")
119-
set(LIBKINETO_NOCUPTI OFF CACHE STRING "" FORCE)
120-
else()
121-
message(STATUS "Could not find CUPTI library")
122-
set(LIBKINETO_NOCUPTI ON CACHE STRING "" FORCE)
123-
endif()
56+
find_package(CUDAToolkit)
57+
if(TARGET CUDA::cupti)
58+
message(STATUS "Found CUPTI")
59+
set(LIBKINETO_NOCUPTI OFF CACHE STRING "" FORCE)
60+
else()
61+
message(STATUS "Could not find CUPTI library")
12462
endif()
12563

126-
# Set LIBKINETO_NOCUPTI to explicitly disable CUPTI
127-
# Otherwise, CUPTI is disabled if not found
128-
IF (NOT CUDA_SOURCE_DIR OR NOT CUPTI_INCLUDE_DIR OR NOT CUDA_cupti_LIBRARY)
129-
set(LIBKINETO_NOCUPTI ON CACHE BOOL "" FORCE)
64+
if (KINETO_BUILD_TESTS)
65+
enable_testing()
13066
endif()
13167

13268
IF (NOT ROCM_SOURCE_DIR AND NOT ROCTRACER_INCLUDE_DIR)
@@ -186,7 +122,7 @@ endif()
186122
if (DEFINED LIBKINETO_NOXPUPTI AND NOT LIBKINETO_NOXPUPTI)
187123
list(APPEND KINETO_COMPILE_OPTIONS ${XPUPTI_BUILD_FLAG})
188124
endif()
189-
if (CUDA_nvperf_host_LIBRARY)
125+
if (TARGET CUDA::nvperf_host)
190126
list(APPEND KINETO_COMPILE_OPTIONS "-DUSE_CUPTI_RANGE_PROFILER")
191127
endif()
192128
if (NOT LIBKINETO_NOROCTRACER)
@@ -219,12 +155,6 @@ endif()
219155
set(FMT_INCLUDE_DIR "${FMT_SOURCE_DIR}/include")
220156
message(STATUS "Kineto: FMT_SOURCE_DIR = ${FMT_SOURCE_DIR}")
221157
message(STATUS "Kineto: FMT_INCLUDE_DIR = ${FMT_INCLUDE_DIR}")
222-
if (NOT CUPTI_INCLUDE_DIR)
223-
set(CUPTI_INCLUDE_DIR "${CUDA_SOURCE_DIR}/extras/CUPTI/include")
224-
endif()
225-
if (NOT CUDA_INCLUDE_DIRS)
226-
set(CUDA_INCLUDE_DIRS "${CUDA_SOURCE_DIR}/include")
227-
endif()
228158
if (NOT ROCTRACER_INCLUDE_DIR)
229159
set(ROCTRACER_INCLUDE_DIR "${ROCM_SOURCE_DIR}/include/roctracer")
230160
endif()
@@ -235,7 +165,6 @@ endif()
235165
set(DYNOLOG_INCLUDE_DIR "${LIBKINETO_THIRDPARTY_DIR}/dynolog/")
236166
set(IPCFABRIC_INCLUDE_DIR "${DYNOLOG_INCLUDE_DIR}/dynolog/src/ipcfabric/")
237167

238-
message(STATUS " CUPTI_INCLUDE_DIR = ${CUPTI_INCLUDE_DIR}")
239168
message(STATUS " ROCTRACER_INCLUDE_DIR = ${ROCTRACER_INCLUDE_DIR}")
240169
message(STATUS " DYNOLOG_INCLUDE_DIR = ${DYNOLOG_INCLUDE_DIR}")
241170
message(STATUS " IPCFABRIC_INCLUDE_DIR = ${IPCFABRIC_INCLUDE_DIR}")
@@ -249,8 +178,6 @@ target_include_directories(kineto_base PUBLIC
249178
$<BUILD_INTERFACE:${DYNOLOG_INCLUDE_DIR}>
250179
$<BUILD_INTERFACE:${FMT_INCLUDE_DIR}>
251180
$<BUILD_INTERFACE:${IPCFABRIC_INCLUDE_DIR}>
252-
$<BUILD_INTERFACE:${CUPTI_INCLUDE_DIR}>
253-
$<BUILD_INTERFACE:${CUDA_INCLUDE_DIRS}>
254181
$<BUILD_INTERFACE:${ROCTRACER_INCLUDE_DIR}>
255182
$<BUILD_INTERFACE:${ROCM_INCLUDE_DIRS}>)
256183

@@ -262,25 +189,21 @@ target_include_directories(kineto_api PUBLIC
262189
$<BUILD_INTERFACE:${FMT_INCLUDE_DIR}>
263190
$<BUILD_INTERFACE:${LIBKINETO_INCLUDE_DIR}>)
264191

192+
file(WRITE ${CMAKE_BINARY_DIR}/dummy.cpp "")
265193
if(KINETO_LIBRARY_TYPE STREQUAL "static")
266-
add_library(kineto STATIC
267-
$<TARGET_OBJECTS:kineto_base>
268-
$<TARGET_OBJECTS:kineto_api>)
194+
add_library(kineto STATIC ${CMAKE_BINARY_DIR}/dummy.cpp)
269195
elseif(KINETO_LIBRARY_TYPE STREQUAL "shared" OR (KINETO_LIBRARY_TYPE STREQUAL "default" AND BUILD_SHARED_LIBS))
270-
add_library(kineto SHARED
271-
$<TARGET_OBJECTS:kineto_base>
272-
$<TARGET_OBJECTS:kineto_api>)
196+
add_library(kineto SHARED ${CMAKE_BINARY_DIR}/dummy.cpp)
273197
set_property(TARGET kineto_base PROPERTY POSITION_INDEPENDENT_CODE ON)
274198
set_property(TARGET kineto_api PROPERTY POSITION_INDEPENDENT_CODE ON)
275199
set_target_properties(kineto PROPERTIES
276200
CXX_VISIBILITY_PRESET hidden)
277201
elseif(KINETO_LIBRARY_TYPE STREQUAL "default")
278-
add_library(kineto
279-
$<TARGET_OBJECTS:kineto_base>
280-
$<TARGET_OBJECTS:kineto_api>)
202+
add_library(kineto ${CMAKE_BINARY_DIR}/dummy.cpp)
281203
else()
282204
message(FATAL_ERROR "Unsupported library type ${KINETO_LIBRARY_TYPE}")
283205
endif()
206+
target_link_libraries(kineto kineto_base kineto_api)
284207

285208
if(NOT LIBKINETO_NOROCTRACER)
286209
find_library(ROCTRACER_LIBRARY NAMES libroctracer64.so HINTS
@@ -292,18 +215,17 @@ if(NOT LIBKINETO_NOROCTRACER)
292215
endif()
293216

294217
if(NOT LIBKINETO_NOCUPTI)
295-
target_link_libraries(kineto "${CUDA_cupti_LIBRARY}")
218+
target_link_libraries(kineto_base PUBLIC CUDA::cupti CUDA::cudart CUDA::cuda_driver)
296219
endif()
297-
if(CUDA_nvperf_host_LIBRARY)
298-
target_link_libraries(kineto "${CUDA_nvperf_host_LIBRARY}")
220+
if(TARGET CUDA::nvperf_host)
221+
target_link_libraries(kineto_base PRIVATE CUDA::nvperf_host)
299222
endif()
300223
if(DEFINED LIBKINETO_NOXPUPTI AND NOT LIBKINETO_NOXPUPTI)
301224
target_link_libraries(kineto "${XPU_xpupti_LIBRARY}")
302225
endif()
303-
target_link_libraries(kineto $<BUILD_INTERFACE:fmt::fmt-header-only>)
304-
add_dependencies(kineto fmt::fmt-header-only)
226+
target_link_libraries(kineto_base PRIVATE fmt::fmt-header-only)
305227

306-
install(TARGETS kineto EXPORT kinetoLibraryConfig
228+
install(TARGETS kineto kineto_base kineto_api dynolog_ipcfabric_lib EXPORT kinetoLibraryConfig
307229
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
308230
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
309231

libkineto/test/CMakeLists.txt

Lines changed: 16 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ add_executable(ConfigTest ConfigTest.cpp)
1212
target_compile_options(ConfigTest PRIVATE "${KINETO_COMPILE_OPTIONS}")
1313
target_link_libraries(ConfigTest PRIVATE
1414
gtest_main
15-
kineto
16-
"${CUDA_cudart_LIBRARY}")
15+
kineto)
1716
target_include_directories(ConfigTest PRIVATE "${LIBKINETO_DIR}")
1817
gtest_discover_tests(ConfigTest)
1918

@@ -42,13 +41,10 @@ add_executable(CuptiCallbackApiTest CuptiCallbackApiTest.cpp)
4241
target_compile_options(CuptiCallbackApiTest PRIVATE "${KINETO_COMPILE_OPTIONS}")
4342
target_link_libraries(CuptiCallbackApiTest PRIVATE
4443
gtest_main
45-
kineto
46-
"${CUDA_cudart_LIBRARY}")
44+
kineto)
4745
target_include_directories(CuptiCallbackApiTest PRIVATE
4846
"${LIBKINETO_DIR}"
49-
"${LIBKINETO_DIR}/include"
50-
"${CUPTI_INCLUDE_DIR}"
51-
"${CUDA_SOURCE_DIR}/include")
47+
"${LIBKINETO_DIR}/include")
5248
gtest_discover_tests(CuptiCallbackApiTest)
5349

5450
# CuptiRangeProfilerApiTest
@@ -57,14 +53,11 @@ target_compile_options(CuptiRangeProfilerApiTest PRIVATE
5753
"${KINETO_COMPILE_OPTIONS}")
5854
target_link_libraries(CuptiRangeProfilerApiTest PRIVATE
5955
gtest_main
60-
kineto
61-
"${CUDA_cudart_LIBRARY}")
56+
kineto)
6257
target_include_directories(CuptiRangeProfilerApiTest PRIVATE
6358
"${LIBKINETO_DIR}"
6459
"${LIBKINETO_DIR}/include"
65-
"${LIBKINETO_DIR}/src"
66-
"${CUDA_SOURCE_DIR}/include"
67-
"${CUPTI_INCLUDE_DIR}")
60+
"${LIBKINETO_DIR}/src")
6861
# Skipping due to SEGFault in 12.4
6962
# Tracked here: https://github.com/pytorch/kineto/issues/949
7063
# gtest_discover_tests(CuptiRangeProfilerApiTest)
@@ -75,8 +68,7 @@ target_compile_options(CuptiRangeProfilerConfigTest PRIVATE
7568
"${KINETO_COMPILE_OPTIONS}")
7669
target_link_libraries(CuptiRangeProfilerConfigTest PRIVATE
7770
gtest_main
78-
kineto
79-
"${CUDA_cudart_LIBRARY}")
71+
kineto)
8072
target_include_directories(CuptiRangeProfilerConfigTest PRIVATE
8173
"${LIBKINETO_DIR}"
8274
"${LIBKINETO_DIR}/include")
@@ -88,14 +80,11 @@ target_compile_options(CuptiRangeProfilerTest PRIVATE
8880
"${KINETO_COMPILE_OPTIONS}")
8981
target_link_libraries(CuptiRangeProfilerTest PRIVATE
9082
gtest_main
91-
kineto
92-
"${CUDA_cudart_LIBRARY}")
83+
kineto)
9384
target_include_directories(CuptiRangeProfilerTest PRIVATE
9485
"${LIBKINETO_DIR}"
9586
"${LIBKINETO_DIR}/include"
96-
"${LIBKINETO_DIR}/src"
97-
"${CUDA_SOURCE_DIR}/include"
98-
"${CUPTI_INCLUDE_DIR}")
87+
"${LIBKINETO_DIR}/src")
9988
# Skipping due to SEGFault in 12.4
10089
# Tracked here: https://github.com/pytorch/kineto/issues/949
10190
# gtest_discover_tests(CuptiRangeProfilerTest)
@@ -105,12 +94,9 @@ add_executable(CuptiStringsTest CuptiStringsTest.cpp)
10594
target_compile_options(CuptiStringsTest PRIVATE "${KINETO_COMPILE_OPTIONS}")
10695
target_link_libraries(CuptiStringsTest PRIVATE
10796
gtest_main
108-
kineto
109-
"${CUDA_cudart_LIBRARY}")
97+
kineto)
11098
target_include_directories(CuptiStringsTest PRIVATE
111-
"${LIBKINETO_DIR}"
112-
"${CUDA_SOURCE_DIR}/include"
113-
"${CUPTI_INCLUDE_DIR}")
99+
"${LIBKINETO_DIR}")
114100
gtest_discover_tests(CuptiStringsTest)
115101

116102
# EventProfilerTest
@@ -119,22 +105,18 @@ target_compile_options(EventProfilerTest PRIVATE "${KINETO_COMPILE_OPTIONS}")
119105
target_link_libraries(EventProfilerTest PRIVATE
120106
gtest_main
121107
gmock
122-
kineto
123-
"${CUDA_cudart_LIBRARY}")
108+
kineto)
124109
target_include_directories(EventProfilerTest PRIVATE
125110
"${LIBKINETO_DIR}"
126-
"${LIBKINETO_DIR}/include"
127-
"${CUDA_SOURCE_DIR}/include"
128-
"${CUPTI_INCLUDE_DIR}")
111+
"${LIBKINETO_DIR}/include")
129112
gtest_discover_tests(EventProfilerTest)
130113

131114
# LoggerObserverTest
132115
add_executable(LoggerObserverTest LoggerObserverTest.cpp)
133116
target_compile_options(LoggerObserverTest PRIVATE "${KINETO_COMPILE_OPTIONS}")
134117
target_link_libraries(LoggerObserverTest PRIVATE
135118
gtest_main
136-
kineto
137-
"${CUDA_cudart_LIBRARY}")
119+
kineto)
138120
target_include_directories(LoggerObserverTest PRIVATE
139121
"${LIBKINETO_DIR}"
140122
"${LIBKINETO_DIR}/include"
@@ -146,8 +128,7 @@ add_executable(PidInfoTest PidInfoTest.cpp)
146128
target_compile_options(PidInfoTest PRIVATE "${KINETO_COMPILE_OPTIONS}")
147129
target_link_libraries(PidInfoTest PRIVATE
148130
gtest_main
149-
kineto
150-
"${CUDA_cudart_LIBRARY}")
131+
kineto)
151132
target_include_directories(PidInfoTest PRIVATE "${LIBKINETO_DIR}")
152133
gtest_discover_tests(PidInfoTest)
153134

@@ -157,11 +138,9 @@ add_executable(CuptiProfilerApiTest CuptiProfilerApiTest.cu)
157138
target_compile_options(CuptiProfilerApiTest PRIVATE "${KINETO_COMPILE_OPTIONS}")
158139
target_link_libraries(CuptiProfilerApiTest PRIVATE
159140
kineto
160-
gtest_main
161-
cuda
162-
"${CUDA_cudart_LIBRARY}")
141+
gtest_main)
163142
target_include_directories(CuptiProfilerApiTest PRIVATE
164143
"${LIBKINETO_DIR}"
165144
"${LIBKINETO_DIR}/include"
166-
"${CUPTI_INCLUDE_DIR}")
145+
)
167146
#add_test(NAME CuptiProfilerApiTest_ COMMAND CuptiProfilerApiTest)

0 commit comments

Comments
 (0)