General.Compute.DelayedCopy

This node allows to make a delayed copy of any data node.

Because the GSN Composer cannot know which type of data node should be copied there will be no automatic creation of data nodes when this node is instantiated. Instead the user has to create two data nodes of the same type and connect them to the input and output of the DelayedCopy node. When executed, a DelayedCopy node will make a copy of any data node that is connect to its input.

What is special about this node, in contrast to the normal Copy node, is that a DelayedCopy node will be executed before all the other nodes of other type when the graph is evaluated. This can be very useful because it allows to connect nodes in an apparent loop.

In order to evaluate the graph, the order in which compute nodes are executed must be determined. This is only possible of the graph does not contain loops because they would cause a cyclic dependency of nodes. Therefore, if a user tries to add a connection between nodes and this connection would generate a loop, this connection is usually refused and an error message is shown in the graph area.

However, with a DelayNode a loopy connection can be made because though there is a feedback loop between time steps, their is no cyclic dependency for the evaluation in the current time step because it is clear that the evaluation should start from the DelayedCopy nodes and should stop once a DelayedCopy node is reached again. To mark this special behavior visually, connections into DelayedCopy nodes are drawn with dashed lines.

DelayedCopy nodes should be used only if their are no other options. The behavior of a graph becomes less replicable with DelayedCopy nodes because all previous time steps may influence the current result. Because only public parameters are restored when a graph is loaded, it is especially problematic if other types of data nodes are copied with DelayedCopy nodes because these data nodes might not have valid content when the first copy operation is executed.

The example FlipFlop demonstrates the usage of this node.