@@ -200,8 +200,6 @@ Table {counter: tableNumber}. Values of the `SYCL_EXT_ONEAPI_GRAPH` macro.
200
200
201
201
=== SYCL Graph Terminology
202
202
203
- :explicit-memory-ops: https://www.khronos.org/registry/SYCL/specs/sycl-2020/html/sycl-2020.html#subsec:explicitmemory
204
-
205
203
Table {counter: tableNumber}. Terminology.
206
204
[%header,cols="1,3"]
207
205
|===
@@ -231,8 +229,8 @@ Table {counter: tableNumber}. Explicit Graph Definition.
231
229
232
230
| Node
233
231
| In the explicit graph building API nodes are created by the user invoking
234
- methods on a modifiable graph. Each node represents either a command-group
235
- function or an empty operation.
232
+ methods on a modifiable graph passing a command-group function (CGF). Each node
233
+ represents either a command-group or an empty operation.
236
234
237
235
| Edge
238
236
| In the explicit graph building API edges are primarily defined by the user
@@ -258,17 +256,14 @@ Table {counter: tableNumber}. Recorded Graph Definition.
258
256
| Concept | Description
259
257
260
258
| Node
261
- | A node in a queue recorded graph represents a command group submission to the
262
- device associated with the queue begin recorded. Each submission encompasses
263
- either one or both of a.) some data movement, b.) a single asynchronous kernel
264
- launch. Nodes cannot define forward edges, only backwards. That is, kernels can
265
- only create dependencies on command-groups that have already been submitted.
266
- This means that transparently a node can depend on a previously recorded graph
267
- (sub-graph), which works by creating edges to the individual nodes in the old
268
- graph. Explicit memory operations without kernels, such as a memory copy, are
269
- still classed as nodes under this definition, as the
270
- {explicit-memory-ops}[SYCL 2020 specification states] that these can be seen as
271
- specialized kernels executing on the device.
259
+ | A node in a queue recorded graph represents a command-group submission to the
260
+ device associated with the queue being recorded. Nodes are constructed from
261
+ the command-group functions (CGF) passed to `queue::submit()`, or from the queue
262
+ shortcut equivalents for the defined handler command types. Each submission
263
+ encompasses either one or both of a.) some data movement, b.) a single
264
+ asynchronous command launch. Nodes cannot define forward edges, only backwards.
265
+ That is, nodes can only create dependencies on command-groups that have already
266
+ been submitted.
272
267
273
268
| Edge
274
269
| An edge in a queue recorded graph is expressed through command group
@@ -287,7 +282,13 @@ buffers.
287
282
288
283
A node in a graph can take the form of a nested sub-graph. This occurs when
289
284
a command-group submission that invokes `handler::ext_oneapi_graph()` with an
290
- executable graph object is added to the graph as a node.
285
+ executable graph object is added to the graph as a node. The child graph node is
286
+ scheduled in the parent graph as-if edges are created to connect the root nodes
287
+ of the child graph with the dependent nodes of the parent graph.
288
+
289
+ Adding an executable graph as a sub-graph does not affect its existing node
290
+ dependencies, such that it could be submitted in future without any side
291
+ effects of prior uses as a sub-graph.
291
292
292
293
=== API Modifications
293
294
0 commit comments