Skip to content

Commit 255b22d

Browse files
committedMar 9, 2022
sycl: include Level Zero headers to oneDNN
1 parent eb19c51 commit 255b22d

24 files changed

+31173
-146
lines changed
 

‎README.binary.in

+1
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ Boost Software License, Version 1.0:
127127
MIT License:
128128
* Intel Graphics Compute Runtime for oneAPI Level Zero and OpenCL Driver (https://github.com/intel/compute-runtime)
129129
* Intel Graphics Compiler (https://github.com/intel/intel-graphics-compiler)
130+
* oneAPI Level Zero (https://github.com/oneapi-src/level-zero)
130131

131132
This third party software, even if included with the distribution of
132133
the Intel software, may be governed by separate license terms, including

‎README.md

+1
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,7 @@ Boost Software License, Version 1.0:
337337
MIT License:
338338
* [Intel Graphics Compute Runtime for oneAPI Level Zero and OpenCL Driver](https://github.com/intel/compute-runtime)
339339
* [Intel Graphics Compiler](https://github.com/intel/intel-graphics-compiler)
340+
* [oneAPI Level Zero](https://github.com/oneapi-src/level-zero)
340341
* [Doxyrest](https://github.com/vovkos/doxyrest)
341342

342343
This third party software, even if included with the distribution of

‎THIRD-PARTY-PROGRAMS

+3
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,9 @@ Copyright (c) 2018 Intel Corporation
502502
Intel(R) Graphics Compiler (src/gpu/jit/ngen/npack/neo_structs.hpp)
503503
Copyright (c) 2019 Intel Corporation
504504

505+
oneAPI Level Zero (src/sycl/level_zero)
506+
Copyright (C) 2019-2021 Intel Corporation
507+
505508
Doxyrest toolkit (doc/doxyrest/*)
506509
Copyright (c) 2016, Tibbo Technology Inc
507510
Copyright (c) 2016, Vladimir Gladkov

‎cmake/FindLevelZero.cmake

-67
This file was deleted.

‎cmake/SYCL.cmake

+2-11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#===============================================================================
2-
# Copyright 2019-2021 Intel Corporation
2+
# Copyright 2019-2022 Intel Corporation
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -29,12 +29,7 @@ endif()
2929
include(FindPackageHandleStandardArgs)
3030
include("cmake/dpcpp_driver_check.cmake")
3131

32-
find_package(LevelZero)
33-
if(LevelZero_FOUND)
34-
message(STATUS "DPC++ support is enabled (OpenCL and Level Zero)")
35-
else()
36-
message(STATUS "DPC++ support is enabled (OpenCL)")
37-
endif()
32+
message(STATUS "DPC++ support is enabled (OpenCL and Level Zero)")
3833

3934
# Explicitly link against sycl as Intel oneAPI DPC++ Compiler does not
4035
# always do it implicitly.
@@ -114,7 +109,3 @@ endif()
114109
add_definitions_with_host_compiler("-DCL_TARGET_OPENCL_VERSION=300")
115110
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsycl")
116111

117-
if(LevelZero_FOUND)
118-
set(DNNL_WITH_LEVEL_ZERO TRUE)
119-
include_directories_with_host_compiler(${LevelZero_INCLUDE_DIRS})
120-
endif()

‎src/sycl/CMakeLists.txt

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#===============================================================================
2-
# Copyright 2019-2021 Intel Corporation
2+
# Copyright 2019-2022 Intel Corporation
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -15,14 +15,16 @@
1515
#===============================================================================
1616

1717
set(TARGET_NAME ${DNNL_LIBRARY_NAME}_sycl)
18-
1918
file(GLOB_RECURSE SOURCES
2019
${CMAKE_CURRENT_SOURCE_DIR}/*.h
2120
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
2221
${CMAKE_CURRENT_SOURCE_DIR}/*.c
2322
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
2423
)
2524

25+
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
26+
27+
2628
if(DNNL_CPU_RUNTIME STREQUAL "NONE")
2729
list(REMOVE_ITEM SOURCES
2830
"${CMAKE_CURRENT_SOURCE_DIR}/sycl_stream_cpu_thunk.cpp"
@@ -35,3 +37,4 @@ add_library(${OBJ_LIB} OBJECT ${SOURCES})
3537

3638
set_property(GLOBAL APPEND PROPERTY DNNL_LIB_DEPS
3739
$<TARGET_OBJECTS:${OBJ_LIB}>)
40+

‎src/sycl/level_zero/_clang-format

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#===============================================================================
2+
# Copyright 2022 Intel Corporation
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
#===============================================================================
16+
17+
DisableFormat : true
18+
SortIncludes: false
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
/*
2+
* Copyright (C) 2020 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
* @file zel_tracing_api.h
7+
*/
8+
#ifndef _ZEL_TRACING_API_H
9+
#define _ZEL_TRACING_API_H
10+
#if defined(__cplusplus)
11+
#pragma once
12+
#endif
13+
14+
// 'core' API headers
15+
#include "../ze_api.h"
16+
17+
#if defined(__cplusplus)
18+
extern "C" {
19+
#endif
20+
21+
// Intel 'oneAPI' Level-Zero Loader Layer Extension APIs for API Tracing
22+
#if !defined(__GNUC__)
23+
#pragma region zel_tracing
24+
#endif
25+
26+
///////////////////////////////////////////////////////////////////////////////
27+
/// @brief Handle of tracer object
28+
typedef struct _zel_tracer_handle_t *zel_tracer_handle_t;
29+
30+
///////////////////////////////////////////////////////////////////////////////
31+
///////////////////////////////////////////////////////////////////////////////
32+
#ifndef ZEL_API_TRACING_NAME
33+
/// @brief API Tracing Extension Name
34+
#define ZEL_API_TRACING_NAME "ZEL_api_tracing"
35+
#endif // ZEL_API_TRACING_NAME
36+
37+
///////////////////////////////////////////////////////////////////////////////
38+
/// @brief API Tracing Extension Version(s)
39+
typedef enum _zel_api_tracing_version_t
40+
{
41+
ZEL_API_TRACING_VERSION_1_0 = ZE_MAKE_VERSION( 1, 0 ), ///< version 1.0
42+
ZEL_API_TRACING_VERSION_CURRENT = ZE_MAKE_VERSION( 1, 0 ), ///< latest known version
43+
ZEL_API_TRACING_VERSION_FORCE_UINT32 = 0x7fffffff
44+
45+
} zel_api_tracing_version_t;
46+
47+
///////////////////////////////////////////////////////////////////////////////
48+
/// @brief Alias the existing callbacks definition for 'core' callbacks
49+
typedef ze_callbacks_t zel_core_callbacks_t;
50+
51+
///////////////////////////////////////////////////////////////////////////////
52+
/// @brief Defines structure types
53+
typedef enum _zel_structure_type_t
54+
{
55+
ZEL_STRUCTURE_TYPE_TRACER_DESC = 0x1 ,///< ::zel_tracer_desc_t
56+
// This enumeration value is deprecated.
57+
// Pluse use ZEL_STRUCTURE_TYPE_TRACER_DESC.
58+
ZEL_STRUCTURE_TYPE_TRACER_EXP_DESC = 0x1 ,///< ::zel_tracer_desc_t
59+
ZEL_STRUCTURE_TYPE_FORCE_UINT32 = 0x7fffffff
60+
61+
} zel_structure_type_t;
62+
63+
///////////////////////////////////////////////////////////////////////////////
64+
/// @brief Tracer descriptor
65+
typedef struct _zel_tracer_desc_t
66+
{
67+
zel_structure_type_t stype; ///< [in] type of this structure
68+
const void* pNext; ///< [in][optional] pointer to extension-specific structure
69+
void* pUserData; ///< [in] pointer passed to every tracer's callbacks
70+
71+
} zel_tracer_desc_t;
72+
73+
///////////////////////////////////////////////////////////////////////////////
74+
/// @brief Creates a tracer
75+
///
76+
/// @details
77+
/// - The tracer is created in the disabled state.
78+
/// - The application may call this function from simultaneous threads.
79+
/// - The implementation of this function must be thread-safe.
80+
///
81+
/// @returns
82+
/// - ::ZE_RESULT_SUCCESS
83+
/// - ::ZE_RESULT_ERROR_UNINITIALIZED
84+
/// - ::ZE_RESULT_ERROR_DEVICE_LOST
85+
/// - ::ZE_RESULT_ERROR_INVALID_NULL_POINTER
86+
/// + `nullptr == desc`
87+
/// + `nullptr == desc->pUserData`
88+
/// + `nullptr == phTracer`
89+
/// - ::ZE_RESULT_ERROR_OUT_OF_HOST_MEMORY
90+
ZE_APIEXPORT ze_result_t ZE_APICALL
91+
zelTracerCreate(
92+
const zel_tracer_desc_t* desc, ///< [in] pointer to tracer descriptor
93+
zel_tracer_handle_t* phTracer ///< [out] pointer to handle of tracer object created
94+
);
95+
96+
///////////////////////////////////////////////////////////////////////////////
97+
/// @brief Destroys a tracer.
98+
///
99+
/// @details
100+
/// - The application must **not** call this function from simultaneous
101+
/// threads with the same tracer handle.
102+
/// - The implementation of this function must be thread-safe.
103+
/// - The implementation of this function will stall and wait on any
104+
/// outstanding threads executing callbacks before freeing any Host
105+
/// allocations associated with this tracer.
106+
///
107+
/// @returns
108+
/// - ::ZE_RESULT_SUCCESS
109+
/// - ::ZE_RESULT_ERROR_UNINITIALIZED
110+
/// - ::ZE_RESULT_ERROR_DEVICE_LOST
111+
/// - ::ZE_RESULT_ERROR_INVALID_NULL_HANDLE
112+
/// + `nullptr == hTracer`
113+
/// - ::ZE_RESULT_ERROR_HANDLE_OBJECT_IN_USE
114+
ZE_APIEXPORT ze_result_t ZE_APICALL
115+
zelTracerDestroy(
116+
zel_tracer_handle_t hTracer ///< [in][release] handle of tracer object to destroy
117+
);
118+
119+
///////////////////////////////////////////////////////////////////////////////
120+
/// @brief Sets the collection of callbacks to be executed **before** driver
121+
/// execution.
122+
///
123+
/// @details
124+
/// - The application only needs to set the function pointers it is
125+
/// interested in receiving; all others should be 'nullptr'
126+
/// - The application must ensure that no other threads are executing
127+
/// functions for which the tracing functions are changing.
128+
/// - The application must **not** call this function from simultaneous
129+
/// threads with the same tracer handle.
130+
///
131+
/// @returns
132+
/// - ::ZE_RESULT_SUCCESS
133+
/// - ::ZE_RESULT_ERROR_UNINITIALIZED
134+
/// - ::ZE_RESULT_ERROR_DEVICE_LOST
135+
/// - ::ZE_RESULT_ERROR_INVALID_NULL_HANDLE
136+
/// + `nullptr == hTracer`
137+
/// - ::ZE_RESULT_ERROR_INVALID_NULL_POINTER
138+
/// + `nullptr == pCoreCbs`
139+
ZE_APIEXPORT ze_result_t ZE_APICALL
140+
zelTracerSetPrologues(
141+
zel_tracer_handle_t hTracer, ///< [in] handle of the tracer
142+
zel_core_callbacks_t* pCoreCbs ///< [in] pointer to table of 'core' callback function pointers
143+
);
144+
145+
///////////////////////////////////////////////////////////////////////////////
146+
/// @brief Sets the collection of callbacks to be executed **after** driver
147+
/// execution.
148+
///
149+
/// @details
150+
/// - The application only needs to set the function pointers it is
151+
/// interested in receiving; all others should be 'nullptr'
152+
/// - The application must ensure that no other threads are executing
153+
/// functions for which the tracing functions are changing.
154+
/// - The application must **not** call this function from simultaneous
155+
/// threads with the same tracer handle.
156+
///
157+
/// @returns
158+
/// - ::ZE_RESULT_SUCCESS
159+
/// - ::ZE_RESULT_ERROR_UNINITIALIZED
160+
/// - ::ZE_RESULT_ERROR_DEVICE_LOST
161+
/// - ::ZE_RESULT_ERROR_INVALID_NULL_HANDLE
162+
/// + `nullptr == hTracer`
163+
/// - ::ZE_RESULT_ERROR_INVALID_NULL_POINTER
164+
/// + `nullptr == pCoreCbs`
165+
ZE_APIEXPORT ze_result_t ZE_APICALL
166+
zelTracerSetEpilogues(
167+
zel_tracer_handle_t hTracer, ///< [in] handle of the tracer
168+
zel_core_callbacks_t* pCoreCbs ///< [in] pointer to table of 'core' callback function pointers
169+
);
170+
171+
///////////////////////////////////////////////////////////////////////////////
172+
/// @brief Enables (or disables) the tracer
173+
///
174+
/// @details
175+
/// - The application must **not** call this function from simultaneous
176+
/// threads with the same tracer handle.
177+
///
178+
/// @returns
179+
/// - ::ZE_RESULT_SUCCESS
180+
/// - ::ZE_RESULT_ERROR_UNINITIALIZED
181+
/// - ::ZE_RESULT_ERROR_DEVICE_LOST
182+
/// - ::ZE_RESULT_ERROR_INVALID_NULL_HANDLE
183+
/// + `nullptr == hTracer`
184+
ZE_APIEXPORT ze_result_t ZE_APICALL
185+
zelTracerSetEnabled(
186+
zel_tracer_handle_t hTracer, ///< [in] handle of the tracer
187+
ze_bool_t enable ///< [in] enable the tracer if true; disable if false
188+
);
189+
190+
#if !defined(__GNUC__)
191+
#pragma endregion
192+
#endif
193+
194+
#if defined(__cplusplus)
195+
} // extern "C"
196+
#endif
197+
198+
#endif // _ZEL_TRACING_API_H
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
/*
2+
* Copyright (C) 2020 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
* @file zel_tracing_ddi.h
7+
*
8+
* This file has been manually generated.
9+
* There is no "spec" for this loader layer "tracer" API.
10+
*/
11+
12+
#ifndef _ZEL_TRACING_DDI_H
13+
#define _ZEL_TRACING_DDI_H
14+
#if defined(__cplusplus)
15+
#pragma once
16+
#endif
17+
#include "layers/zel_tracing_api.h"
18+
19+
#if defined(__cplusplus)
20+
extern "C" {
21+
#endif
22+
23+
///////////////////////////////////////////////////////////////////////////////
24+
/// @brief Function-pointer for zelTracerCreate
25+
typedef ze_result_t (ZE_APICALL *zel_pfnTracerCreate_t)(
26+
const zel_tracer_desc_t*,
27+
zel_tracer_handle_t*
28+
);
29+
30+
///////////////////////////////////////////////////////////////////////////////
31+
/// @brief Function-pointer for zetTracerDestroy
32+
typedef ze_result_t (ZE_APICALL *zel_pfnTracerDestroy_t)(
33+
zel_tracer_handle_t
34+
);
35+
36+
///////////////////////////////////////////////////////////////////////////////
37+
/// @brief Function-pointer for zetTracerSetPrologues
38+
typedef ze_result_t (ZE_APICALL *zel_pfnTracerSetPrologues_t)(
39+
zel_tracer_handle_t,
40+
zel_core_callbacks_t*
41+
);
42+
43+
///////////////////////////////////////////////////////////////////////////////
44+
/// @brief Function-pointer for zetTracerSetEpilogues
45+
typedef ze_result_t (ZE_APICALL *zel_pfnTracerSetEpilogues_t)(
46+
zel_tracer_handle_t,
47+
zel_core_callbacks_t*
48+
);
49+
50+
///////////////////////////////////////////////////////////////////////////////
51+
/// @brief Function-pointer for zetTracerSetEnabled
52+
typedef ze_result_t (ZE_APICALL *zel_pfnTracerSetEnabled_t)(
53+
zel_tracer_handle_t,
54+
ze_bool_t
55+
);
56+
57+
58+
///////////////////////////////////////////////////////////////////////////////
59+
/// @brief Table of Tracer functions pointers
60+
typedef struct _zel_tracer_dditable_t
61+
{
62+
zel_pfnTracerCreate_t pfnCreate;
63+
zel_pfnTracerDestroy_t pfnDestroy;
64+
zel_pfnTracerSetPrologues_t pfnSetPrologues;
65+
zel_pfnTracerSetEpilogues_t pfnSetEpilogues;
66+
zel_pfnTracerSetEnabled_t pfnSetEnabled;
67+
} zel_tracer_dditable_t;
68+
69+
70+
///////////////////////////////////////////////////////////////////////////////
71+
/// @brief Exported function for filling application's Tracer table
72+
/// with current process' addresses
73+
///
74+
/// @returns
75+
/// - ::ZE_RESULT_SUCCESS
76+
/// - ::ZE_RESULT_ERROR_UNINITIALIZED
77+
/// - ::ZE_RESULT_ERROR_INVALID_NULL_POINTER
78+
/// - ::ZE_RESULT_ERROR_UNSUPPORTED_VERSION
79+
ZE_DLLEXPORT ze_result_t ZE_APICALL
80+
zelGetTracerApiProcAddrTable(
81+
ze_api_version_t version, ///< [in] API version requested
82+
zel_tracer_dditable_t* pDdiTable ///< [in,out] pointer to table of DDI function pointers
83+
);
84+
85+
///////////////////////////////////////////////////////////////////////////////
86+
/// @brief Function-pointer for zelGetTracerApiProcAddrTable
87+
typedef ze_result_t (ZE_APICALL *zel_pfnGetTracerApiProcAddrTable_t)(
88+
ze_api_version_t,
89+
zel_tracer_dditable_t*
90+
);
91+
92+
///////////////////////////////////////////////////////////////////////////////
93+
/// @brief Container for tracing DDI tables
94+
typedef struct _zel_tracing_dditable_t
95+
{
96+
zel_tracer_dditable_t Tracer;
97+
} zel_tracing_dditable_t;
98+
99+
#if defined(__cplusplus)
100+
} // extern "C"
101+
#endif
102+
103+
#endif // _ZEL_TRACING_DDI_H

‎src/sycl/level_zero/layers/zel_tracing_register_cb.h

+1,584
Large diffs are not rendered by default.
+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/*
2+
* Copyright (C) 2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
* @file ze_loader.h
7+
*/
8+
9+
#ifndef _ZE_LOADER_H
10+
#define _ZE_LOADER_H
11+
#if defined(__cplusplus)
12+
#pragma once
13+
#endif
14+
15+
#include "../ze_api.h"
16+
17+
#if defined(__cplusplus)
18+
extern "C" {
19+
#endif
20+
21+
typedef struct _zel_version {
22+
int major;
23+
int minor;
24+
int patch;
25+
} zel_version_t;
26+
27+
//Ex component string "ze_tracing", "ze_validation", etc
28+
#define ZEL_COMPONENT_STRING_SIZE 64
29+
30+
typedef struct zel_component_version {
31+
char component_name[ZEL_COMPONENT_STRING_SIZE];
32+
ze_api_version_t spec_version;
33+
zel_version_t component_lib_version;
34+
} zel_component_version_t;
35+
36+
37+
ZE_APIEXPORT ze_result_t ZE_APICALL
38+
zelLoaderGetVersions(
39+
size_t *num_elems, //Pointer to num versions to get.
40+
zel_component_version_t *versions); //Pointer to array of versions. If set to NULL, num_elems is returned
41+
42+
typedef enum _zel_handle_type_t {
43+
ZEL_HANDLE_DRIVER,
44+
ZEL_HANDLE_DEVICE,
45+
ZEL_HANDLE_CONTEXT,
46+
ZEL_HANDLE_COMMAND_QUEUE,
47+
ZEL_HANDLE_COMMAND_LIST,
48+
ZEL_HANDLE_FENCE,
49+
ZEL_HANDLE_EVENT_POOL,
50+
ZEL_HANDLE_EVENT,
51+
ZEL_HANDLE_IMAGE,
52+
ZEL_HANDLE_MODULE,
53+
ZEL_HANDLE_MODULE_BUILD_LOG,
54+
ZEL_HANDLE_KERNEL,
55+
ZEL_HANDLE_SAMPLER,
56+
ZEL_HANDLE_PHYSICAL_MEM
57+
} zel_handle_type_t;
58+
59+
//Translates Loader Handles to Driver Handles if loader handle intercept is enabled.
60+
//If handle intercept is not enabled handleOut is set to handleIn
61+
ZE_APIEXPORT ze_result_t ZE_APICALL
62+
zelLoaderTranslateHandle(
63+
zel_handle_type_t handleType, //Handle Type
64+
void *handleIn, //Input: handle to translate from loader handle to driver handle
65+
void **handleOut); //Output: Pointer to handleOut is set to driver handle if successful
66+
67+
68+
#if defined(__cplusplus)
69+
} // extern "C"
70+
#endif
71+
#endif //_ZE_LOADER_H

‎src/sycl/level_zero/ze.py

+4,030
Large diffs are not rendered by default.

‎src/sycl/level_zero/ze_api.h

+10,639
Large diffs are not rendered by default.

‎src/sycl/level_zero/ze_ddi.h

+1,890
Large diffs are not rendered by default.

‎src/sycl/level_zero/zes.py

+2,848
Large diffs are not rendered by default.

‎src/sycl/level_zero/zes_api.h

+4,741
Large diffs are not rendered by default.

‎src/sycl/level_zero/zes_ddi.h

+1,366
Large diffs are not rendered by default.

‎src/sycl/level_zero/zet.py

+1,159
Large diffs are not rendered by default.

‎src/sycl/level_zero/zet_api.h

+1,746
Large diffs are not rendered by default.

‎src/sycl/level_zero/zet_ddi.h

+763
Large diffs are not rendered by default.

‎src/sycl/level_zero_utils.cpp

-27
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
#include "sycl/level_zero_utils.hpp"
1818
#include "oneapi/dnnl/dnnl_config.h"
1919

20-
#if defined(DNNL_WITH_LEVEL_ZERO)
21-
2220
#include <stdio.h>
2321

2422
#if defined(__linux__)
@@ -214,28 +212,3 @@ bool compare_ze_devices(const ::sycl::device &lhs, const ::sycl::device &rhs) {
214212
} // namespace sycl
215213
} // namespace impl
216214
} // namespace dnnl
217-
218-
#else
219-
220-
namespace dnnl {
221-
namespace impl {
222-
namespace sycl {
223-
224-
device_uuid_t get_device_uuid(const ::sycl::device &) {
225-
return device_uuid_t(0, 0);
226-
}
227-
228-
status_t sycl_create_kernel_with_level_zero(std::unique_ptr<::sycl::kernel> &,
229-
const sycl_gpu_engine_t *, const gpu::compute::binary_t *) {
230-
return status::unimplemented;
231-
}
232-
233-
bool compare_ze_devices(const ::sycl::device &, const ::sycl::device &) {
234-
return false;
235-
}
236-
237-
} // namespace sycl
238-
} // namespace impl
239-
} // namespace dnnl
240-
241-
#endif // DNNL_WITH_LEVEL_ZERO

‎src/sycl/sycl_compat.cpp

+3-24
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright 2021 Intel Corporation
2+
* Copyright 2021-2022 Intel Corporation
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -14,22 +14,18 @@
1414
* limitations under the License.
1515
*******************************************************************************/
1616

17+
#include <CL/sycl.hpp>
18+
#include <level_zero/ze_api.h>
1719
#include <type_traits>
1820

1921
#include "oneapi/dnnl/dnnl_config.h"
20-
21-
#include <CL/sycl.hpp>
22-
2322
#include "sycl/sycl_utils.hpp"
2423

25-
#ifdef DNNL_WITH_LEVEL_ZERO
26-
#include <level_zero/ze_api.h>
2724
#if DNNL_USE_SYCL121_API
2825
#include <CL/sycl/backend/level_zero.hpp>
2926
#else
3027
#include <sycl/ext/oneapi/backend/level_zero.hpp>
3128
#endif
32-
#endif
3329

3430
#include "common/utils.hpp"
3531
#include "gpu/compute/device_info.hpp"
@@ -46,10 +42,8 @@ namespace dnnl {
4642
namespace impl {
4743
namespace sycl {
4844

49-
#ifdef DNNL_WITH_LEVEL_ZERO
5045
status_t func_zeKernelCreate(
5146
ze_module_handle_t, const ze_kernel_desc_t *, ze_kernel_handle_t *);
52-
#endif
5347

5448
namespace compat {
5549

@@ -80,7 +74,6 @@ status_t get_kernel_from_bundle(std::unique_ptr<::sycl::kernel> &sycl_kernel,
8074
::sycl::make_kernel<::sycl::backend::opencl>(
8175
ocl_kernel, sycl_engine->context()));
8276
} else if (backend == backend_t::level0) {
83-
#ifdef DNNL_WITH_LEVEL_ZERO
8477
auto ze_modules
8578
= ::sycl::get_native<::sycl::backend::ext_oneapi_level_zero>(
8679
kernel_bundle);
@@ -98,10 +91,6 @@ status_t get_kernel_from_bundle(std::unique_ptr<::sycl::kernel> &sycl_kernel,
9891
auto k = ::sycl::make_kernel<::sycl::backend::ext_oneapi_level_zero>(
9992
{kernel_bundle, ze_kernel}, sycl_engine->context());
10093
sycl_kernel = utils::make_unique<::sycl::kernel>(k);
101-
#else // DNNL_WITH_LEVEL_ZERO
102-
assert(!"unexpected");
103-
return status::invalid_arguments;
104-
#endif
10594
} else {
10695
assert(!"unexpected");
10796
return status::invalid_arguments;
@@ -140,16 +129,11 @@ void *get_native_impl(backend_t backend, const sycl_object_t &sycl_object) {
140129
return ::sycl::get_native<::sycl::backend::opencl>(sycl_object);
141130
#endif
142131
} else if (backend == backend_t::level0) {
143-
#ifdef DNNL_WITH_LEVEL_ZERO
144132
#if DNNL_USE_SYCL121_API
145133
return sycl_object.template get_native<::sycl::backend::level_zero>();
146134
#else
147135
return ::sycl::get_native<::sycl::backend::ext_oneapi_level_zero>(
148136
sycl_object);
149-
#endif
150-
#else
151-
assert(!"unexpected");
152-
return nullptr;
153137
#endif
154138
} else {
155139
assert(!"unexpected");
@@ -211,7 +195,6 @@ status_t make_kernel(std::unique_ptr<::sycl::kernel> &sycl_kernel,
211195

212196
#endif
213197
} else if (backend == backend_t::level0) {
214-
#ifdef DNNL_WITH_LEVEL_ZERO
215198
ze_module_handle_t ze_module
216199
= reinterpret_cast<ze_module_handle_t>(native_program_handle);
217200
#if DNNL_USE_SYCL121_API
@@ -237,10 +220,6 @@ status_t make_kernel(std::unique_ptr<::sycl::kernel> &sycl_kernel,
237220
auto k = ::sycl::make_kernel<::sycl::backend::ext_oneapi_level_zero>(
238221
{kernel_bundle, ze_kernel}, sycl_engine->context());
239222
sycl_kernel = utils::make_unique<::sycl::kernel>(k);
240-
#endif
241-
#else // DNNL_WITH_LEVEL_ZERO
242-
assert(!"unexpected");
243-
return status::invalid_arguments;
244223
#endif
245224
} else {
246225
assert(!"unexpected");

‎src/sycl/sycl_interop_gpu_kernel.cpp

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright 2019-2021 Intel Corporation
2+
* Copyright 2019-2022 Intel Corporation
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -95,13 +95,8 @@ status_t sycl_interop_gpu_kernel_t::realize(gpu::compute::kernel_t *kernel,
9595
CHECK(compat::make_kernel(sycl_kernel, kernel_name_, sycl_engine,
9696
ocl_program.release(), binary_.get(), programs));
9797
} else if (sycl_engine->backend() == backend_t::level0) {
98-
#ifdef DNNL_WITH_LEVEL_ZERO
9998
CHECK(sycl_create_kernel_with_level_zero(sycl_kernel, kernel_name_,
10099
sycl_engine, binary_.get(), programs));
101-
#else
102-
assert(!"not expected");
103-
return status::invalid_arguments;
104-
#endif
105100
} else {
106101
assert(!"not expected");
107102
return status::invalid_arguments;

‎src/sycl/sycl_utils.cpp

+1-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright 2020-2021 Intel Corporation
2+
* Copyright 2020-2022 Intel Corporation
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -49,10 +49,6 @@ backend_t get_sycl_gpu_backend() {
4949
::sycl::device dev {::sycl::gpu_selector {}};
5050
backend_t backend = get_sycl_backend(dev);
5151

52-
#if !defined(DNNL_WITH_LEVEL_ZERO)
53-
if (backend == backend_t::level0) backend = fallback;
54-
#endif
55-
5652
return backend;
5753
}();
5854

@@ -101,13 +97,9 @@ device_id_t sycl_device_id(const ::sycl::device &dev) {
10197
break;
10298
}
10399
case backend_t::level0: {
104-
#if defined(DNNL_WITH_LEVEL_ZERO)
105100
device_id = std::tuple_cat(
106101
std::make_tuple(static_cast<int>(backend_t::level0)),
107102
get_device_uuid(dev));
108-
#else
109-
assert(!"unreachable");
110-
#endif
111103
break;
112104
}
113105
case backend_t::unknown: assert(!"unknown backend"); break;

0 commit comments

Comments
 (0)
Please sign in to comment.