You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This patch
1. aligns these extensions with SYCL 2020 [section #6 in the spec]:
- Enqueue barrier [SYCL_EXT_INTEL_ENQUEUE_BARRIER]
- Level Zero backend [SYCL_EXT_ONEAPI_BACKEND_LEVEL_ZERO]
- Local memory [SYCL_EXT_ONEAPI_LOCAL_MEMORY]
- mem_channel property [SYCL_EXT_INTEL_MEM_CHANNEL_PROPERTY]
- USM address spaces [SYCL_EXT_INTEL_USM_ADDRESS_SPACES]
2. deprecates these extensions:
- sycl::detail::bit_cast [SYCL_INTEL_bitcast]
3. changes the location of these extensions:
- sycl::ext::intel::online_compiler moves to sycl::ext::intel::experimental.
sycl::ext::intel::online_compiler is deprecated.
The first variant of the barrier takes no parameters, and waits for all previously submitted commands to the queue to enter the `info::event_command_status::complete` state before any command later submitted to the same queue is allowed to execute. A second variant of the barrier accepts a list of events, with the behavior that no commands submitted to the same queue after barrier submission may execute until all events in the `waitList` have entered the `info::event_command_status::complete` state. Both variants are non-blocking from the host program perspective, in that they do not wait for the barrier conditions to have been met before returning.
@@ -93,7 +109,7 @@ Some forms of the new barrier methods return an `event`, which can be used to pe
93
109
94
110
CG4 doesn't execute until all previous command groups submitted to the same queue (CG1, CG2, CG3) have entered the completed state.
|`event submit_barrier()` | Same effect as submitting a `handler::barrier()` within a command group to this `queue`. The returned event enters the `info::event_command_status::complete` state when all events that the barrier is dependent on (implicitly from all previously submitted commands to the same queue) have entered the `info::event_command_status::complete` state.
229
-
|`event submit_barrier( const vector_class<event> &waitList )` | Same effect as submitting a `handler:barrier( const vector_class<event> &waitList )` within a command group to this `queue`. The returned event enters the `info::event_command_status::complete` state when all events that the barrier is dependent on (explicitly from `waitList`) have entered the `info::event_command_status::complete` state.
244
+
|`event ext_intel_submit_barrier()` | Same effect as submitting a `handler::ext_intel_barrier()` within a command group to this `queue`. The returned event enters the `info::event_command_status::complete` state when all events that the barrier is dependent on (implicitly from all previously submitted commands to the same queue) have entered the `info::event_command_status::complete` state.
245
+
|`event ext_intel_submit_barrier( const vector_class<event> &waitList )` | Same effect as submitting a `handler:ext_intel_barrier( const vector_class<event> &waitList )` within a command group to this `queue`. The returned event enters the `info::event_command_status::complete` state when all events that the barrier is dependent on (explicitly from `waitList`) have entered the `info::event_command_status::complete` state.
@@ -284,8 +300,8 @@ Barriers can be created by two members of the `handler` class that force synchro
284
300
[options="header"]
285
301
|========================================
286
302
|*Member functions*|*Description*
287
-
|`void barrier()` | Prevents any commands submitted afterward to this queue from executing until all commands previously submitted to this queue have entered the `info::event_command_status::complete` state.
288
-
|`void barrier( const vector_class<event> &waitList` ) | Prevents any commands submitted afterward to this queue from executing until all events in `waitList` have entered the `info::event_command_status::complete` state. If `waitList` is empty, then the barrier has no effect.
303
+
|`void ext_intel_barrier()` | Prevents any commands submitted afterward to this queue from executing until all commands previously submitted to this queue have entered the `info::event_command_status::complete` state.
304
+
|`void ext_intel_barrier( const vector_class<event> &waitList` ) | Prevents any commands submitted afterward to this queue from executing until all events in `waitList` have entered the `info::event_command_status::complete` state. If `waitList` is empty, then the barrier has no effect.
289
305
|========================================
290
306
291
307
== References
@@ -303,6 +319,7 @@ None.
303
319
|========================================
304
320
|Rev|Date|Author|Changes
305
321
|1|2020-02-26|Ye Ting|*Initial public release*
322
+
|2|2021-08-30|Dmitry Vodopyanov|*Updated according to SYCL 2020 reqs for extensions*
Copy file name to clipboardExpand all lines: sycl/doc/extensions/MemChannel/MemChannel.asciidoc
+22-4Lines changed: 22 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
= SYCL_INTEL_mem_channel_property
1
+
= SYCL_EXT_INTEL_MEM_CHANNEL_PROPERTY
2
2
3
3
== Introduction
4
4
NOTE: Khronos(R) is a registered trademark and SYCL(TM) and SPIR(TM) are trademarks of The Khronos Group Inc. OpenCL(TM) is a trademark of Apple Inc. used by permission by Khronos.
@@ -31,6 +31,22 @@ This extension is written against the SYCL 2020 provisional specification, Revis
31
31
32
32
The use of this extension requires a target that supports cl_intel_mem_channel_property or equivalent if OpenCL is used as the underlying device runtime.
33
33
34
+
== Feature Test Macro
35
+
36
+
This extension provides a feature-test macro as described in the core SYCL
37
+
specification section 6.3.3 "Feature test macros". Therefore, an
38
+
implementation supporting this extension must predefine the macro
39
+
`SYCL_EXT_INTEL_MEM_CHANNEL_PROPERTY` to one of the values defined in the table below.
40
+
Applications can test for the existence of this macro to determine if the
41
+
implementation supports this feature, or applications can test the macro's
42
+
value to determine which of the extension's APIs the implementation supports.
43
+
44
+
[%header,cols="1,5"]
45
+
|===
46
+
|Value |Description
47
+
|1 |Initial extension version. Base features are supported.
48
+
|===
49
+
34
50
== Overview
35
51
36
52
On some targets manual assignment of buffers to memory regions can improve memory bandwidth. This extension adds a buffer property to indicate in which memory channel a particular buffer should be allocated. This information is an optimization hint to the runtime and thus it is legal to ignore.
@@ -45,7 +61,7 @@ Add a new property to Table 4.33: Properties supported by the SYCL buffer class
45
61
[options="header"]
46
62
|===
47
63
| Property | Description
48
-
| property::buffer::mem_channel | The `mem_channel` property is a hint to the SYCL runtime that the buffer should be stored in a particular memory channel provided to the property.
64
+
| property::buffer::ext_intel_mem_channel | The `ext_intel_mem_channel` property is a hint to the SYCL runtime that the buffer should be stored in a particular memory channel provided to the property.
49
65
|===
50
66
--
51
67
@@ -55,7 +71,7 @@ Add a new constructor to Table 4.34: Constructors of the buffer property classes
55
71
[options="header"]
56
72
|===
57
73
| Constructor | Description
58
-
| property::buffer::mem_channel::mem_channel(cl_uint channel) | Constructs a SYCL `mem_channel` property instance with the specified channel ID. The range of valid values depends on the target and is implementation defined. Invalid values do not need to result in an error as the property is only a hint.
74
+
| property::buffer::ext_intel_mem_channel::ext_intel_mem_channel(cl_uint channel) | Constructs a SYCL `ext_intel_mem_channel` property instance with the specified channel ID. The range of valid values depends on the target and is implementation defined. Invalid values do not need to result in an error as the property is only a hint.
59
75
|===
60
76
--
61
77
@@ -65,7 +81,7 @@ Add a new member function to Table 4.35: Member functions of the buffer property
65
81
[options="header"]
66
82
|===
67
83
| Member function | Description
68
-
| cl_uint property::buffer::mem_channel::get_channel() const | Returns the cl_uint which was specified when constructing this SYCL `mem_channel` property.
84
+
| cl_uint property::buffer::ext_intel_mem_channel::get_channel() const | Returns the cl_uint which was specified when constructing this SYCL `ext_intel_mem_channel` property.
69
85
|===
70
86
--
71
87
@@ -107,4 +123,6 @@ Add an entry for the new aspect to Table 4.20: Device aspects defined by the cor
107
123
|========================================
108
124
|Rev|Date|Author|Changes
109
125
|1|2020-10-26|Joe Garvey|*Initial public draft*
126
+
|2|2021-08-30|Dmitry Vodopyanov|*Updated according to SYCL 2020 reqs for extensions*
0 commit comments