Work on optimization functions

This commit is contained in:
2023-05-30 19:10:44 +02:00
parent 190a4252f8
commit 5bf660618d
6 changed files with 113 additions and 71 deletions

View File

@ -4,76 +4,48 @@ function main()
graph = DAG()
# s to output (exit node)
d_exit = make_node(DataTask(10))
d_exit = insert_node(graph, make_node(DataTask(10)))
# final s compute
s0 = make_node(ComputeTaskS2())
s0 = insert_node(graph, make_node(ComputeTaskS2()))
# data from v0 and v1 to s0
d_v0_s0 = make_node(DataTask(5))
d_v1_s0 = make_node(DataTask(5))
d_v0_s0 = insert_node(graph, make_node(DataTask(5)))
d_v1_s0 = insert_node(graph, make_node(DataTask(5)))
# v0 and v1 compute
v0 = make_node(ComputeTaskV())
v1 = make_node(ComputeTaskV())
v0 = insert_node(graph, make_node(ComputeTaskV()))
v1 = insert_node(graph, make_node(ComputeTaskV()))
# data from uB, uA, uBp and uAp to v0 and v1
d_uB_v0 = make_node(DataTask(3))
d_uA_v0 = make_node(DataTask(3))
d_uBp_v1 = make_node(DataTask(3))
d_uAp_v1 = make_node(DataTask(3))
d_uB_v0 = insert_node(graph, make_node(DataTask(3)))
d_uA_v0 = insert_node(graph, make_node(DataTask(3)))
d_uBp_v1 = insert_node(graph, make_node(DataTask(3)))
d_uAp_v1 = insert_node(graph, make_node(DataTask(3)))
# uB, uA, uBp and uAp computes
uB = make_node(ComputeTaskU())
uA = make_node(ComputeTaskU())
uBp = make_node(ComputeTaskU())
uAp = make_node(ComputeTaskU())
uB = insert_node(graph, make_node(ComputeTaskU()))
uA = insert_node(graph, make_node(ComputeTaskU()))
uBp = insert_node(graph, make_node(ComputeTaskU()))
uAp = insert_node(graph, make_node(ComputeTaskU()))
# data from PB, PA, PBp and PAp to uB, uA, uBp and uAp
d_PB_uB = make_node(DataTask(6))
d_PA_uA = make_node(DataTask(6))
d_PBp_uBp = make_node(DataTask(6))
d_PAp_uAp = make_node(DataTask(6))
d_PB_uB = insert_node(graph, make_node(DataTask(6)))
d_PA_uA = insert_node(graph, make_node(DataTask(6)))
d_PBp_uBp = insert_node(graph, make_node(DataTask(6)))
d_PAp_uAp = insert_node(graph, make_node(DataTask(6)))
# P computes PB, PA, PBp and PAp
PB = make_node(ComputeTaskP())
PA = make_node(ComputeTaskP())
PBp = make_node(ComputeTaskP())
PAp = make_node(ComputeTaskP())
PB = insert_node(graph, make_node(ComputeTaskP()))
PA = insert_node(graph, make_node(ComputeTaskP()))
PBp = insert_node(graph, make_node(ComputeTaskP()))
PAp = insert_node(graph, make_node(ComputeTaskP()))
# entry nodes getting data for P computes
d_PB = make_node(DataTask(4))
d_PA = make_node(DataTask(4))
d_PBp = make_node(DataTask(4))
d_PAp = make_node(DataTask(4))
# now insert them all
insert_node(graph, d_exit)
insert_node(graph, s0)
insert_node(graph, d_v0_s0)
insert_node(graph, d_v1_s0)
insert_node(graph, v0)
insert_node(graph, v1)
insert_node(graph, d_uB_v0)
insert_node(graph, d_uA_v0)
insert_node(graph, d_uBp_v1)
insert_node(graph, d_uAp_v1)
insert_node(graph, uB)
insert_node(graph, uA)
insert_node(graph, uBp)
insert_node(graph, uAp)
insert_node(graph, d_PB_uB)
insert_node(graph, d_PA_uA)
insert_node(graph, d_PBp_uBp)
insert_node(graph, d_PAp_uAp)
insert_node(graph, PB)
insert_node(graph, PA)
insert_node(graph, PBp)
insert_node(graph, PAp)
insert_node(graph, d_PB)
insert_node(graph, d_PA)
insert_node(graph, d_PBp)
insert_node(graph, d_PAp)
d_PB = insert_node(graph, make_node(DataTask(4)))
d_PA = insert_node(graph, make_node(DataTask(4)))
d_PBp = insert_node(graph, make_node(DataTask(4)))
d_PAp = insert_node(graph, make_node(DataTask(4)))
# now for all the edgese
insert_edge(graph, make_edge(d_PB, PB))
@ -111,6 +83,9 @@ function main()
print(graph)
println("Available optimizations from here:")
println(generate_options(graph))
# fuse some things
fuse1 = node_fusion(graph, PB, d_PB_uB, uB)
fuse2 = node_fusion(graph, PA, d_PA_uA, uA)
@ -118,9 +93,11 @@ function main()
fuse4 = node_fusion(graph, PAp, d_PAp_uAp, uAp)
# on this graph, nothing can be reduced
println("Same graph after node fusion")
print(graph)
println("Available optimizations from here:")
println(generate_options(graph))
end
main()