@@ -711,7 +711,7 @@ Updates to a graph will be scheduled after any in-flight executions of the same
711
711
graph and will not affect previous submissions of the same graph. The user is
712
712
not required to wait on any previous submissions of a graph before updating it.
713
713
714
- The only type of nodes that are currently supported for updating in a graph are
714
+ The only type of nodes that are currently able to be updated in a graph are
715
715
kernel execution nodes.
716
716
717
717
The aspects of a kernel execution node that can be configured during update are:
@@ -780,7 +780,8 @@ topologically identical when:
780
780
781
781
** Both graphs have the same number of nodes and edges.
782
782
** Where edges are specified through the `depends_on` property or through event
783
- dependencies, these must be specified in the same order.
783
+ dependencies in recorded queue submisions, these must be specified in the same
784
+ order.
784
785
** Nodes with dependencies on events outside of the graph must have the same
785
786
number of these dependencies.
786
787
** A kernel node's command function must have the same type in both graphs,
@@ -792,6 +793,10 @@ are:
792
793
*** Explicit API calls to add nodes to the graph or calls to `make_edge()`.
793
794
*** Nodes added to a graph via recorded queue submissions.
794
795
796
+ Attempting to use whole-graph update with source or target graphs which do not
797
+ satisfy these conditions results in undefined behaviour as it may prevent the
798
+ runtime from pairing nodes in the source and target graphs.
799
+
795
800
It is valid to use nodes that contain dynamic parameters in whole graph updates.
796
801
If a node containing a dynamic parameter is updated through the whole graph
797
802
update API, then any previous updates to the dynamic parameter will be reflected
@@ -1217,8 +1222,7 @@ update(const command_graph<graph_state::modifiable>& source);
1217
1222
topologically identical source graph in the modifiable state. The full
1218
1223
definition of what constitutes a topologically identical graph can be found in
1219
1224
the <<whole-graph-update, Whole-Graph Update>> section. Violating any of these
1220
- topology requirements, other than those described below as exceptions, results
1221
- in undefined behaviour.
1225
+ topology requirements results in undefined behaviour.
1222
1226
1223
1227
The characteristics in the executable graph which will be updated are detailed
1224
1228
in the section on <<executable-graph-update, Executable Graph Update>>.
@@ -1250,12 +1254,13 @@ Exceptions:
1250
1254
** The number of nodes in the graph does not match.
1251
1255
** The number of edges between nodes does not match.
1252
1256
1257
+ * Throws synchronously with error code `invalid` if `source` contains any node
1258
+ which is not of the following `node_type`s:
1253
1259
1254
- :handler-copy-functions: https://registry.khronos.org/SYCL/specs/sycl-2020/html/sycl-2020.html#table.members.handler.copy
1260
+ ** `node_type::empty`
1261
+ ** `node_type::ext_oneapi_barrier`
1262
+ ** `node_type::kernel`
1255
1263
1256
- * Throws synchronously with error code `invalid` if `source` contains any node
1257
- which is not a kernel command, e.g. {handler-copy-functions}[memory
1258
- operations].
1259
1264
1260
1265
* Throws synchronously with error code `invalid` if the context or device
1261
1266
associated with `source` does not match that of the `command_graph` being
0 commit comments