From 2598806c43fe6e518657b2c6bffb866695fdcab5 Mon Sep 17 00:00:00 2001
From: Russel Arbore <russel.jma@gmail.com>
Date: Sun, 2 Mar 2025 21:50:22 -0600
Subject: [PATCH] work on bfs

---
 juno_samples/rodinia/bfs/src/bfs.jn  | 11 ++++++-----
 juno_samples/rodinia/bfs/src/cpu.sch | 22 ++++++++++++----------
 2 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/juno_samples/rodinia/bfs/src/bfs.jn b/juno_samples/rodinia/bfs/src/bfs.jn
index 2534a89c..3d0280f1 100644
--- a/juno_samples/rodinia/bfs/src/bfs.jn
+++ b/juno_samples/rodinia/bfs/src/bfs.jn
@@ -44,11 +44,12 @@ fn bfs<n, m: usize>(graph_nodes: Node[n], source: u32, edges: u32[m]) -> i32[n]
 
     @loop2 for i in 0..n {
       stop = stop && !updated[i];
-      if updated[i] {
-        mask[i] = true;
-        visited[i] = true;
-        updated[i] = false;
-      }
+    }
+
+    @loop3 for i in 0..n {
+      mask[i] = mask[i] || updated[i];
+      visited[i] = visited[i] || updated[i];
+      updated[i] = false;
     }
   }
 
diff --git a/juno_samples/rodinia/bfs/src/cpu.sch b/juno_samples/rodinia/bfs/src/cpu.sch
index f94c473f..a33e361d 100644
--- a/juno_samples/rodinia/bfs/src/cpu.sch
+++ b/juno_samples/rodinia/bfs/src/cpu.sch
@@ -11,9 +11,9 @@ macro simpl!(X) {
 phi-elim(bfs);
 no-memset(bfs@cost);
 let init = outline(bfs@cost_init);
-let loop1 = outline(bfs@loop1);
-let loop2 = outline(bfs@loop2);
-parallel-reduce(loop1);
+let traverse = outline(bfs@loop1);
+let collect = outline(bfs@loop2 | bfs@loop3);
+parallel-reduce(traverse);
 
 simpl!(*);
 predication(*);
@@ -27,13 +27,15 @@ fixpoint {
 simpl!(*);
 predication(*);
 simpl!(*);
+reduce-slf(*);
+simpl!(*);
 
-fork-tile[32, 0, false, false](loop1);
-let split = fork-split(loop1);
-let out = outline(split.bfs_1.fj1);
-unforkify(out);
-inline(bfs@loop1);
-delete-uncalled(*);
+fixpoint {
+  forkify(collect);
+  fork-guard-elim(collect);
+}
+fork-fusion(collect);
+simpl!(collect);
 
-unforkify(init);
+unforkify(init, traverse, collect);
 gcm(*);
-- 
GitLab