Skip to content

Commit 8a4f534

Browse files
committed
use pools not only providers in IPC tests
1 parent 5bf1b5e commit 8a4f534

11 files changed

+90
-69
lines changed

test/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,13 +382,14 @@ function(add_umf_ipc_test)
382382
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
383383

384384
set_tests_properties(${TEST_NAME} PROPERTIES LABELS "umf")
385+
set_tests_properties(${TEST_NAME} PROPERTIES TIMEOUT 60)
385386
if(NOT UMF_TESTS_FAIL_ON_SKIP)
386387
set_tests_properties(${TEST_NAME} PROPERTIES SKIP_RETURN_CODE 125)
387388
endif()
388389
endfunction()
389390

390391
if(LINUX)
391-
if(NOT UMF_DISABLE_HWLOC)
392+
if(NOT UMF_DISABLE_HWLOC AND UMF_POOL_SCALABLE_ENABLED)
392393
build_umf_test(
393394
NAME
394395
ipc_os_prov_consumer
@@ -442,7 +443,9 @@ if(LINUX)
442443

443444
# TODO add IPC tests for CUDA
444445

445-
if(UMF_BUILD_GPU_TESTS AND UMF_BUILD_LEVEL_ZERO_PROVIDER)
446+
if(UMF_BUILD_GPU_TESTS
447+
AND UMF_BUILD_LEVEL_ZERO_PROVIDER
448+
AND UMF_BUILD_LIBUMF_POOL_DISJOINT)
446449
build_umf_test(
447450
NAME
448451
ipc_level_zero_prov_consumer
@@ -453,6 +456,7 @@ if(LINUX)
453456
providers/level_zero_helpers.cpp
454457
LIBS
455458
ze_loader
459+
disjoint_pool
456460
${UMF_UTILS_FOR_TEST})
457461
build_umf_test(
458462
NAME
@@ -464,6 +468,7 @@ if(LINUX)
464468
providers/level_zero_helpers.cpp
465469
LIBS
466470
ze_loader
471+
disjoint_pool
467472
${UMF_UTILS_FOR_TEST})
468473
target_include_directories(umf_test-ipc_level_zero_prov_producer
469474
PRIVATE ${LEVEL_ZERO_INCLUDE_DIRS})

test/common/ipc_common.c

Lines changed: 35 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,9 @@ int consumer_connect(int port) {
110110
return ret;
111111
}
112112

113-
int run_consumer(int port, umf_memory_provider_ops_t *provider_ops,
114-
void *provider_params, memcopy_callback_t memcopy_callback,
115-
void *memcopy_ctx) {
113+
int run_consumer(int port, umf_memory_pool_ops_t *pool_ops, void *pool_params,
114+
umf_memory_provider_ops_t *provider_ops, void *provider_params,
115+
memcopy_callback_t memcopy_callback, void *memcopy_ctx) {
116116
char consumer_message[MSG_SIZE];
117117
int producer_socket = -1;
118118
int ret = -1;
@@ -131,6 +131,9 @@ int run_consumer(int port, umf_memory_provider_ops_t *provider_ops,
131131
return -1;
132132
}
133133

134+
umf_memory_pool_handle_t pool;
135+
umf_result = umfPoolCreate(pool_ops, provider, pool_params, 0, &pool);
136+
134137
producer_socket = consumer_connect(port);
135138
if (producer_socket < 0) {
136139
goto err_umfMemoryProviderDestroy;
@@ -183,7 +186,7 @@ int run_consumer(int port, umf_memory_provider_ops_t *provider_ops,
183186
len);
184187

185188
void *SHM_ptr;
186-
umf_result = umfMemoryProviderOpenIPCHandle(provider, IPC_handle, &SHM_ptr);
189+
umf_result = umfOpenIPCHandle(pool, IPC_handle, &SHM_ptr);
187190
if (umf_result == UMF_RESULT_ERROR_NOT_SUPPORTED) {
188191
fprintf(stderr,
189192
"[consumer] SKIP: opening the IPC handle is not supported\n");
@@ -240,8 +243,7 @@ int run_consumer(int port, umf_memory_provider_ops_t *provider_ops,
240243

241244
err_closeIPCHandle:
242245
// we do not know the exact size of the remote shared memory
243-
umf_result = umfMemoryProviderCloseIPCHandle(provider, SHM_ptr,
244-
sizeof(unsigned long long));
246+
umf_result = umfCloseIPCHandle(SHM_ptr);
245247
if (umf_result != UMF_RESULT_SUCCESS) {
246248
fprintf(stderr, "[consumer] ERROR: closing the IPC handle failed\n");
247249
}
@@ -254,6 +256,7 @@ int run_consumer(int port, umf_memory_provider_ops_t *provider_ops,
254256

255257
err_umfMemoryProviderDestroy:
256258
umfMemoryProviderDestroy(provider);
259+
umfPoolDestroy(pool);
257260

258261
if (ret == 0) {
259262
fprintf(stderr, "[consumer] Shutting down (status OK) ...\n");
@@ -303,9 +306,9 @@ int producer_connect(int port) {
303306
return -1;
304307
}
305308

306-
int run_producer(int port, umf_memory_provider_ops_t *provider_ops,
307-
void *provider_params, memcopy_callback_t memcopy_callback,
308-
void *memcopy_ctx) {
309+
int run_producer(int port, umf_memory_pool_ops_t *pool_ops, void *pool_params,
310+
umf_memory_provider_ops_t *provider_ops, void *provider_params,
311+
memcopy_callback_t memcopy_callback, void *memcopy_ctx) {
309312
int ret = -1;
310313
umf_memory_provider_handle_t provider = NULL;
311314
umf_result_t umf_result = UMF_RESULT_ERROR_UNKNOWN;
@@ -321,6 +324,9 @@ int run_producer(int port, umf_memory_provider_ops_t *provider_ops,
321324
return -1;
322325
}
323326

327+
umf_memory_pool_handle_t pool;
328+
umf_result = umfPoolCreate(pool_ops, provider, pool_params, 0, &pool);
329+
324330
size_t page_size;
325331
umf_result = umfMemoryProviderGetMinPageSize(provider, NULL, &page_size);
326332
if (umf_result != UMF_RESULT_SUCCESS) {
@@ -335,45 +341,36 @@ int run_producer(int port, umf_memory_provider_ops_t *provider_ops,
335341
size_t ptr2_size = 2 * page_size;
336342
size_t size_IPC_shared_memory = 3 * page_size;
337343

338-
umf_result = umfMemoryProviderAlloc(provider, ptr1_size, 0, &ptr1);
339-
if (umf_result != UMF_RESULT_SUCCESS) {
344+
ptr1 = umfPoolMalloc(pool, ptr1_size);
345+
if (ptr1 == NULL) {
340346
fprintf(stderr, "[producer] ERROR: allocating 1 page failed\n");
341347
goto err_umfMemoryProviderDestroy;
342348
}
343349

344-
umf_result = umfMemoryProviderAlloc(provider, ptr2_size, 0, &ptr2);
345-
if (umf_result != UMF_RESULT_SUCCESS) {
350+
ptr2 = umfPoolMalloc(pool, ptr2_size);
351+
if (ptr2 == NULL) {
346352
fprintf(stderr, "[producer] ERROR: allocating 2 pages failed\n");
347353
goto err_free_ptr1;
348354
}
349355

350-
umf_result = umfMemoryProviderAlloc(provider, size_IPC_shared_memory, 0,
351-
&IPC_shared_memory);
352-
if (umf_result != UMF_RESULT_SUCCESS) {
356+
IPC_shared_memory = umfPoolMalloc(pool, size_IPC_shared_memory);
357+
if (IPC_shared_memory == NULL) {
353358
fprintf(stderr, "[producer] ERROR: allocating 3 pages failed\n");
354359
goto err_free_ptr2;
355360
}
356361

357362
// get size of the IPC handle
358363
size_t IPC_handle_size;
359-
umf_result = umfMemoryProviderGetIPCHandleSize(provider, &IPC_handle_size);
360-
if (umf_result != UMF_RESULT_SUCCESS) {
361-
fprintf(stderr,
362-
"[producer] ERROR: getting size of the IPC handle failed\n");
363-
goto err_free_IPC_shared_memory;
364-
}
364+
umf_ipc_handle_t IPC_handle = NULL;
365365

366-
// allocate data for IPC provider
367-
void *IPC_handle = malloc(IPC_handle_size);
368-
if (IPC_handle == NULL) {
369-
fprintf(stderr,
370-
"[producer] ERROR: allocating memory for IPC handle failed\n");
366+
// get the IPC handle
367+
umf_result =
368+
umfGetIPCHandle(IPC_shared_memory, &IPC_handle, &IPC_handle_size);
369+
if (umf_result != UMF_RESULT_SUCCESS) {
370+
fprintf(stderr, "[producer] ERROR: getting the IPC handle failed\n");
371371
goto err_free_IPC_shared_memory;
372372
}
373373

374-
// zero the IPC handle and the shared memory
375-
memset(IPC_handle, 0, IPC_handle_size);
376-
377374
// save a random number (&provider) in the shared memory
378375
unsigned long long SHM_number_1 = (unsigned long long)&provider;
379376
memcopy_callback(IPC_shared_memory, &SHM_number_1, sizeof(SHM_number_1),
@@ -382,16 +379,6 @@ int run_producer(int port, umf_memory_provider_ops_t *provider_ops,
382379
fprintf(stderr, "[producer] My shared memory contains a number: %llu\n",
383380
SHM_number_1);
384381

385-
// get the IPC handle from the OS memory provider
386-
umf_result = umfMemoryProviderGetIPCHandle(
387-
provider, IPC_shared_memory, size_IPC_shared_memory, IPC_handle);
388-
if (umf_result != UMF_RESULT_SUCCESS) {
389-
fprintf(stderr,
390-
"[producer] ERROR: getting the IPC handle from the OS memory "
391-
"provider failed\n");
392-
goto err_free_IPC_handle;
393-
}
394-
395382
fprintf(stderr, "[producer] Got the IPC handle\n");
396383

397384
producer_socket = producer_connect(port);
@@ -494,23 +481,24 @@ int run_producer(int port, umf_memory_provider_ops_t *provider_ops,
494481
close(producer_socket);
495482

496483
err_PutIPCHandle:
497-
umf_result = umfMemoryProviderPutIPCHandle(provider, IPC_handle);
484+
umf_result = umfPutIPCHandle(IPC_handle);
498485
if (umf_result != UMF_RESULT_SUCCESS) {
499486
fprintf(stderr, "[producer] ERROR: putting the IPC handle failed\n");
500487
}
501488

502489
fprintf(stderr, "[producer] Put the IPC handle\n");
503490

504-
err_free_IPC_handle:
505-
free(IPC_handle);
506491
err_free_IPC_shared_memory:
507-
(void)umfMemoryProviderFree(provider, IPC_shared_memory,
508-
size_IPC_shared_memory);
492+
(void)umfFree(IPC_shared_memory);
493+
509494
err_free_ptr2:
510-
(void)umfMemoryProviderFree(provider, ptr2, ptr2_size);
495+
(void)umfFree(ptr2);
496+
511497
err_free_ptr1:
512-
(void)umfMemoryProviderFree(provider, ptr1, ptr1_size);
498+
(void)umfFree(ptr1);
499+
513500
err_umfMemoryProviderDestroy:
501+
umfPoolDestroy(pool);
514502
umfMemoryProviderDestroy(provider);
515503

516504
if (ret == 0) {

test/common/ipc_common.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88
#ifndef UMF_TEST_IPC_COMMON_H
99
#define UMF_TEST_IPC_COMMON_H
1010

11+
#include <umf/ipc.h>
12+
#include <umf/memory_pool.h>
1113
#include <umf/memory_provider.h>
14+
#include <umf/pools/pool_scalable.h>
1215

1316
// pointer to the function that returns void and accept two int values
1417
typedef void (*memcopy_callback_t)(void *dst, const void *src, size_t size,
@@ -17,11 +20,12 @@ typedef void (*memcopy_callback_t)(void *dst, const void *src, size_t size,
1720
int producer_connect(int port);
1821
int consumer_connect(int port);
1922

20-
int run_producer(int port, umf_memory_provider_ops_t *provider_ops,
21-
void *provider_params, memcopy_callback_t memcopy_callback,
22-
void *memcopy_ctx);
23-
int run_consumer(int port, umf_memory_provider_ops_t *provider_ops,
24-
void *provider_params, memcopy_callback_t memcopy_callback,
25-
void *memcopy_ctx);
23+
int run_producer(int port, umf_memory_pool_ops_t *pool_ops, void *pool_params,
24+
umf_memory_provider_ops_t *provider_ops, void *provider_params,
25+
memcopy_callback_t memcopy_callback, void *memcopy_ctx);
26+
27+
int run_consumer(int port, umf_memory_pool_ops_t *pool_ops, void *pool_params,
28+
umf_memory_provider_ops_t *provider_ops, void *provider_params,
29+
memcopy_callback_t memcopy_callback, void *memcopy_ctx);
2630

2731
#endif // UMF_TEST_IPC_COMMON_H

test/ipc_devdax_prov_consumer.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ int main(int argc, char *argv[]) {
3636
umf_devdax_memory_provider_params_t devdax_params =
3737
umfDevDaxMemoryProviderParamsDefault(path, atol(size));
3838

39-
return run_consumer(port, umfDevDaxMemoryProviderOps(), &devdax_params,
40-
memcopy, NULL);
39+
void *pool_params = NULL;
40+
41+
return run_consumer(port, umfScalablePoolOps(), pool_params,
42+
umfDevDaxMemoryProviderOps(), &devdax_params, memcopy,
43+
NULL);
4144
}

test/ipc_devdax_prov_producer.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ int main(int argc, char *argv[]) {
3636
umf_devdax_memory_provider_params_t devdax_params =
3737
umfDevDaxMemoryProviderParamsDefault(path, atol(size));
3838

39-
return run_producer(port, umfDevDaxMemoryProviderOps(), &devdax_params,
40-
memcopy, NULL);
39+
void *pool_params = NULL;
40+
41+
return run_producer(port, umfScalablePoolOps(), pool_params,
42+
umfDevDaxMemoryProviderOps(), &devdax_params, memcopy,
43+
NULL);
4144
}

test/ipc_file_prov_consumer.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ int main(int argc, char *argv[]) {
4343
file_params.visibility = UMF_MEM_MAP_SHARED;
4444
}
4545

46-
return run_consumer(port, umfFileMemoryProviderOps(), &file_params, memcopy,
46+
void *pool_params = NULL;
47+
48+
return run_consumer(port, umfScalablePoolOps(), pool_params,
49+
umfFileMemoryProviderOps(), &file_params, memcopy,
4750
NULL);
4851
}

test/ipc_file_prov_producer.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ int main(int argc, char *argv[]) {
4343
file_params.visibility = UMF_MEM_MAP_SHARED;
4444
}
4545

46-
return run_producer(port, umfFileMemoryProviderOps(), &file_params, memcopy,
46+
void *pool_params = NULL;
47+
48+
return run_producer(port, umfScalablePoolOps(), pool_params,
49+
umfFileMemoryProviderOps(), &file_params, memcopy,
4750
NULL);
4851
}

test/ipc_os_prov_consumer.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ int main(int argc, char *argv[]) {
2929
os_params.shm_name = argv[2];
3030
}
3131

32-
return run_consumer(port, umfOsMemoryProviderOps(), &os_params, memcopy,
33-
NULL);
32+
void *pool_params = NULL;
33+
34+
return run_consumer(port, umfScalablePoolOps(), pool_params,
35+
umfOsMemoryProviderOps(), &os_params, memcopy, NULL);
3436
}

test/ipc_os_prov_producer.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ int main(int argc, char *argv[]) {
2929
os_params.shm_name = argv[2];
3030
}
3131

32-
return run_producer(port, umfOsMemoryProviderOps(), &os_params, memcopy,
33-
NULL);
32+
void *pool_params = NULL;
33+
34+
return run_producer(port, umfScalablePoolOps(), pool_params,
35+
umfOsMemoryProviderOps(), &os_params, memcopy, NULL);
3436
}

test/providers/ipc_level_zero_prov_consumer.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <stdio.h>
99
#include <stdlib.h>
1010

11+
#include <umf/pools/pool_disjoint.h>
1112
#include <umf/providers/provider_level_zero.h>
1213

1314
#include "ipc_common.h"
@@ -25,6 +26,9 @@ int main(int argc, char *argv[]) {
2526
level_zero_memory_provider_params_t l0_params =
2627
create_level_zero_prov_params(UMF_MEMORY_TYPE_DEVICE);
2728

28-
return run_consumer(port, umfLevelZeroMemoryProviderOps(), &l0_params,
29-
memcopy, &l0_params);
29+
umf_disjoint_pool_params_t pool_params = umfDisjointPoolParamsDefault();
30+
31+
return run_consumer(port, umfDisjointPoolOps(), &pool_params,
32+
umfLevelZeroMemoryProviderOps(), &l0_params, memcopy,
33+
&l0_params);
3034
}

test/providers/ipc_level_zero_prov_producer.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <stdio.h>
99
#include <stdlib.h>
1010

11+
#include <umf/pools/pool_disjoint.h>
1112
#include <umf/providers/provider_level_zero.h>
1213

1314
#include "ipc_common.h"
@@ -25,6 +26,9 @@ int main(int argc, char *argv[]) {
2526
level_zero_memory_provider_params_t l0_params =
2627
create_level_zero_prov_params(UMF_MEMORY_TYPE_DEVICE);
2728

28-
return run_producer(port, umfLevelZeroMemoryProviderOps(), &l0_params,
29-
memcopy, &l0_params);
29+
umf_disjoint_pool_params_t pool_params = umfDisjointPoolParamsDefault();
30+
31+
return run_producer(port, umfDisjointPoolOps(), &pool_params,
32+
umfLevelZeroMemoryProviderOps(), &l0_params, memcopy,
33+
&l0_params);
3034
}

0 commit comments

Comments
 (0)