Skip to content
Snippets Groups Projects
Commit 84d2978f authored by Russel Arbore's avatar Russel Arbore
Browse files

bfs w/ and reduction

parent 2598806c
No related branches found
No related tags found
2 merge requests!215Large benches,!214More optimizations
Pipeline #202015 canceled
This commit is part of merge request !214. Comments created here will be created in the context of that merge request.
...@@ -10,14 +10,16 @@ macro simpl!(X) { ...@@ -10,14 +10,16 @@ macro simpl!(X) {
phi-elim(bfs); phi-elim(bfs);
no-memset(bfs@cost); no-memset(bfs@cost);
let cost_init = outline(bfs@cost_init); let init = outline(bfs@cost_init);
let loop1 = outline(bfs@loop1); let loop1 = outline(bfs@loop1);
let loop2 = outline(bfs@loop2); let loop2 = outline(bfs@loop2);
gpu(loop1, loop2); let loop3 = outline(bfs@loop3);
parallel-reduce(loop1);
simpl!(*); simpl!(*);
predication(*); predication(*);
const-inline(*); const-inline(*);
loop-bound-canon(*);
simpl!(*); simpl!(*);
fixpoint { fixpoint {
forkify(*); forkify(*);
...@@ -26,14 +28,44 @@ fixpoint { ...@@ -26,14 +28,44 @@ fixpoint {
simpl!(*); simpl!(*);
predication(*); predication(*);
simpl!(*); simpl!(*);
unforkify(cost_init);
parallel-reduce(loop1);
forkify(*);
fork-guard-elim(*);
simpl!(*);
predication(*);
reduce-slf(*); reduce-slf(*);
simpl!(*); simpl!(*);
fork-tile[32, 0, false, true](loop1);
fork-split(loop1);
gpu(loop1);
fixpoint {
forkify(loop2, loop3);
fork-guard-elim(loop2, loop3);
}
simpl!(loop2, loop3);
fork-tile[32, 0, false, true](loop2, loop3);
let out = fork-split(loop2, loop3);
clean-monoid-reduces(loop2, loop3);
simpl!(loop2, loop3);
gpu(loop3);
let fission1 = fork-fission[out.bfs_2.fj0](loop2);
simpl!(loop2);
fork-tile[32, 0, false, true](fission1.bfs_2.fj_bottom);
let out = fork-split(fission1.bfs_2.fj_bottom);
clean-monoid-reduces(loop2);
simpl!(loop2);
let fission2 = fork-fission[out.bfs_2.fj0](loop2);
simpl!(loop2);
fork-tile[32, 0, false, true](fission2.bfs_2.fj_bottom);
let out = fork-split(fission2.bfs_2.fj_bottom);
clean-monoid-reduces(loop2);
simpl!(loop2);
let top = outline(fission1.bfs_2.fj_top);
let middle = outline(fission2.bfs_2.fj_top);
let bottom = outline(out.bfs_2.fj0);
const-inline(loop2, top, middle, bottom);
no-memset(top, middle);
gpu(top, middle, bottom);
simpl!(loop2, top, middle, bottom);
unforkify(init);
gcm(*); gcm(*);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment