Skip to content

Commit 63c5902

Browse files
committed
Refactor Level Zero and CUDA tests
1 parent 55dc026 commit 63c5902

File tree

8 files changed

+118
-125
lines changed

8 files changed

+118
-125
lines changed

src/utils/utils_level_zero.cpp

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -344,12 +344,6 @@ int utils_ze_get_drivers(uint32_t *drivers_num_,
344344
ze_driver_handle_t *drivers = NULL;
345345
uint32_t drivers_num = 0;
346346

347-
ret = utils_ze_init_level_zero();
348-
if (ret != 0) {
349-
fprintf(stderr, "utils_ze_init_level_zero() failed!\n");
350-
goto init_fail;
351-
}
352-
353347
ze_result = libze_ops.zeDriverGet(&drivers_num, NULL);
354348
if (ze_result != ZE_RESULT_SUCCESS) {
355349
fprintf(stderr, "zeDriverGet() failed!\n");
@@ -386,7 +380,6 @@ int utils_ze_get_drivers(uint32_t *drivers_num_,
386380
*drivers_ = NULL;
387381
}
388382

389-
init_fail:
390383
return ret;
391384
}
392385

@@ -397,12 +390,6 @@ int utils_ze_get_devices(ze_driver_handle_t driver, uint32_t *devices_num_,
397390
uint32_t devices_num = 0;
398391
ze_device_handle_t *devices = NULL;
399392

400-
ret = utils_ze_init_level_zero();
401-
if (ret != 0) {
402-
fprintf(stderr, "utils_ze_init_level_zero() failed!\n");
403-
goto init_fail;
404-
}
405-
406393
ze_result = libze_ops.zeDeviceGet(driver, &devices_num, NULL);
407394
if (ze_result != ZE_RESULT_SUCCESS) {
408395
fprintf(stderr, "zeDeviceGet() failed!\n");
@@ -438,7 +425,7 @@ int utils_ze_get_devices(ze_driver_handle_t driver, uint32_t *devices_num_,
438425
free(devices);
439426
devices = NULL;
440427
}
441-
init_fail:
428+
442429
return ret;
443430
}
444431

src/utils/utils_level_zero.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
extern "C" {
1717
#endif
1818

19-
int utils_ze_init_level_zero(void);
2019
int utils_ze_init_level_zero(void);
2120

2221
int utils_ze_get_drivers(uint32_t *drivers_num_, ze_driver_handle_t **drivers_);

test/common/ipc_common.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,7 @@ int run_consumer(int port, umf_memory_pool_ops_t *pool_ops, void *pool_params,
127127
umf_result =
128128
umfMemoryProviderCreate(provider_ops, provider_params, &provider);
129129
if (umf_result != UMF_RESULT_SUCCESS) {
130-
fprintf(stderr,
131-
"[consumer] ERROR: creating OS memory provider failed\n");
130+
fprintf(stderr, "[consumer] ERROR: creating memory provider failed\n");
132131
return -1;
133132
}
134133

@@ -347,8 +346,7 @@ int run_producer(int port, umf_memory_pool_ops_t *pool_ops, void *pool_params,
347346
umf_result =
348347
umfMemoryProviderCreate(provider_ops, provider_params, &provider);
349348
if (umf_result != UMF_RESULT_SUCCESS) {
350-
fprintf(stderr,
351-
"[producer] ERROR: creating OS memory provider failed\n");
349+
fprintf(stderr, "[producer] ERROR: creating memory provider failed\n");
352350
return -1;
353351
}
354352

test/ipcFixtures.hpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
class MemoryAccessor {
2323
public:
24+
virtual ~MemoryAccessor() = default;
2425
virtual void fill(void *ptr, size_t size, const void *pattern,
2526
size_t pattern_size) = 0;
2627
virtual void copy(void *dst_ptr, void *src_ptr, size_t size) = 0;
@@ -162,6 +163,7 @@ struct umfIpcTest : umf_test::test,
162163
TEST_P(umfIpcTest, GetIPCHandleSize) {
163164
size_t size = 0;
164165
umf::pool_unique_handle_t pool = makePool();
166+
ASSERT_NE(pool.get(), nullptr);
165167

166168
umf_result_t ret = umfPoolGetIPCHandleSize(pool.get(), &size);
167169
EXPECT_EQ(ret, UMF_RESULT_SUCCESS);
@@ -174,6 +176,8 @@ TEST_P(umfIpcTest, GetIPCHandleSizeInvalidArgs) {
174176
EXPECT_EQ(ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
175177

176178
umf::pool_unique_handle_t pool = makePool();
179+
ASSERT_NE(pool.get(), nullptr);
180+
177181
ret = umfPoolGetIPCHandleSize(pool.get(), nullptr);
178182
EXPECT_EQ(ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
179183
}
@@ -190,6 +194,8 @@ TEST_P(umfIpcTest, GetIPCHandleInvalidArgs) {
190194
EXPECT_EQ(ret, UMF_RESULT_ERROR_INVALID_ARGUMENT);
191195

192196
umf::pool_unique_handle_t pool = makePool();
197+
ASSERT_NE(pool.get(), nullptr);
198+
193199
ptr = umfPoolMalloc(pool.get(), SIZE);
194200
EXPECT_NE(ptr, nullptr);
195201

@@ -213,6 +219,8 @@ TEST_P(umfIpcTest, BasicFlow) {
213219
constexpr size_t SIZE = 100;
214220
std::vector<int> expected_data(SIZE);
215221
umf::pool_unique_handle_t pool = makePool();
222+
ASSERT_NE(pool.get(), nullptr);
223+
216224
int *ptr = (int *)umfPoolMalloc(pool.get(), SIZE * sizeof(int));
217225
EXPECT_NE(ptr, nullptr);
218226

@@ -283,6 +291,7 @@ TEST_P(umfIpcTest, GetPoolByOpenedHandle) {
283291
void *openedPtrs[NUM_POOLS][NUM_ALLOCS];
284292
std::vector<umf::pool_unique_handle_t> pools_to_open;
285293
umf::pool_unique_handle_t pool = makePool();
294+
ASSERT_NE(pool.get(), nullptr);
286295

287296
for (size_t i = 0; i < NUM_POOLS; ++i) {
288297
pools_to_open.push_back(makePool());
@@ -341,6 +350,8 @@ TEST_P(umfIpcTest, GetPoolByOpenedHandle) {
341350
TEST_P(umfIpcTest, AllocFreeAllocTest) {
342351
constexpr size_t SIZE = 64 * 1024;
343352
umf::pool_unique_handle_t pool = makePool();
353+
ASSERT_NE(pool.get(), nullptr);
354+
344355
umf_ipc_handler_handle_t ipcHandler = nullptr;
345356

346357
umf_result_t ret = umfPoolGetIPCHandler(pool.get(), &ipcHandler);
@@ -400,7 +411,9 @@ TEST_P(umfIpcTest, openInTwoIpcHandlers) {
400411
constexpr size_t SIZE = 100;
401412
std::vector<int> expected_data(SIZE);
402413
umf::pool_unique_handle_t pool1 = makePool();
414+
ASSERT_NE(pool1.get(), nullptr);
403415
umf::pool_unique_handle_t pool2 = makePool();
416+
ASSERT_NE(pool2.get(), nullptr);
404417
umf_ipc_handler_handle_t ipcHandler1 = nullptr;
405418
umf_ipc_handler_handle_t ipcHandler2 = nullptr;
406419

@@ -465,6 +478,7 @@ TEST_P(umfIpcTest, ConcurrentGetPutHandles) {
465478
constexpr size_t ALLOC_SIZE = 100;
466479
constexpr size_t NUM_POINTERS = 100;
467480
umf::pool_unique_handle_t pool = makePool();
481+
ASSERT_NE(pool.get(), nullptr);
468482

469483
for (size_t i = 0; i < NUM_POINTERS; ++i) {
470484
void *ptr = umfPoolMalloc(pool.get(), ALLOC_SIZE);
@@ -514,6 +528,7 @@ TEST_P(umfIpcTest, ConcurrentOpenCloseHandles) {
514528
constexpr size_t ALLOC_SIZE = 100;
515529
constexpr size_t NUM_POINTERS = 100;
516530
umf::pool_unique_handle_t pool = makePool();
531+
ASSERT_NE(pool.get(), nullptr);
517532

518533
for (size_t i = 0; i < NUM_POINTERS; ++i) {
519534
void *ptr = umfPoolMalloc(pool.get(), ALLOC_SIZE);

test/providers/ipc_level_zero_prov_consumer.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2024 Intel Corporation
2+
* Copyright (C) 2024-2025 Intel Corporation
33
*
44
* Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT.
55
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
@@ -27,7 +27,13 @@ int main(int argc, char *argv[]) {
2727
ze_device_handle_t hDevice = NULL;
2828
ze_context_handle_t hContext = NULL;
2929

30-
int ret = utils_ze_find_driver_with_gpu(&driver_idx, &hDriver);
30+
int ret = utils_ze_init_level_zero();
31+
if (ret != 0) {
32+
fprintf(stderr, "utils_ze_init_level_zero() failed!\n");
33+
return -1;
34+
}
35+
36+
ret = utils_ze_find_driver_with_gpu(&driver_idx, &hDriver);
3137
if (ret != 0 || hDriver == NULL) {
3238
fprintf(stderr, "utils_ze_find_driver_with_gpu() failed!\n");
3339
return -1;

test/providers/ipc_level_zero_prov_producer.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2024 Intel Corporation
2+
* Copyright (C) 2024-2025 Intel Corporation
33
*
44
* Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT.
55
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
@@ -27,7 +27,13 @@ int main(int argc, char *argv[]) {
2727
ze_device_handle_t hDevice = NULL;
2828
ze_context_handle_t hContext = NULL;
2929

30-
int ret = utils_ze_find_driver_with_gpu(&driver_idx, &hDriver);
30+
int ret = utils_ze_init_level_zero();
31+
if (ret != 0) {
32+
fprintf(stderr, "utils_ze_init_level_zero() failed!\n");
33+
return -1;
34+
}
35+
36+
ret = utils_ze_find_driver_with_gpu(&driver_idx, &hDriver);
3137
if (ret != 0 || hDriver == NULL) {
3238
fprintf(stderr, "utils_ze_find_driver_with_gpu() failed!\n");
3339
return -1;

test/providers/provider_cuda.cpp

Lines changed: 45 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ create_cuda_prov_params(CUcontext context, CUdevice device,
8383
return params;
8484
}
8585

86+
umf_result_t destroyCuParams(void *params) {
87+
return umfCUDAMemoryProviderParamsDestroy(
88+
(umf_cuda_memory_provider_params_handle_t)params);
89+
}
90+
8691
class CUDAMemoryAccessor : public MemoryAccessor {
8792
public:
8893
CUDAMemoryAccessor(CUcontext hContext, CUdevice hDevice)
@@ -114,47 +119,62 @@ class CUDAMemoryAccessor : public MemoryAccessor {
114119
CUcontext hContext_;
115120
};
116121

117-
typedef void *(*pfnProviderParamsCreate)();
118-
typedef umf_result_t (*pfnProviderParamsDestroy)(void *);
119-
120-
using CUDAProviderTestParams =
121-
std::tuple<pfnProviderParamsCreate, pfnProviderParamsDestroy, CUcontext,
122-
umf_usm_memory_type_t, MemoryAccessor *>;
123-
124122
struct umfCUDAProviderTest
125123
: umf_test::test,
126-
::testing::WithParamInterface<CUDAProviderTestParams> {
124+
::testing::WithParamInterface<umf_usm_memory_type_t> {
127125

128126
void SetUp() override {
129127
test::SetUp();
130128

131-
auto [params_create, params_destroy, cu_context, memory_type,
132-
accessor] = this->GetParam();
129+
umf_usm_memory_type_t memory_type = this->GetParam();
133130

134131
params = nullptr;
135-
if (params_create) {
136-
params = (umf_cuda_memory_provider_params_handle_t)params_create();
132+
memAccessor = nullptr;
133+
expected_context = cudaTestHelper.get_test_context();
134+
135+
ASSERT_NE(expected_context, nullptr);
136+
137+
switch (memory_type) {
138+
case UMF_MEMORY_TYPE_DEVICE:
139+
params = create_cuda_prov_params(cudaTestHelper.get_test_context(),
140+
cudaTestHelper.get_test_device(),
141+
memory_type);
142+
memAccessor = std::make_unique<CUDAMemoryAccessor>(
143+
cudaTestHelper.get_test_context(),
144+
cudaTestHelper.get_test_device());
145+
break;
146+
case UMF_MEMORY_TYPE_SHARED:
147+
params = create_cuda_prov_params(cudaTestHelper.get_test_context(),
148+
cudaTestHelper.get_test_device(),
149+
memory_type);
150+
memAccessor = std::make_unique<HostMemoryAccessor>();
151+
break;
152+
case UMF_MEMORY_TYPE_HOST:
153+
params = create_cuda_prov_params(cudaTestHelper.get_test_context(),
154+
cudaTestHelper.get_test_device(),
155+
memory_type);
156+
memAccessor = std::make_unique<HostMemoryAccessor>();
157+
break;
158+
case UMF_MEMORY_TYPE_UNKNOWN:
159+
break;
137160
}
138-
paramsDestroy = params_destroy;
139161

140-
memAccessor = accessor;
141-
expected_context = cu_context;
142162
expected_memory_type = memory_type;
143163
}
144164

145165
void TearDown() override {
146-
if (paramsDestroy) {
147-
paramsDestroy(params);
166+
if (params) {
167+
destroyCuParams(params);
148168
}
149169

150170
test::TearDown();
151171
}
152172

153-
umf_cuda_memory_provider_params_handle_t params;
154-
pfnProviderParamsDestroy paramsDestroy = nullptr;
173+
CUDATestHelper cudaTestHelper;
174+
umf_cuda_memory_provider_params_handle_t params = nullptr;
155175

156-
MemoryAccessor *memAccessor = nullptr;
157-
CUcontext expected_context;
176+
std::unique_ptr<MemoryAccessor> memAccessor = nullptr;
177+
CUcontext expected_context = nullptr;
158178
umf_usm_memory_type_t expected_memory_type;
159179
};
160180

@@ -391,44 +411,10 @@ TEST_P(umfCUDAProviderTest, multiContext) {
391411

392412
// TODO add tests that mixes CUDA Memory Provider and Disjoint Pool
393413

394-
CUDATestHelper cudaTestHelper;
395-
396-
void *createCuParamsDeviceMemory() {
397-
return create_cuda_prov_params(cudaTestHelper.get_test_context(),
398-
cudaTestHelper.get_test_device(),
399-
UMF_MEMORY_TYPE_DEVICE);
400-
}
401-
void *createCuParamsSharedMemory() {
402-
return create_cuda_prov_params(cudaTestHelper.get_test_context(),
403-
cudaTestHelper.get_test_device(),
404-
UMF_MEMORY_TYPE_SHARED);
405-
}
406-
void *createCuParamsHostMemory() {
407-
return create_cuda_prov_params(cudaTestHelper.get_test_context(),
408-
cudaTestHelper.get_test_device(),
409-
UMF_MEMORY_TYPE_HOST);
410-
}
411-
412-
umf_result_t destroyCuParams(void *params) {
413-
return umfCUDAMemoryProviderParamsDestroy(
414-
(umf_cuda_memory_provider_params_handle_t)params);
415-
}
416-
417-
CUDAMemoryAccessor cuAccessor(cudaTestHelper.get_test_context(),
418-
cudaTestHelper.get_test_device());
419-
HostMemoryAccessor hostAccessor;
420-
INSTANTIATE_TEST_SUITE_P(
421-
umfCUDAProviderTestSuite, umfCUDAProviderTest,
422-
::testing::Values(
423-
CUDAProviderTestParams{createCuParamsDeviceMemory, destroyCuParams,
424-
cudaTestHelper.get_test_context(),
425-
UMF_MEMORY_TYPE_DEVICE, &cuAccessor},
426-
CUDAProviderTestParams{createCuParamsSharedMemory, destroyCuParams,
427-
cudaTestHelper.get_test_context(),
428-
UMF_MEMORY_TYPE_SHARED, &hostAccessor},
429-
CUDAProviderTestParams{createCuParamsHostMemory, destroyCuParams,
430-
cudaTestHelper.get_test_context(),
431-
UMF_MEMORY_TYPE_HOST, &hostAccessor}));
414+
INSTANTIATE_TEST_SUITE_P(umfCUDAProviderTestSuite, umfCUDAProviderTest,
415+
::testing::Values(UMF_MEMORY_TYPE_DEVICE,
416+
UMF_MEMORY_TYPE_SHARED,
417+
UMF_MEMORY_TYPE_HOST));
432418

433419
// TODO: add IPC API
434420
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(umfIpcTest);

0 commit comments

Comments
 (0)