@@ -27,6 +27,30 @@ in the graph between cycles.
27
27
28
28
![ Inter-iteration matrix] ( ./docs/assets/images/inter-iteration-matrix.png )
29
29
30
+ ## Node Iterators
31
+
32
+ This is not part of the paper. Here we show how the algorithm can be used to first remove the
33
+ cycles. Next, we use the matrices to decide how to traverse the graph.
34
+
35
+ ![ Graph unrolling] ( ./docs/assets/images/graph-unroll.png )
36
+
37
+ The first iterator, the ` CycleIterator ` simply goes through all the tasks in the cycles and executes
38
+ them in order. The ` decyclify ` function is used to avoid repeating a node due to a cycle.
39
+
40
+ The second iterator available is the ` TasksIterator ` . With this, for each cycle it returns the next tasks
41
+ available, as well as any tasks in the next cycles that can be returned.
42
+
43
+ A task is considered ready to be returned when its sibling in the previous cycle has been executed, and after
44
+ its inter-cycle dependency (if any) has been satisfied as well.
45
+
46
+ It should be possible to use these iterators, or create new ones, and apply it to tools
47
+ such as workflow managers that support only DAG scheduling, to schedule an infinite
48
+ graph, via graph-unrolling. The next cycle is simply an integer counter incremented,
49
+ but could be an ISO8601 date-time function.
50
+
51
+ > NOTE: this part of the project was a summer holidays project, and is in need of documentation,
52
+ > more tests, code review, etc. Feel free to submit pull requests.
53
+
30
54
## Changelog
31
55
32
56
** 0.1 (2020-??-??)**
0 commit comments