In the example of FIG. 1, connections between nodes, which can also be referred to as edges, can represent data and/or resource dependencies between the nodes. A data dependency can occur, for example, when an execution engine uses the output of another execution engine as in input for a computation. A resource dependency can occur, for example, when one execution engine needs to use a memory location that second execution engine is also using. For example, the second execution may need to write a value to the memory location, and the first execution engine may need to read the value and use the value in a computation. As another example, the second execution engine may be reading or writing a value to a memory location, and the first execution engine may (due, for example, to limited memory being available) need to write a value to the same memory location.
In various examples, each node in the graph 100 includes at least one input edge, representing inputs to the operation being performed at the node, or at least one output edge, representing an output of the operation performed at the node. For example, edge 142 from node 140 and edge 132 from node 130 each indicate that the results from the operations of node 140 and node 130 are inputs to node 110. As a further example, edge 112 from node 110 to node 120 indicates that the result of the operation of node 110 is the input to the operation of node 120. As a further example, the edge 122 from node 120 to node 150 indicates that the result of the operation at node 120 is the input to the operation at node 150.