Skip to content

Commit 4b18f52

Browse files
Merge pull request #945 from ldorau/Move_level_zero_helpers_to_utils
Move level zero helpers to utils and use it in benchmarks
2 parents 3f2d08b + 841cd4b commit 4b18f52

16 files changed

+150
-132
lines changed

benchmark/CMakeLists.txt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,8 @@ function(add_umf_benchmark)
4242
LIBS ${BENCH_LIBS})
4343

4444
target_include_directories(
45-
${BENCH_NAME}
46-
PRIVATE ${UMF_CMAKE_SOURCE_DIR}/include
47-
${UMF_CMAKE_SOURCE_DIR}/src/utils
48-
${UMF_CMAKE_SOURCE_DIR}/test/common
49-
${UMF_CMAKE_SOURCE_DIR}/examples/common)
45+
${BENCH_NAME} PRIVATE ${UMF_CMAKE_SOURCE_DIR}/include
46+
${UMF_CMAKE_SOURCE_DIR}/src/utils)
5047

5148
target_link_directories(${BENCH_NAME} PRIVATE ${ARG_LIBDIRS})
5249

@@ -84,6 +81,9 @@ function(add_umf_benchmark)
8481
if(UMF_BUILD_LEVEL_ZERO_PROVIDER)
8582
target_compile_definitions(${BENCH_NAME}
8683
PRIVATE UMF_BUILD_LEVEL_ZERO_PROVIDER=1)
84+
target_include_directories(
85+
${BENCH_NAME} PRIVATE ${UMF_CMAKE_SOURCE_DIR}/test/common
86+
${LEVEL_ZERO_INCLUDE_DIRS})
8787
endif()
8888
if(UMF_BUILD_CUDA_PROVIDER)
8989
target_compile_definitions(${BENCH_NAME}
@@ -108,6 +108,7 @@ if(LINUX)
108108
set(LIBS_OPTIONAL ${LIBS_OPTIONAL} m)
109109
endif()
110110
if(UMF_BUILD_GPU_TESTS AND UMF_BUILD_LEVEL_ZERO_PROVIDER)
111+
set(SRCS_OPTIONAL ${SRCS_OPTIONAL} ../src/utils/utils_level_zero.cpp)
111112
set(LIBS_OPTIONAL ${LIBS_OPTIONAL} ze_loader)
112113
# TODO add CUDA
113114
endif()
@@ -116,7 +117,7 @@ endif()
116117

117118
add_umf_benchmark(
118119
NAME ubench
119-
SRCS ubench.c
120+
SRCS ubench.c ${SRCS_OPTIONAL}
120121
LIBS ${LIBS_OPTIONAL}
121122
LIBDIRS ${LIB_DIRS})
122123

benchmark/ubench.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -450,28 +450,28 @@ int create_level_zero_params(ze_context_handle_t *context,
450450
uint32_t driver_idx = 0;
451451
ze_driver_handle_t driver = NULL;
452452

453-
int ret = init_level_zero();
453+
int ret = utils_ze_init_level_zero();
454454
if (ret != 0) {
455455
fprintf(stderr, "Failed to init Level 0!\n");
456456
return ret;
457457
}
458458

459-
ret = find_driver_with_gpu(&driver_idx, &driver);
459+
ret = utils_ze_find_driver_with_gpu(&driver_idx, &driver);
460460
if (ret || driver == NULL) {
461461
fprintf(stderr, "Cannot find L0 driver with GPU device!\n");
462462
return ret;
463463
}
464464

465-
ret = create_context(driver, context);
465+
ret = utils_ze_create_context(driver, context);
466466
if (ret != 0) {
467467
fprintf(stderr, "Failed to create L0 context!\n");
468468
return ret;
469469
}
470470

471-
ret = find_gpu_device(driver, device);
471+
ret = utils_ze_find_gpu_device(driver, device);
472472
if (ret) {
473473
fprintf(stderr, "Cannot find GPU device!\n");
474-
destroy_context(*context);
474+
utils_ze_destroy_context(*context);
475475
return ret;
476476
}
477477

@@ -628,7 +628,7 @@ UBENCH_EX(ipc, disjoint_pool_with_level_zero_provider) {
628628
umfLevelZeroMemoryProviderParamsDestroy(level_zero_params);
629629

630630
err_destroy_context:
631-
destroy_context(context);
631+
utils_ze_destroy_context(context);
632632
}
633633
#endif /* (defined UMF_BUILD_LIBUMF_POOL_DISJOINT && defined UMF_BUILD_LEVEL_ZERO_PROVIDER && defined UMF_BUILD_GPU_TESTS) */
634634

File renamed without changes.

examples/ipc_level_zero/ipc_level_zero.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#include "umf/pools/pool_disjoint.h"
1515
#include "umf/providers/provider_level_zero.h"
1616

17-
#include "utils_level_zero.h"
17+
#include "examples_level_zero.h"
1818

1919
int create_level_zero_pool(ze_context_handle_t context,
2020
ze_device_handle_t device,

examples/level_zero_shared_memory/level_zero_shared_memory.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#include <umf/pools/pool_disjoint.h>
1212
#include <umf/providers/provider_level_zero.h>
1313

14-
#include "utils_level_zero.h"
14+
#include "examples_level_zero.h"
1515

1616
int main(void) {
1717
// A result object for storing UMF API result status

examples/memspace_hmat/memspace_hmat.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#include <stdio.h>
1616
#include <string.h>
1717

18-
#include "utils_examples.h"
18+
#include "examples_utils.h"
1919

2020
// Function to create a memory provider which allocates memory from the specified NUMA node
2121
int createMemoryProvider(umf_memory_provider_handle_t *hProvider,

examples/memspace_numa/memspace_numa.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#include <stdio.h>
1616
#include <string.h>
1717

18-
#include "utils_examples.h"
18+
#include "examples_utils.h"
1919

2020
// Function to create a memory provider which allocates memory from the specified NUMA node
2121
// by using umfMemspaceCreateFromNumaArray

test/providers/level_zero_helpers.cpp renamed to src/utils/utils_level_zero.cpp

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66
*/
77

8-
#include "level_zero_helpers.h"
8+
#include "utils_level_zero.h"
99

1010
#include <memory>
1111
#include <stdlib.h>
@@ -297,7 +297,7 @@ int InitLevelZeroOps() {
297297
}
298298
#endif // USE_DLOPEN
299299

300-
static int init_level_zero_lib(void) {
300+
static int utils_ze_init_level_zero_lib(void) {
301301
ze_init_flag_t flags = ZE_INIT_FLAG_GPU_ONLY;
302302
ze_result_t result = libze_ops.zeInit(flags);
303303
if (result != ZE_RESULT_SUCCESS) {
@@ -306,31 +306,33 @@ static int init_level_zero_lib(void) {
306306
return 0;
307307
}
308308

309-
UTIL_ONCE_FLAG level_zero_init_flag;
310-
int InitResult;
311-
void init_level_zero_once() {
309+
static UTIL_ONCE_FLAG level_zero_init_flag = UTIL_ONCE_FLAG_INIT;
310+
static int InitResult;
311+
312+
static void utils_ze_init_level_zero_once(void) {
312313
InitResult = InitLevelZeroOps();
313314
if (InitResult != 0) {
314315
return;
315316
}
316-
InitResult = init_level_zero_lib();
317+
InitResult = utils_ze_init_level_zero_lib();
317318
}
318319

319-
int init_level_zero() {
320-
utils_init_once(&level_zero_init_flag, init_level_zero_once);
320+
int utils_ze_init_level_zero(void) {
321+
utils_init_once(&level_zero_init_flag, utils_ze_init_level_zero_once);
321322

322323
return InitResult;
323324
}
324325

325-
int get_drivers(uint32_t *drivers_num_, ze_driver_handle_t **drivers_) {
326+
int utils_ze_get_drivers(uint32_t *drivers_num_,
327+
ze_driver_handle_t **drivers_) {
326328
int ret = 0;
327329
ze_result_t ze_result;
328330
ze_driver_handle_t *drivers = NULL;
329331
uint32_t drivers_num = 0;
330332

331-
ret = init_level_zero();
333+
ret = utils_ze_init_level_zero();
332334
if (ret != 0) {
333-
fprintf(stderr, "init_level_zero() failed!\n");
335+
fprintf(stderr, "utils_ze_init_level_zero() failed!\n");
334336
goto init_fail;
335337
}
336338

@@ -374,16 +376,16 @@ int get_drivers(uint32_t *drivers_num_, ze_driver_handle_t **drivers_) {
374376
return ret;
375377
}
376378

377-
int get_devices(ze_driver_handle_t driver, uint32_t *devices_num_,
378-
ze_device_handle_t **devices_) {
379+
int utils_ze_get_devices(ze_driver_handle_t driver, uint32_t *devices_num_,
380+
ze_device_handle_t **devices_) {
379381
ze_result_t ze_result;
380382
int ret = 0;
381383
uint32_t devices_num = 0;
382384
ze_device_handle_t *devices = NULL;
383385

384-
ret = init_level_zero();
386+
ret = utils_ze_init_level_zero();
385387
if (ret != 0) {
386-
fprintf(stderr, "init_level_zero() failed!\n");
388+
fprintf(stderr, "utils_ze_init_level_zero() failed!\n");
387389
goto init_fail;
388390
}
389391

@@ -426,15 +428,16 @@ int get_devices(ze_driver_handle_t driver, uint32_t *devices_num_,
426428
return ret;
427429
}
428430

429-
int find_driver_with_gpu(uint32_t *driver_idx, ze_driver_handle_t *driver_) {
431+
int utils_ze_find_driver_with_gpu(uint32_t *driver_idx,
432+
ze_driver_handle_t *driver_) {
430433
int ret = 0;
431434
ze_result_t ze_result;
432435
uint32_t drivers_num = 0;
433436
ze_device_handle_t *devices = NULL;
434437
ze_driver_handle_t *drivers = NULL;
435438
ze_driver_handle_t driver_with_gpus = NULL;
436439

437-
ret = get_drivers(&drivers_num, &drivers);
440+
ret = utils_ze_get_drivers(&drivers_num, &drivers);
438441
if (ret) {
439442
goto fn_fail;
440443
}
@@ -444,7 +447,7 @@ int find_driver_with_gpu(uint32_t *driver_idx, ze_driver_handle_t *driver_) {
444447
uint32_t devices_num = 0;
445448
ze_driver_handle_t driver = drivers[i];
446449

447-
ret = get_devices(driver, &devices_num, &devices);
450+
ret = utils_ze_get_devices(driver, &devices_num, &devices);
448451
if (ret) {
449452
goto fn_fail;
450453
}
@@ -493,13 +496,14 @@ int find_driver_with_gpu(uint32_t *driver_idx, ze_driver_handle_t *driver_) {
493496
return ret;
494497
}
495498

496-
int find_gpu_device(ze_driver_handle_t driver, ze_device_handle_t *device_) {
499+
int utils_ze_find_gpu_device(ze_driver_handle_t driver,
500+
ze_device_handle_t *device_) {
497501
int ret = -1;
498502
uint32_t devices_num = 0;
499503
ze_device_handle_t *devices = NULL;
500504
ze_device_handle_t device;
501505

502-
ret = get_devices(driver, &devices_num, &devices);
506+
ret = utils_ze_get_devices(driver, &devices_num, &devices);
503507
if (ret) {
504508
return ret;
505509
}
@@ -531,9 +535,9 @@ int find_gpu_device(ze_driver_handle_t driver, ze_device_handle_t *device_) {
531535
return ret;
532536
}
533537

534-
int level_zero_fill(ze_context_handle_t context, ze_device_handle_t device,
535-
void *ptr, size_t size, const void *pattern,
536-
size_t pattern_size) {
538+
int utils_ze_level_zero_fill(ze_context_handle_t context,
539+
ze_device_handle_t device, void *ptr, size_t size,
540+
const void *pattern, size_t pattern_size) {
537541
int ret = 0;
538542

539543
ze_command_queue_desc_t commandQueueDesc = {
@@ -617,8 +621,9 @@ int level_zero_fill(ze_context_handle_t context, ze_device_handle_t device,
617621
return ret;
618622
}
619623

620-
int level_zero_copy(ze_context_handle_t context, ze_device_handle_t device,
621-
void *dst_ptr, const void *src_ptr, size_t size) {
624+
int utils_ze_level_zero_copy(ze_context_handle_t context,
625+
ze_device_handle_t device, void *dst_ptr,
626+
const void *src_ptr, size_t size) {
622627
int ret = 0;
623628
ze_command_queue_desc_t commandQueueDesc = {
624629
ZE_STRUCTURE_TYPE_COMMAND_QUEUE_DESC,
@@ -700,7 +705,8 @@ int level_zero_copy(ze_context_handle_t context, ze_device_handle_t device,
700705
return ret;
701706
}
702707

703-
int create_context(ze_driver_handle_t driver, ze_context_handle_t *context) {
708+
int utils_ze_create_context(ze_driver_handle_t driver,
709+
ze_context_handle_t *context) {
704710
ze_result_t ze_result;
705711
ze_context_desc_t ctxtDesc;
706712
ctxtDesc.stype = ZE_STRUCTURE_TYPE_CONTEXT_DESC;
@@ -716,7 +722,7 @@ int create_context(ze_driver_handle_t driver, ze_context_handle_t *context) {
716722
return 0;
717723
}
718724

719-
int destroy_context(ze_context_handle_t context) {
725+
int utils_ze_destroy_context(ze_context_handle_t context) {
720726
ze_result_t ze_result;
721727
ze_result = libze_ops.zeContextDestroy(context);
722728
if (ze_result != ZE_RESULT_SUCCESS) {
@@ -727,7 +733,7 @@ int destroy_context(ze_context_handle_t context) {
727733
return 0;
728734
}
729735

730-
ze_memory_type_t get_mem_type(ze_context_handle_t context, void *ptr) {
736+
ze_memory_type_t utils_ze_get_mem_type(ze_context_handle_t context, void *ptr) {
731737
ze_device_handle_t device = NULL;
732738
ze_memory_allocation_properties_t alloc_props;
733739
alloc_props.stype = ZE_STRUCTURE_TYPE_MEMORY_ALLOCATION_PROPERTIES;

src/utils/utils_level_zero.h

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
* Copyright (C) 2024 Intel Corporation
3+
*
4+
* Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT.
5+
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
*/
7+
8+
#ifndef UMF_UTILS_LEVEL_ZERO_H
9+
#define UMF_UTILS_LEVEL_ZERO_H
10+
11+
#include <umf/providers/provider_level_zero.h>
12+
13+
#include "ze_api.h"
14+
15+
#ifdef __cplusplus
16+
extern "C" {
17+
#endif
18+
19+
int utils_ze_init_level_zero(void);
20+
int utils_ze_init_level_zero(void);
21+
22+
int utils_ze_get_drivers(uint32_t *drivers_num_, ze_driver_handle_t **drivers_);
23+
24+
int utils_ze_get_devices(ze_driver_handle_t driver, uint32_t *devices_num_,
25+
ze_device_handle_t **devices_);
26+
27+
int utils_ze_find_driver_with_gpu(uint32_t *driver_idx,
28+
ze_driver_handle_t *driver_);
29+
30+
int utils_ze_find_gpu_device(ze_driver_handle_t driver,
31+
ze_device_handle_t *device_);
32+
33+
int utils_ze_level_zero_fill(ze_context_handle_t context,
34+
ze_device_handle_t device, void *ptr, size_t size,
35+
const void *pattern, size_t pattern_size);
36+
37+
int utils_ze_level_zero_copy(ze_context_handle_t context,
38+
ze_device_handle_t device, void *dst_ptr,
39+
const void *src_ptr, size_t size);
40+
41+
int utils_ze_create_context(ze_driver_handle_t driver,
42+
ze_context_handle_t *context);
43+
44+
int utils_ze_destroy_context(ze_context_handle_t context);
45+
46+
ze_memory_type_t utils_ze_get_mem_type(ze_context_handle_t context, void *ptr);
47+
48+
#ifdef __cplusplus
49+
}
50+
#endif
51+
52+
#endif // UMF_UTILS_LEVEL_ZERO_H

0 commit comments

Comments
 (0)