Skip to content

Commit b457a54

Browse files
committed
remove optional symbols
1 parent 52152a1 commit b457a54

15 files changed

+205
-107
lines changed

CMakeLists.txt

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -423,29 +423,6 @@ if((UMF_BUILD_GPU_TESTS OR UMF_BUILD_GPU_EXAMPLES) AND UMF_BUILD_CUDA_PROVIDER)
423423
# TODO do the same for ze_loader
424424
endif()
425425

426-
# set optional symbols for map/def files
427-
#
428-
# TODO: ref. #649
429-
set(UMF_OPTIONAL_SYMBOLS_LINUX "")
430-
set(UMF_OPTIONAL_SYMBOLS_WINDOWS "")
431-
432-
if(UMF_BUILD_LEVEL_ZERO_PROVIDER)
433-
add_optional_symbol(umfLevelZeroMemoryProviderOps)
434-
endif()
435-
436-
# Conditional configuration for CUDA provider
437-
if(UMF_BUILD_CUDA_PROVIDER)
438-
add_optional_symbol(umfCUDAMemoryProviderOps)
439-
endif()
440-
441-
if(NOT UMF_DISABLE_HWLOC)
442-
add_optional_symbol(umfOsMemoryProviderOps)
443-
if(LINUX)
444-
add_optional_symbol(umfDevDaxMemoryProviderOps)
445-
add_optional_symbol(umfFileMemoryProviderOps)
446-
endif()
447-
endif()
448-
449426
add_subdirectory(src)
450427

451428
if(UMF_BUILD_TESTS)

cmake/helpers.cmake

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -446,12 +446,3 @@ macro(add_sanitizer_flag flag)
446446

447447
set(CMAKE_REQUIRED_FLAGS ${SAVED_CMAKE_REQUIRED_FLAGS})
448448
endmacro()
449-
450-
function(add_optional_symbol symbol)
451-
set(UMF_OPTIONAL_SYMBOLS_WINDOWS
452-
"${UMF_OPTIONAL_SYMBOLS_WINDOWS} \n ${symbol}"
453-
PARENT_SCOPE)
454-
set(UMF_OPTIONAL_SYMBOLS_LINUX
455-
"${UMF_OPTIONAL_SYMBOLS_LINUX} \n ${symbol};"
456-
PARENT_SCOPE)
457-
endfunction()

src/CMakeLists.txt

Lines changed: 33 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -110,70 +110,53 @@ set(UMF_SOURCES
110110
memtarget.c
111111
mempolicy.c
112112
memspace.c
113+
memspaces/memspace_host_all.c
114+
memspaces/memspace_highest_capacity.c
115+
memspaces/memspace_highest_bandwidth.c
116+
memspaces/memspace_lowest_latency.c
117+
memspaces/memspace_numa.c
113118
provider/provider_coarse.c
119+
provider/provider_cuda.c
120+
provider/provider_devdax_memory.c
121+
provider/provider_file_memory.c
122+
provider/provider_level_zero.c
123+
provider/provider_os_memory.c
114124
provider/provider_tracking.c
115125
critnib/critnib.c
116126
ravl/ravl.c
117127
pool/pool_proxy.c
118128
pool/pool_scalable.c)
119129

120130
if(NOT UMF_DISABLE_HWLOC)
121-
set(UMF_SOURCES ${UMF_SOURCES} ${HWLOC_DEPENDENT_SOURCES})
131+
set(UMF_SOURCES ${UMF_SOURCES} ${HWLOC_DEPENDENT_SOURCES}
132+
memtargets/memtarget_numa.c)
133+
set(UMF_LIBS ${UMF_LIBS} ${LIBHWLOC_LIBRARIES})
134+
set(UMF_PRIVATE_LIBRARY_DIRS ${UMF_PRIVATE_LIBRARY_DIRS}
135+
${LIBHWLOC_LIBRARY_DIRS})
136+
else()
137+
set(UMF_COMMON_COMPILE_DEFINITIONS ${UMF_COMMON_COMPILE_DEFINITIONS}
138+
"UMF_NO_HWLOC=1")
122139
endif()
123140

124141
set(UMF_SOURCES_LINUX libumf_linux.c)
125-
126142
set(UMF_SOURCES_MACOSX libumf_linux.c)
127-
128143
set(UMF_SOURCES_WINDOWS libumf_windows.c)
129144

130-
set(UMF_SOURCES_COMMON_LINUX_MACOSX
131-
provider/provider_devdax_memory.c
132-
provider/provider_file_memory.c
133-
provider/provider_os_memory.c
134-
memtargets/memtarget_numa.c
135-
memspaces/memspace_numa.c
136-
memspaces/memspace_host_all.c
137-
memspaces/memspace_highest_capacity.c
138-
memspaces/memspace_highest_bandwidth.c
139-
memspaces/memspace_lowest_latency.c)
140-
141-
if(NOT UMF_DISABLE_HWLOC)
142-
set(UMF_SOURCES_LINUX ${UMF_SOURCES_LINUX}
143-
${UMF_SOURCES_COMMON_LINUX_MACOSX})
144-
145-
set(UMF_SOURCES_MACOSX ${UMF_SOURCES_MACOSX}
146-
${UMF_SOURCES_COMMON_LINUX_MACOSX})
147-
148-
set(UMF_SOURCES_WINDOWS ${UMF_SOURCES_WINDOWS}
149-
provider/provider_os_memory.c)
150-
151-
set(UMF_LIBS ${UMF_LIBS} ${LIBHWLOC_LIBRARIES})
152-
153-
if(NOT WINDOWS)
154-
add_optional_symbol(umfMemspaceCreateFromNumaArray)
155-
add_optional_symbol(umfMemspaceHighestBandwidthGet)
156-
add_optional_symbol(umfMemspaceHighestCapacityGet)
157-
add_optional_symbol(umfMemspaceHostAllGet)
158-
add_optional_symbol(umfMemspaceLowestLatencyGet)
159-
endif()
145+
# Add compile definitions to handle unsupported functions
146+
if(NOT UMF_BUILD_CUDA_PROVIDER)
147+
set(UMF_COMMON_COMPILE_DEFINITIONS ${UMF_COMMON_COMPILE_DEFINITIONS}
148+
"UMF_NO_CUDA_PROVIDER=1")
160149
endif()
161-
162-
if(WINDOWS)
163-
message(STATUS "UMF_OPTIONAL_SYMBOLS: ${UMF_OPTIONAL_SYMBOLS_WINDOWS}")
164-
else()
165-
message(STATUS "UMF_OPTIONAL_SYMBOLS: ${UMF_OPTIONAL_SYMBOLS_LINUX}")
150+
if(NOT UMF_BUILD_LEVEL_ZERO_PROVIDER)
151+
set(UMF_COMMON_COMPILE_DEFINITIONS ${UMF_COMMON_COMPILE_DEFINITIONS}
152+
"UMF_NO_LEVEL_ZERO_PROVIDER=1")
153+
endif()
154+
if(UMF_DISABLE_HWLOC OR WINDOWS)
155+
set(UMF_COMMON_COMPILE_DEFINITIONS ${UMF_COMMON_COMPILE_DEFINITIONS}
156+
"UMF_NO_DEVDAX_PROVIDER=1")
157+
set(UMF_COMMON_COMPILE_DEFINITIONS ${UMF_COMMON_COMPILE_DEFINITIONS}
158+
"UMF_NO_FILE_PROVIDER=1")
166159
endif()
167-
168-
# Configure map/def files with optional symbols
169-
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libumf.def.in"
170-
"${CMAKE_CURRENT_BINARY_DIR}/libumf.def" @ONLY)
171-
172-
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libumf.map.in"
173-
"${CMAKE_CURRENT_BINARY_DIR}/libumf.map" @ONLY)
174-
175-
set(UMF_PRIVATE_LIBRARY_DIRS ${UMF_PRIVATE_LIBRARY_DIRS}
176-
${LIBHWLOC_LIBRARY_DIRS})
177160

178161
if(LINUX)
179162
set(UMF_SOURCES ${UMF_SOURCES} ${UMF_SOURCES_LINUX})
@@ -198,8 +181,8 @@ if(UMF_BUILD_SHARED_LIBRARY)
198181
TYPE SHARED
199182
SRCS ${UMF_SOURCES}
200183
LIBS ${UMF_LIBS} ${HWLOC_LIB}
201-
LINUX_MAP_FILE ${CMAKE_CURRENT_BINARY_DIR}/libumf.map
202-
WINDOWS_DEF_FILE ${CMAKE_CURRENT_BINARY_DIR}/libumf.def)
184+
LINUX_MAP_FILE ${CMAKE_CURRENT_SOURCE_DIR}/libumf.map
185+
WINDOWS_DEF_FILE ${CMAKE_CURRENT_SOURCE_DIR}/libumf.def)
203186
set(UMF_COMMON_COMPILE_DEFINITIONS ${UMF_COMMON_COMPILE_DEFINITIONS}
204187
"UMF_SHARED_LIBRARY")
205188
set_target_properties(
@@ -215,11 +198,6 @@ else()
215198
LIBS ${UMF_LIBS})
216199
endif()
217200

218-
if(UMF_DISABLE_HWLOC)
219-
set(UMF_COMMON_COMPILE_DEFINITIONS ${UMF_COMMON_COMPILE_DEFINITIONS}
220-
UMF_NO_HWLOC=1)
221-
endif()
222-
223201
if(UMF_LINK_HWLOC_STATICALLY)
224202
add_dependencies(umf ${UMF_HWLOC_NAME})
225203
endif()
@@ -229,8 +207,6 @@ target_link_directories(umf PRIVATE ${UMF_PRIVATE_LIBRARY_DIRS})
229207
target_compile_definitions(umf PRIVATE ${UMF_COMMON_COMPILE_DEFINITIONS})
230208

231209
if(UMF_BUILD_LEVEL_ZERO_PROVIDER)
232-
target_sources(umf PRIVATE provider/provider_level_zero.c)
233-
234210
if(LINUX)
235211
# WA for error ze_api.h:14234:20: no newline at end of file
236212
# [-Werror,-Wnewline-eof]
@@ -244,7 +220,6 @@ if(UMF_BUILD_LEVEL_ZERO_PROVIDER)
244220
endif()
245221

246222
if(UMF_BUILD_CUDA_PROVIDER)
247-
target_sources(umf PRIVATE provider/provider_cuda.c)
248223
set(UMF_COMPILE_DEFINITIONS ${UMF_COMPILE_DEFINITIONS}
249224
"UMF_BUILD_CUDA_PROVIDER=1")
250225
endif()

src/libumf.def.in renamed to src/libumf.def

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@ EXPORTS
1616
umfCloseIPCHandle
1717
umfCoarseMemoryProviderGetStats
1818
umfCoarseMemoryProviderOps
19+
umfCUDAMemoryProviderOps
20+
umfDevDaxMemoryProviderOps
1921
umfFree
22+
umfFileMemoryProviderOps
2023
umfGetIPCHandle
2124
umfGetLastFailedMemoryProvider
22-
umfMemoryTrackerGetAllocInfo
25+
umfLevelZeroMemoryProviderOps
2326
umfMemoryProviderAlloc
2427
umfMemoryProviderAllocationMerge
2528
umfMemoryProviderAllocationSplit
@@ -38,14 +41,20 @@ EXPORTS
3841
umfMemoryProviderPurgeForce
3942
umfMemoryProviderPurgeLazy
4043
umfMemoryProviderPutIPCHandle
44+
umfMemoryTrackerGetAllocInfo
4145
umfMempolicyCreate
4246
umfMempolicyDestroy
4347
umfMempolicySetCustomSplitPartitions
4448
umfMempolicySetInterleavePartSize
4549
umfMemspaceClone
50+
umfMemspaceCreateFromNumaArray
4651
umfMemspaceDestroy
4752
umfMemspaceFilterByCapacity
4853
umfMemspaceFilterById
54+
umfMemspaceHighestBandwidthGet
55+
umfMemspaceHighestCapacityGet
56+
umfMemspaceHostAllGet
57+
umfMemspaceLowestLatencyGet
4958
umfMemspaceMemtargetAdd
5059
umfMemspaceMemtargetGet
5160
umfMemspaceMemtargetNum
@@ -55,7 +64,8 @@ EXPORTS
5564
umfMemtargetGetCapacity
5665
umfMemtargetGetId
5766
umfMemtargetGetType
58-
umfOpenIPCHandle
67+
umfOpenIPCHandle
68+
umfOsMemoryProviderOps
5969
umfPoolAlignedMalloc
6070
umfPoolByPtr
6171
umfPoolCalloc
@@ -72,4 +82,3 @@ EXPORTS
7282
umfProxyPoolOps
7383
umfPutIPCHandle
7484
umfScalablePoolOps
75-
@UMF_OPTIONAL_SYMBOLS_WINDOWS@

src/libumf.map.in renamed to src/libumf.map

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,13 @@ UMF_1.0 {
1010
umfCloseIPCHandle;
1111
umfCoarseMemoryProviderGetStats;
1212
umfCoarseMemoryProviderOps;
13+
umfCUDAMemoryProviderOps;
14+
umfDevDaxMemoryProviderOps;
1315
umfFree;
16+
umfFileMemoryProviderOps;
1417
umfGetIPCHandle;
1518
umfGetLastFailedMemoryProvider;
16-
umfMemoryTrackerGetAllocInfo;
19+
umfLevelZeroMemoryProviderOps;
1720
umfMemoryProviderAlloc;
1821
umfMemoryProviderAllocationMerge;
1922
umfMemoryProviderAllocationSplit;
@@ -32,14 +35,20 @@ UMF_1.0 {
3235
umfMemoryProviderPurgeForce;
3336
umfMemoryProviderPurgeLazy;
3437
umfMemoryProviderPutIPCHandle;
38+
umfMemoryTrackerGetAllocInfo;
3539
umfMempolicyCreate;
3640
umfMempolicyDestroy;
3741
umfMempolicySetCustomSplitPartitions;
3842
umfMempolicySetInterleavePartSize;
3943
umfMemspaceClone;
44+
umfMemspaceCreateFromNumaArray;
4045
umfMemspaceDestroy;
4146
umfMemspaceFilterByCapacity;
4247
umfMemspaceFilterById;
48+
umfMemspaceHighestBandwidthGet;
49+
umfMemspaceHighestCapacityGet;
50+
umfMemspaceHostAllGet;
51+
umfMemspaceLowestLatencyGet;
4352
umfMemspaceMemtargetAdd;
4453
umfMemspaceMemtargetGet;
4554
umfMemspaceMemtargetNum;
@@ -50,6 +59,7 @@ UMF_1.0 {
5059
umfMemtargetGetId;
5160
umfMemtargetGetType;
5261
umfOpenIPCHandle;
62+
umfOsMemoryProviderOps;
5363
umfPoolAlignedMalloc;
5464
umfPoolByPtr;
5565
umfPoolCalloc;
@@ -66,7 +76,6 @@ UMF_1.0 {
6676
umfProxyPoolOps;
6777
umfPutIPCHandle;
6878
umfScalablePoolOps;
69-
@UMF_OPTIONAL_SYMBOLS_LINUX@
7079
local:
7180
*;
7281
};

src/memspaces/memspace_highest_bandwidth.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,20 @@
1111
#include <ctype.h>
1212
#include <stdlib.h>
1313

14+
#include <umf.h>
15+
#include <umf/memspace.h>
16+
17+
// UMF_MEMSPACE_HIGHEST_BANDWIDTH requires HWLOC
18+
// Additionally, it is currently unsupported on Win
19+
#if defined(_WIN32) || defined(UMF_NO_HWLOC)
20+
21+
umf_const_memspace_handle_t umfMemspaceHighestBandwidthGet(void) {
22+
// not supported
23+
return NULL;
24+
}
25+
26+
#else // !defined(_WIN32) && !defined(UMF_NO_HWLOC)
27+
1428
#include "base_alloc_global.h"
1529
#include "memspace_internal.h"
1630
#include "memtarget_numa.h"
@@ -100,3 +114,5 @@ umf_const_memspace_handle_t umfMemspaceHighestBandwidthGet(void) {
100114
umfMemspaceHighestBandwidthInit);
101115
return UMF_MEMSPACE_HIGHEST_BANDWIDTH;
102116
}
117+
118+
#endif // !defined(_WIN32) && !defined(UMF_NO_HWLOC)

src/memspaces/memspace_highest_capacity.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,20 @@
1010
#include <assert.h>
1111
#include <stdlib.h>
1212

13+
#include <umf.h>
14+
#include <umf/memspace.h>
15+
16+
// UMF_MEMSPACE_HIGHEST_CAPACITY requires HWLOC
17+
// Additionally, it is currently unsupported on Win
18+
#if defined(_WIN32) || defined(UMF_NO_HWLOC)
19+
20+
umf_const_memspace_handle_t umfMemspaceHighestCapacityGet(void) {
21+
// not supported
22+
return NULL;
23+
}
24+
25+
#else // !defined(_WIN32) && !defined(UMF_NO_HWLOC)
26+
1327
#include "base_alloc_global.h"
1428
#include "memspace_internal.h"
1529
#include "memtarget_numa.h"
@@ -72,3 +86,5 @@ umf_const_memspace_handle_t umfMemspaceHighestCapacityGet(void) {
7286
umfMemspaceHighestCapacityInit);
7387
return UMF_MEMSPACE_HIGHEST_CAPACITY;
7488
}
89+
90+
#endif // !defined(_WIN32) && !defined(UMF_NO_HWLOC)

src/memspaces/memspace_host_all.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,20 @@
1010
#include <assert.h>
1111
#include <stdlib.h>
1212

13+
#include <umf.h>
14+
#include <umf/memspace.h>
15+
16+
// UMF_MEMSPACE_HOST_ALL requires HWLOC
17+
// Additionally, it is currently unsupported on Win
18+
19+
#if defined(_WIN32) || defined(UMF_NO_HWLOC)
20+
umf_const_memspace_handle_t umfMemspaceHostAllGet(void) {
21+
// not supported
22+
return NULL;
23+
}
24+
25+
#else // !defined(_WIN32) && !defined(UMF_NO_HWLOC)
26+
1327
#include "base_alloc_global.h"
1428
#include "memspace_internal.h"
1529
#include "memtarget_numa.h"
@@ -93,3 +107,5 @@ umf_const_memspace_handle_t umfMemspaceHostAllGet(void) {
93107
utils_init_once(&UMF_MEMSPACE_HOST_ALL_INITIALIZED, umfMemspaceHostAllInit);
94108
return UMF_MEMSPACE_HOST_ALL;
95109
}
110+
111+
#endif // !defined(_WIN32) && !defined(UMF_NO_HWLOC)

src/memspaces/memspace_lowest_latency.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,20 @@
1111
#include <ctype.h>
1212
#include <stdlib.h>
1313

14+
#include <umf.h>
15+
#include <umf/memspace.h>
16+
17+
// UMF_MEMSPACE_LOWEST_LATENCY requires HWLOC
18+
// Additionally, it is currently unsupported on Win
19+
#if defined(_WIN32) || defined(UMF_NO_HWLOC)
20+
21+
umf_const_memspace_handle_t umfMemspaceLowestLatencyGet(void) {
22+
// not supported
23+
return NULL;
24+
}
25+
26+
#else // !defined(_WIN32) && !defined(UMF_NO_HWLOC)
27+
1428
#include "base_alloc_global.h"
1529
#include "memspace_internal.h"
1630
#include "memtarget_numa.h"
@@ -100,3 +114,5 @@ umf_const_memspace_handle_t umfMemspaceLowestLatencyGet(void) {
100114
umfMemspaceLowestLatencyInit);
101115
return UMF_MEMSPACE_LOWEST_LATENCY;
102116
}
117+
118+
#endif // !defined(_WIN32) && !defined(UMF_NO_HWLOC)

0 commit comments

Comments
 (0)