Skip to content

Commit 096676e

Browse files
[SYCL] ext kernel compiler (#11517)
This is the implementation for the new "Kernel Compiler" which will replace the Online Compiler. Its pending spec is here: #11331
1 parent f4ed132 commit 096676e

22 files changed

+1186
-41
lines changed

sycl/doc/extensions/proposed/sycl_ext_oneapi_kernel_compiler.asciidoc renamed to sycl/doc/extensions/experimental/sycl_ext_oneapi_kernel_compiler.asciidoc

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,12 @@ This extension also depends on the following other SYCL extensions:
4949

5050
== Status
5151

52-
This is a proposed extension specification, intended to gather community
53-
feedback.
54-
Interfaces defined in this specification may not be implemented yet or may be
55-
in a preliminary state.
56-
The specification itself may also change in incompatible ways before it is
57-
finalized.
58-
*Shipping software products should not rely on APIs defined in this
59-
specification.*
52+
This is an experimental extension specification, intended to provide early
53+
access to features and gather community feedback. Interfaces defined in
54+
this specification are implemented in DPC++, but they are not finalized
55+
and may change incompatibly in future versions of DPC++ without prior notice.
56+
*Shipping software products should not rely on APIs defined in
57+
this specification.*
6058

6159

6260
== Overview

sycl/doc/extensions/proposed/sycl_ext_oneapi_kernel_compiler_opencl.asciidoc renamed to sycl/doc/extensions/experimental/sycl_ext_oneapi_kernel_compiler_opencl.asciidoc

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,12 @@ This extension also depends on the following other SYCL extensions:
4949

5050
== Status
5151

52-
This is a proposed extension specification, intended to gather community
53-
feedback.
54-
Interfaces defined in this specification may not be implemented yet or may be
55-
in a preliminary state.
56-
The specification itself may also change in incompatible ways before it is
57-
finalized.
58-
*Shipping software products should not rely on APIs defined in this
59-
specification.*
52+
This is an experimental extension specification, intended to provide early
53+
access to features and gather community feedback. Interfaces defined in
54+
this specification are implemented in DPC++, but they are not finalized
55+
and may change incompatibly in future versions of DPC++ without prior notice.
56+
*Shipping software products should not rely on APIs defined in
57+
this specification.*
6058

6159

6260
== Overview

sycl/include/sycl/ext/intel/experimental/online_compiler.hpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,11 @@ enum class source_language { opencl_c = 0, cm = 1 };
7575

7676
/// Represents an online compiler for the language given as template
7777
/// parameter.
78-
template <source_language Lang> class online_compiler {
78+
template <source_language Lang>
79+
class __SYCL2020_DEPRECATED(
80+
"experimental online_compiler is being deprecated. See "
81+
"'sycl_ext_oneapi_kernel_compiler.asciidoc' instead for new kernel "
82+
"compiler extension to kernel_bundle implementation.") online_compiler {
7983
public:
8084
/// Constructs online compiler which can target any device and produces
8185
/// given compiled code format. Produces 64-bit device code.

sycl/include/sycl/ext/oneapi/properties/properties.hpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,30 @@ struct ValueOrDefault<
241241
}
242242
};
243243

244+
template <typename SyclT, typename PropertiesT> struct all_props_are_keys_of;
245+
246+
template <typename SyclT, typename PropertiesT>
247+
struct all_props_are_keys_of : std::true_type {};
248+
249+
template <typename SyclT>
250+
struct all_props_are_keys_of<
251+
SyclT, ext::oneapi::experimental::detail::empty_properties_t>
252+
: std::true_type {};
253+
254+
template <typename SyclT, typename PropT>
255+
struct all_props_are_keys_of<
256+
SyclT, ext::oneapi::experimental::properties<std::tuple<PropT>>>
257+
: std::bool_constant<
258+
ext::oneapi::experimental::is_property_key_of<PropT, SyclT>::value> {
259+
};
260+
261+
template <typename SyclT, typename PropT, typename... PropTs>
262+
struct all_props_are_keys_of<
263+
SyclT, ext::oneapi::experimental::properties<std::tuple<PropT, PropTs...>>>
264+
: std::bool_constant<
265+
ext::oneapi::experimental::is_property_key_of<PropT, SyclT>::value &&
266+
all_props_are_keys_of<SyclT, PropTs...>()> {};
267+
244268
} // namespace detail
245269
} // namespace ext::oneapi::experimental
246270

sycl/include/sycl/ext/oneapi/properties/property.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,10 @@ enum PropKind : uint32_t {
218218
CacheControlReadHint = 48,
219219
CacheControlReadAssertion = 49,
220220
CacheControlWrite = 50,
221+
BuildOptions = 51,
222+
BuildLog = 52,
221223
// PropKindSize must always be the last value.
222-
PropKindSize = 51,
224+
PropKindSize = 53,
223225
};
224226

225227
// This trait must be specialized for all properties and must have a unique

0 commit comments

Comments
 (0)