@@ -421,11 +421,10 @@ static void do_ipc_get_put_benchmark(alloc_t *allocs, size_t num_allocs,
421
421
}
422
422
}
423
423
424
- int create_level_zero_params (level_zero_memory_provider_params_t * params ) {
424
+ int create_level_zero_params (ze_context_handle_t * context ,
425
+ ze_device_handle_t * device ) {
425
426
uint32_t driver_idx = 0 ;
426
427
ze_driver_handle_t driver = NULL ;
427
- ze_context_handle_t context = NULL ;
428
- ze_device_handle_t device = NULL ;
429
428
430
429
int ret = init_level_zero ();
431
430
if (ret != 0 ) {
@@ -439,36 +438,68 @@ int create_level_zero_params(level_zero_memory_provider_params_t *params) {
439
438
return ret ;
440
439
}
441
440
442
- ret = create_context (driver , & context );
441
+ ret = create_context (driver , context );
443
442
if (ret != 0 ) {
444
443
fprintf (stderr , "Failed to create L0 context!\n" );
445
444
return ret ;
446
445
}
447
446
448
- ret = find_gpu_device (driver , & device );
449
- if (ret || device == NULL ) {
447
+ ret = find_gpu_device (driver , device );
448
+ if (ret ) {
450
449
fprintf (stderr , "Cannot find GPU device!\n" );
451
- destroy_context (context );
450
+ destroy_context (* context );
452
451
return ret ;
453
452
}
454
453
455
- params -> level_zero_context_handle = context ;
456
- params -> level_zero_device_handle = device ;
457
- params -> memory_type = UMF_MEMORY_TYPE_DEVICE ;
458
-
459
454
return ret ;
460
455
}
461
456
462
457
UBENCH_EX (ipc , disjoint_pool_with_level_zero_provider ) {
463
458
const size_t BUFFER_SIZE = 100 ;
464
459
const size_t N_BUFFERS = 1000 ;
465
- level_zero_memory_provider_params_t level_zero_params = {0 };
460
+ umf_result_t umf_result ;
461
+ ze_context_handle_t context = NULL ;
462
+ ze_device_handle_t device = NULL ;
463
+ umf_level_zero_memory_provider_params_handle_t level_zero_params = NULL ;
466
464
467
- int ret = create_level_zero_params (& level_zero_params );
465
+ int ret = create_level_zero_params (& context , & device );
468
466
if (ret != 0 ) {
467
+ fprintf (stderr , "error: create_level_zero_params() failed\n" );
469
468
exit (-1 );
470
469
}
471
470
471
+ umf_result = umfLevelZeroMemoryProviderParamsCreate (& level_zero_params );
472
+ if (umf_result != UMF_RESULT_SUCCESS ) {
473
+ fprintf (stderr ,
474
+ "error: umfLevelZeroMemoryProviderParamsCreate() failed\n" );
475
+ goto err_destroy_context ;
476
+ }
477
+
478
+ umf_result =
479
+ umfLevelZeroMemoryProviderParamsSetContext (level_zero_params , context );
480
+ if (umf_result != UMF_RESULT_SUCCESS ) {
481
+ fprintf (stderr ,
482
+ "error: umfLevelZeroMemoryProviderParamsSetContext() failed\n" );
483
+ goto err_destroy_params ;
484
+ }
485
+
486
+ umf_result =
487
+ umfLevelZeroMemoryProviderParamsSetDevice (level_zero_params , device );
488
+ if (umf_result != UMF_RESULT_SUCCESS ) {
489
+ fprintf (stderr ,
490
+ "error: umfLevelZeroMemoryProviderParamsSetDevice() failed\n" );
491
+ goto err_destroy_params ;
492
+ }
493
+
494
+ umf_result = umfLevelZeroMemoryProviderParamsSetMemoryType (
495
+ level_zero_params , UMF_MEMORY_TYPE_DEVICE );
496
+ if (umf_result != UMF_RESULT_SUCCESS ) {
497
+ fprintf (
498
+ stderr ,
499
+ "error: umfLevelZeroMemoryProviderParamsSetMemoryType() failed\n" );
500
+ goto err_destroy_params ;
501
+ }
502
+
472
503
alloc_t * allocs = alloc_array (N_BUFFERS );
473
504
if (allocs == NULL ) {
474
505
fprintf (stderr , "error: alloc_array() failed\n" );
@@ -481,10 +512,9 @@ UBENCH_EX(ipc, disjoint_pool_with_level_zero_provider) {
481
512
goto err_free_allocs ;
482
513
}
483
514
484
- umf_result_t umf_result ;
485
515
umf_memory_provider_handle_t provider = NULL ;
486
516
umf_result = umfMemoryProviderCreate (umfLevelZeroMemoryProviderOps (),
487
- & level_zero_params , & provider );
517
+ level_zero_params , & provider );
488
518
if (umf_result != UMF_RESULT_SUCCESS ) {
489
519
fprintf (stderr , "error: umfMemoryProviderCreate() failed\n" );
490
520
goto err_free_ipc_handles ;
@@ -570,8 +600,11 @@ UBENCH_EX(ipc, disjoint_pool_with_level_zero_provider) {
570
600
err_free_allocs :
571
601
free (allocs );
572
602
603
+ err_destroy_params :
604
+ umfLevelZeroMemoryProviderParamsDestroy (level_zero_params );
605
+
573
606
err_destroy_context :
574
- destroy_context (level_zero_params . level_zero_context_handle );
607
+ destroy_context (context );
575
608
}
576
609
#endif /* (defined UMF_BUILD_LIBUMF_POOL_DISJOINT && defined UMF_BUILD_LEVEL_ZERO_PROVIDER && defined UMF_BUILD_GPU_TESTS) */
577
610
0 commit comments