@@ -42,7 +42,13 @@ class LevelZeroTestHelper {
4242LevelZeroTestHelper::LevelZeroTestHelper () {
4343 uint32_t driver_idx = 0 ;
4444
45- int ret = utils_ze_find_driver_with_gpu (&driver_idx, &hDriver_);
45+ int ret = utils_ze_init_level_zero ();
46+ if (ret != 0 ) {
47+ fprintf (stderr, " utils_ze_init_level_zero() failed!\n " );
48+ return ;
49+ }
50+
51+ ret = utils_ze_find_driver_with_gpu (&driver_idx, &hDriver_);
4652 if (ret != 0 || hDriver_ == NULL ) {
4753 fprintf (stderr, " utils_ze_find_driver_with_gpu() failed!\n " );
4854 return ;
@@ -93,6 +99,11 @@ create_level_zero_prov_params(ze_context_handle_t context,
9399 return params;
94100}
95101
102+ umf_result_t destroyL0Params (void *params) {
103+ return umfLevelZeroMemoryProviderParamsDestroy (
104+ static_cast <umf_level_zero_memory_provider_params_handle_t >(params));
105+ }
106+
96107struct LevelZeroProviderInit
97108 : public test,
98109 public ::testing::WithParamInterface<umf_usm_memory_type_t > {};
@@ -225,44 +236,43 @@ class LevelZeroMemoryAccessor : public MemoryAccessor {
225236 ze_context_handle_t hContext_;
226237};
227238
228- typedef void *(*pfnProviderParamsCreate)();
229- typedef umf_result_t (*pfnProviderParamsDestroy)(void *);
230-
231- using LevelZeroProviderTestParams =
232- std::tuple<pfnProviderParamsCreate, pfnProviderParamsDestroy,
233- ze_context_handle_t , umf_usm_memory_type_t , MemoryAccessor *>;
234-
235239struct umfLevelZeroProviderTest
236240 : umf_test::test,
237- ::testing::WithParamInterface<LevelZeroProviderTestParams > {
241+ ::testing::WithParamInterface<umf_usm_memory_type_t > {
238242
239243 void SetUp () override {
240244 test::SetUp ();
241245
242- auto [params_create, params_destroy, ze_context, memory_type,
243- accessor] = this ->GetParam ();
246+ umf_usm_memory_type_t memory_type = this ->GetParam ();
244247
245248 params = nullptr ;
246- if (params_create) {
247- params =
248- (umf_level_zero_memory_provider_params_handle_t )params_create ();
249- }
250- paramsDestroy = params_destroy;
251-
252- memAccessor = accessor;
253- hContext = ze_context;
249+ memAccessor = nullptr ;
250+ hContext = l0TestHelper.get_test_context ();
254251
255252 ASSERT_NE (hContext, nullptr );
256253
257254 switch (memory_type) {
258255 case UMF_MEMORY_TYPE_DEVICE:
259256 zeMemoryTypeExpected = ZE_MEMORY_TYPE_DEVICE;
257+ params = create_level_zero_prov_params (
258+ l0TestHelper.get_test_context (), l0TestHelper.get_test_device (),
259+ memory_type);
260+ memAccessor = std::make_unique<LevelZeroMemoryAccessor>(
261+ l0TestHelper.get_test_context (),
262+ l0TestHelper.get_test_device ());
260263 break ;
261264 case UMF_MEMORY_TYPE_SHARED:
262265 zeMemoryTypeExpected = ZE_MEMORY_TYPE_SHARED;
266+ params = create_level_zero_prov_params (
267+ l0TestHelper.get_test_context (), l0TestHelper.get_test_device (),
268+ memory_type);
269+ memAccessor = std::make_unique<HostMemoryAccessor>();
263270 break ;
264271 case UMF_MEMORY_TYPE_HOST:
265272 zeMemoryTypeExpected = ZE_MEMORY_TYPE_HOST;
273+ params = create_level_zero_prov_params (
274+ l0TestHelper.get_test_context (), nullptr , memory_type);
275+ memAccessor = std::make_unique<HostMemoryAccessor>();
266276 break ;
267277 case UMF_MEMORY_TYPE_UNKNOWN:
268278 zeMemoryTypeExpected = ZE_MEMORY_TYPE_UNKNOWN;
@@ -273,17 +283,17 @@ struct umfLevelZeroProviderTest
273283 }
274284
275285 void TearDown () override {
276- if (paramsDestroy ) {
277- paramsDestroy (params);
286+ if (params ) {
287+ destroyL0Params (params);
278288 }
279289
280290 test::TearDown ();
281291 }
282292
283- umf_level_zero_memory_provider_params_handle_t params ;
284- pfnProviderParamsDestroy paramsDestroy = nullptr ;
293+ LevelZeroTestHelper l0TestHelper ;
294+ umf_level_zero_memory_provider_params_handle_t params = nullptr ;
285295
286- MemoryAccessor * memAccessor = nullptr ;
296+ std::unique_ptr< MemoryAccessor> memAccessor = nullptr ;
287297 ze_context_handle_t hContext = nullptr ;
288298 ze_memory_type_t zeMemoryTypeExpected = ZE_MEMORY_TYPE_UNKNOWN;
289299};
@@ -487,29 +497,15 @@ void *createL0ParamsHostMemory() {
487497 nullptr , UMF_MEMORY_TYPE_HOST);
488498}
489499
490- umf_result_t destroyL0Params (void *params) {
491- return umfLevelZeroMemoryProviderParamsDestroy (
492- static_cast <umf_level_zero_memory_provider_params_handle_t >(params));
493- }
494-
495500LevelZeroMemoryAccessor
496501 l0Accessor ((ze_context_handle_t )l0TestHelper.get_test_context(),
497502 (ze_device_handle_t )l0TestHelper.get_test_device());
498503
499- HostMemoryAccessor hostAccessor;
500-
501- INSTANTIATE_TEST_SUITE_P (
502- umfLevelZeroProviderTestSuite, umfLevelZeroProviderTest,
503- ::testing::Values (
504- LevelZeroProviderTestParams{createL0ParamsDeviceMemory, destroyL0Params,
505- l0TestHelper.get_test_context (),
506- UMF_MEMORY_TYPE_DEVICE, &l0Accessor},
507- LevelZeroProviderTestParams{createL0ParamsSharedMemory, destroyL0Params,
508- l0TestHelper.get_test_context (),
509- UMF_MEMORY_TYPE_SHARED, &hostAccessor},
510- LevelZeroProviderTestParams{createL0ParamsHostMemory, destroyL0Params,
511- l0TestHelper.get_test_context (),
512- UMF_MEMORY_TYPE_HOST, &hostAccessor}));
504+ INSTANTIATE_TEST_SUITE_P (umfLevelZeroProviderTestSuite,
505+ umfLevelZeroProviderTest,
506+ ::testing::Values (UMF_MEMORY_TYPE_DEVICE,
507+ UMF_MEMORY_TYPE_SHARED,
508+ UMF_MEMORY_TYPE_HOST));
513509
514510// TODO: it looks like there is some problem with IPC implementation in Level
515511// Zero on windows. Issue: #494
0 commit comments