4
4
# This source code is licensed under the BSD-style license found in the
5
5
# LICENSE file in the root directory of this source tree.
6
6
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 )
10
9
11
10
#install libraries into correct locations on all platforms
12
11
include (GNUInstallDirs )
@@ -23,8 +22,6 @@ function(get_filelist name outputvar)
23
22
set (${outputvar} ${_tempvar} PARENT_SCOPE )
24
23
endfunction ()
25
24
26
- project (kineto VERSION 0.1 LANGUAGES CXX C )
27
-
28
25
set (KINETO_LIBRARY_TYPE "default" CACHE STRING
29
26
"Type of library (default, static or shared) to build" )
30
27
set_property (CACHE KINETO_LIBRARY_TYPE PROPERTY STRINGS default shared )
@@ -42,8 +39,8 @@ if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
42
39
set (CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE )
43
40
endif ()
44
41
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} " )
47
44
message (STATUS " CUDA_SOURCE_DIR = ${CUDA_SOURCE_DIR} " )
48
45
endif ()
49
46
@@ -52,81 +49,20 @@ if (NOT ROCM_SOURCE_DIR)
52
49
message (STATUS " ROCM_SOURCE_DIR = ${ROCM_SOURCE_DIR} " )
53
50
endif ()
54
51
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 )
113
55
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" )
124
62
endif ()
125
63
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 ()
130
66
endif ()
131
67
132
68
IF (NOT ROCM_SOURCE_DIR AND NOT ROCTRACER_INCLUDE_DIR )
@@ -186,7 +122,7 @@ endif()
186
122
if (DEFINED LIBKINETO_NOXPUPTI AND NOT LIBKINETO_NOXPUPTI )
187
123
list (APPEND KINETO_COMPILE_OPTIONS ${XPUPTI_BUILD_FLAG} )
188
124
endif ()
189
- if (CUDA_nvperf_host_LIBRARY )
125
+ if (TARGET CUDA::nvperf_host )
190
126
list (APPEND KINETO_COMPILE_OPTIONS "-DUSE_CUPTI_RANGE_PROFILER" )
191
127
endif ()
192
128
if (NOT LIBKINETO_NOROCTRACER )
@@ -219,12 +155,6 @@ endif()
219
155
set (FMT_INCLUDE_DIR "${FMT_SOURCE_DIR} /include" )
220
156
message (STATUS "Kineto: FMT_SOURCE_DIR = ${FMT_SOURCE_DIR} " )
221
157
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 ()
228
158
if (NOT ROCTRACER_INCLUDE_DIR )
229
159
set (ROCTRACER_INCLUDE_DIR "${ROCM_SOURCE_DIR} /include/roctracer" )
230
160
endif ()
@@ -235,7 +165,6 @@ endif()
235
165
set (DYNOLOG_INCLUDE_DIR "${LIBKINETO_THIRDPARTY_DIR} /dynolog/" )
236
166
set (IPCFABRIC_INCLUDE_DIR "${DYNOLOG_INCLUDE_DIR} /dynolog/src/ipcfabric/" )
237
167
238
- message (STATUS " CUPTI_INCLUDE_DIR = ${CUPTI_INCLUDE_DIR} " )
239
168
message (STATUS " ROCTRACER_INCLUDE_DIR = ${ROCTRACER_INCLUDE_DIR} " )
240
169
message (STATUS " DYNOLOG_INCLUDE_DIR = ${DYNOLOG_INCLUDE_DIR} " )
241
170
message (STATUS " IPCFABRIC_INCLUDE_DIR = ${IPCFABRIC_INCLUDE_DIR} " )
@@ -249,8 +178,6 @@ target_include_directories(kineto_base PUBLIC
249
178
$< BUILD_INTERFACE:${DYNOLOG_INCLUDE_DIR} >
250
179
$< BUILD_INTERFACE:${FMT_INCLUDE_DIR} >
251
180
$< BUILD_INTERFACE:${IPCFABRIC_INCLUDE_DIR} >
252
- $< BUILD_INTERFACE:${CUPTI_INCLUDE_DIR} >
253
- $< BUILD_INTERFACE:${CUDA_INCLUDE_DIRS} >
254
181
$< BUILD_INTERFACE:${ROCTRACER_INCLUDE_DIR} >
255
182
$< BUILD_INTERFACE:${ROCM_INCLUDE_DIRS} > )
256
183
@@ -262,25 +189,21 @@ target_include_directories(kineto_api PUBLIC
262
189
$< BUILD_INTERFACE:${FMT_INCLUDE_DIR} >
263
190
$< BUILD_INTERFACE:${LIBKINETO_INCLUDE_DIR} > )
264
191
192
+ file (WRITE ${CMAKE_BINARY_DIR} /dummy.cpp "" )
265
193
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 )
269
195
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 )
273
197
set_property (TARGET kineto_base PROPERTY POSITION_INDEPENDENT_CODE ON )
274
198
set_property (TARGET kineto_api PROPERTY POSITION_INDEPENDENT_CODE ON )
275
199
set_target_properties (kineto PROPERTIES
276
200
CXX_VISIBILITY_PRESET hidden )
277
201
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 )
281
203
else ()
282
204
message (FATAL_ERROR "Unsupported library type ${KINETO_LIBRARY_TYPE} " )
283
205
endif ()
206
+ target_link_libraries (kineto kineto_base kineto_api )
284
207
285
208
if (NOT LIBKINETO_NOROCTRACER )
286
209
find_library (ROCTRACER_LIBRARY NAMES libroctracer64.so HINTS
@@ -292,18 +215,17 @@ if(NOT LIBKINETO_NOROCTRACER)
292
215
endif ()
293
216
294
217
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 )
296
219
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 )
299
222
endif ()
300
223
if (DEFINED LIBKINETO_NOXPUPTI AND NOT LIBKINETO_NOXPUPTI )
301
224
target_link_libraries (kineto "${XPU_xpupti_LIBRARY} " )
302
225
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 )
305
227
306
- install (TARGETS kineto EXPORT kinetoLibraryConfig
228
+ install (TARGETS kineto kineto_base kineto_api dynolog_ipcfabric_lib EXPORT kinetoLibraryConfig
307
229
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
308
230
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} )
309
231
0 commit comments