-
Notifications
You must be signed in to change notification settings - Fork 766
/
Copy pathCMakeLists.txt
130 lines (107 loc) · 4.37 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Copyright (C) 2022-2025 Intel Corporation
# Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM Exceptions.
# See LICENSE.TXT
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
if (UR_BUILD_ADAPTER_L0 OR UR_BUILD_ADAPTER_L0_V2)
include(FetchLevelZero)
set(UMF_BUILD_LEVEL_ZERO_PROVIDER ON CACHE INTERNAL "Build Level Zero Provider")
set(UMF_LEVEL_ZERO_INCLUDE_DIR "${LEVEL_ZERO_INCLUDE_DIR}" CACHE INTERNAL "Level Zero headers")
else()
set(UMF_BUILD_LEVEL_ZERO_PROVIDER OFF CACHE INTERNAL "Build Level Zero Provider")
endif()
if (UR_BUILD_ADAPTER_CUDA)
find_package(CUDAToolkit 10.1 REQUIRED)
set(UMF_BUILD_CUDA_PROVIDER ON CACHE INTERNAL "Build UMF CUDA provider")
set(UMF_CUDA_INCLUDE_DIR "${CUDAToolkit_INCLUDE_DIRS}" CACHE INTERNAL "CUDA headers")
else()
set(UMF_BUILD_CUDA_PROVIDER OFF CACHE INTERNAL "Build UMF CUDA provider")
endif()
add_ur_library(ur_common STATIC
ur_util.cpp
ur_util.hpp
latency_tracker.hpp
$<$<PLATFORM_ID:Windows>:windows/ur_lib_loader.cpp>
$<$<PLATFORM_ID:Linux,Darwin>:linux/ur_lib_loader.cpp>
)
add_library(${PROJECT_NAME}::common ALIAS ur_common)
target_include_directories(ur_common PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
)
message(STATUS "Download Unified Memory Framework from github.com")
if (NOT DEFINED UMF_REPO)
set(UMF_REPO "https://github.com/bratpiorka/unified-memory-framework.git")
endif()
if (NOT DEFINED UMF_TAG)
# commit cbaf24ae0cf33356ddb1bdafe7197b2a90556cd7
# Author: Łukasz Stolarczuk <[email protected]>
# Date: Tue Mar 18 15:41:37 2025 +0100
# 0.11.0-rc1 release
set(UMF_TAG d1a61df8e689b88dda5c88dbaed5f982a66a7aa7)
endif()
message(STATUS "Will fetch Unified Memory Framework from ${UMF_REPO}")
include(FetchContent)
FetchContent_Declare(unified-memory-framework
GIT_REPOSITORY ${UMF_REPO}
GIT_TAG ${UMF_TAG}
)
if (UR_STATIC_ADAPTER_L0)
if (UMF_BUILD_SHARED_LIBRARY)
message(STATUS "Static adapter is not compatible with shared UMF, switching to fully statically linked UMF")
set(UMF_BUILD_SHARED_LIBRARY OFF)
endif()
endif()
set(UR_USE_EXTERNAL_UMF OFF CACHE BOOL "Use a pre-built UMF")
if (UR_USE_EXTERNAL_UMF)
find_package(umf REQUIRED)
# Add an alias matching the FetchContent case
add_library(umf::headers ALIAS umf::umf_headers)
else()
set(UMF_BUILD_TESTS OFF CACHE INTERNAL "Build UMF tests")
set(UMF_BUILD_EXAMPLES OFF CACHE INTERNAL "Build UMF examples")
set(UMF_BUILD_SHARED_LIBRARY ${UMF_BUILD_SHARED_LIBRARY} CACHE INTERNAL "Build UMF shared library")
set(UMF_BUILD_LIBUMF_POOL_DISJOINT ON CACHE INTERNAL "Build Disjoint Pool")
FetchContent_MakeAvailable(unified-memory-framework)
FetchContent_GetProperties(unified-memory-framework)
endif()
if(UR_ENABLE_LATENCY_HISTOGRAM)
set(HDR_HISTOGRAM_BUILD_STATIC CACHE INTERNAL ON "")
set(HDR_HISTOGRAM_BUILD_SHARED CACHE INTERNAL OFF "")
include(FetchContent)
FetchContent_Declare(hdr_histogram
GIT_REPOSITORY https://github.com/HdrHistogram/HdrHistogram_c.git
GIT_TAG 0.11.8
)
FetchContent_MakeAvailable(hdr_histogram)
FetchContent_GetProperties(hdr_histogram)
target_link_libraries(ur_common PUBLIC hdr_histogram_static)
target_include_directories(ur_common PUBLIC $<BUILD_INTERFACE:${hdr_histogram_SOURCE_DIR}/include>)
target_compile_options(ur_common PUBLIC -DUR_ENABLE_LATENCY_HISTOGRAM=1)
endif()
target_link_libraries(ur_common PUBLIC
${CMAKE_DL_LIBS}
${PROJECT_NAME}::headers
)
if (UNIX)
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package(Threads REQUIRED)
target_link_libraries(ur_common PUBLIC Threads::Threads)
endif()
install(TARGETS ur_common
EXPORT ${PROJECT_NAME}-targets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
add_library(ur_umf INTERFACE)
target_sources(ur_umf INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/umf_helpers.hpp>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/umf_pools/disjoint_pool_config_parser.cpp>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/ur_pool_manager.hpp>
)
add_library(${PROJECT_NAME}::umf ALIAS ur_umf)
target_link_libraries(ur_umf INTERFACE
umf::umf
umf::headers
)