@@ -421,11 +421,10 @@ static void do_ipc_get_put_benchmark(alloc_t *allocs, size_t num_allocs,
421421 }
422422}
423423
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 ) {
425426 uint32_t driver_idx = 0 ;
426427 ze_driver_handle_t driver = NULL ;
427- ze_context_handle_t context = NULL ;
428- ze_device_handle_t device = NULL ;
429428
430429 int ret = init_level_zero ();
431430 if (ret != 0 ) {
@@ -439,36 +438,68 @@ int create_level_zero_params(level_zero_memory_provider_params_t *params) {
439438 return ret ;
440439 }
441440
442- ret = create_context (driver , & context );
441+ ret = create_context (driver , context );
443442 if (ret != 0 ) {
444443 fprintf (stderr , "Failed to create L0 context!\n" );
445444 return ret ;
446445 }
447446
448- ret = find_gpu_device (driver , & device );
449- if (ret || device == NULL ) {
447+ ret = find_gpu_device (driver , device );
448+ if (ret ) {
450449 fprintf (stderr , "Cannot find GPU device!\n" );
451- destroy_context (context );
450+ destroy_context (* context );
452451 return ret ;
453452 }
454453
455- params -> level_zero_context_handle = context ;
456- params -> level_zero_device_handle = device ;
457- params -> memory_type = UMF_MEMORY_TYPE_DEVICE ;
458-
459454 return ret ;
460455}
461456
462457UBENCH_EX (ipc , disjoint_pool_with_level_zero_provider ) {
463458 const size_t BUFFER_SIZE = 100 ;
464459 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 ;
466464
467- int ret = create_level_zero_params (& level_zero_params );
465+ int ret = create_level_zero_params (& context , & device );
468466 if (ret != 0 ) {
467+ fprintf (stderr , "error: create_level_zero_params() failed\n" );
469468 exit (-1 );
470469 }
471470
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+
472503 alloc_t * allocs = alloc_array (N_BUFFERS );
473504 if (allocs == NULL ) {
474505 fprintf (stderr , "error: alloc_array() failed\n" );
@@ -481,10 +512,9 @@ UBENCH_EX(ipc, disjoint_pool_with_level_zero_provider) {
481512 goto err_free_allocs ;
482513 }
483514
484- umf_result_t umf_result ;
485515 umf_memory_provider_handle_t provider = NULL ;
486516 umf_result = umfMemoryProviderCreate (umfLevelZeroMemoryProviderOps (),
487- & level_zero_params , & provider );
517+ level_zero_params , & provider );
488518 if (umf_result != UMF_RESULT_SUCCESS ) {
489519 fprintf (stderr , "error: umfMemoryProviderCreate() failed\n" );
490520 goto err_free_ipc_handles ;
@@ -570,8 +600,11 @@ UBENCH_EX(ipc, disjoint_pool_with_level_zero_provider) {
570600err_free_allocs :
571601 free (allocs );
572602
603+ err_destroy_params :
604+ umfLevelZeroMemoryProviderParamsDestroy (level_zero_params );
605+
573606err_destroy_context :
574- destroy_context (level_zero_params . level_zero_context_handle );
607+ destroy_context (context );
575608}
576609#endif /* (defined UMF_BUILD_LIBUMF_POOL_DISJOINT && defined UMF_BUILD_LEVEL_ZERO_PROVIDER && defined UMF_BUILD_GPU_TESTS) */
577610
0 commit comments