From 3b1aa5d426c2c43032abef5a0505fc935da2eadc Mon Sep 17 00:00:00 2001 From: Russel Arbore <russel.jma@gmail.com> Date: Sun, 2 Mar 2025 21:19:31 -0600 Subject: [PATCH] parallelize main loop in bfs --- juno_samples/rodinia/bfs/src/cpu.sch | 13 +++++++++++-- juno_samples/rodinia/bfs/src/lib.rs | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/juno_samples/rodinia/bfs/src/cpu.sch b/juno_samples/rodinia/bfs/src/cpu.sch index ae67fdd9..f94c473f 100644 --- a/juno_samples/rodinia/bfs/src/cpu.sch +++ b/juno_samples/rodinia/bfs/src/cpu.sch @@ -10,13 +10,15 @@ macro simpl!(X) { phi-elim(bfs); no-memset(bfs@cost); -outline(bfs@cost_init); +let init = outline(bfs@cost_init); let loop1 = outline(bfs@loop1); let loop2 = outline(bfs@loop2); +parallel-reduce(loop1); simpl!(*); predication(*); const-inline(*); +loop-bound-canon(*); simpl!(*); fixpoint { forkify(*); @@ -26,5 +28,12 @@ simpl!(*); predication(*); simpl!(*); -unforkify(*); +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(*); + +unforkify(init); gcm(*); diff --git a/juno_samples/rodinia/bfs/src/lib.rs b/juno_samples/rodinia/bfs/src/lib.rs index 218e9bb0..f6403540 100644 --- a/juno_samples/rodinia/bfs/src/lib.rs +++ b/juno_samples/rodinia/bfs/src/lib.rs @@ -19,6 +19,7 @@ pub struct BFSInputs { fn run_bfs(nodes: &[Node], source: u32, edges: &[u32]) -> Vec<i32> { let n = nodes.len() as u64; let m = edges.len() as u64; + println!("Running with {} nodes and {} edges.", n, m); let nodes = HerculesImmBox::from(nodes); let edges = HerculesImmBox::from(edges); -- GitLab