@@ -111,7 +111,7 @@ struct register_map_interface_key {
111
111
};
112
112
113
113
struct pipelined_key {
114
- template <size_t pipeline_directive_or_initiation_interval>
114
+ template <int pipeline_directive_or_initiation_interval>
115
115
using value_t = sycl::ext::oneapi::properties::property_value<
116
116
pipelined_key,
117
117
std::integral_constant<size_t, pipeline_directive_or_initiation_interval>>;
@@ -140,7 +140,7 @@ inline constexpr register_map_interface_key::value_t<
140
140
register_map_interface_options_enum::do_not_wait_for_done_write>
141
141
register_map_interface_do_not_wait_for_done_write;
142
142
143
- template<size_t pipeline_directive_or_initiation_interval>
143
+ template<int pipeline_directive_or_initiation_interval>
144
144
inline constexpr pipelined_key::value_t<
145
145
pipeline_directive_or_initiation_interval> pipelined;
146
146
@@ -192,22 +192,32 @@ inline constexpr pipelined_key::value_t<
192
192
`register_map_interface_do_not_wait_for_done_write`.
193
193
194
194
|`pipelined`
195
- |An unsigned integer value is accepted as property parameter.
195
+ |A signed integer value is accepted as property parameter.
196
196
197
197
When the parameter is set to a non zero value, the property directs the
198
198
compiler to pipeline calls to the kernel such that multiple invocations of the
199
- kernel can be in flight simultaneously. The parameter value also specifies the
200
- minimum number of cycles between successive invocations of the kernel. Example:
199
+ kernel can be in flight simultaneously.
200
+
201
+ When the parameter is a positive value, the value specifies the 'initiation
202
+ interval' (II) of the kernel i.e., the minimum number of cycles between successive
203
+ invocations. Example:
204
+
205
+ * `pipelined<N>` - For `N > 0`, the compiler will pipeline multiple kernel
206
+ invocations such that an invocation can be launched every `N` cycles if one is
207
+ available.
208
+
209
+ When the parameter is set to `-1`, the compiler will determine the II and
210
+ pipeline the kernel invocations.
201
211
202
- * `pipelined<N>` - The compiler will pipeline multiple kernel invocations such
203
- that an invocation can be launched every `N` cycles if one is available.
204
-
205
212
When the parameter is set to `0`, the compiler will not pipeline kernel
206
213
invocations.
207
214
208
215
If the `pipelined` property is not specified, the default behavior is
209
216
equivalent to a combination of the property parameter values listed above, but
210
217
the choice is implementation defined.
218
+
219
+ If the property parameter (N) is not specified, the default value is `-1`.
220
+ Valid values for `N` are values greater than or equal to `-1`.
211
221
|===
212
222
213
223
Device compilers that do not support this extension may accept and ignore these
@@ -287,4 +297,5 @@ q.single_task(KernelFunctor{a, b, c}).wait();
287
297
|========================================
288
298
|Rev|Date|Author|Changes
289
299
|1|2022-03-01|Abhishek Tiwari|*Initial public working draft*
290
- |========================================
300
+ |2|2022-12-05|Abhishek Tiwari|*Make pipelined property parameter a signed int*
301
+ |========================================
0 commit comments