From 6b4c9e09110dce150b0b088e3092f3cffd6e673b Mon Sep 17 00:00:00 2001
From: Russel Arbore <rarbore2@illinois.edu>
Date: Sat, 8 Mar 2025 11:47:50 -0600
Subject: [PATCH] attempt unroll+tile for cfd

---
 juno_samples/rodinia/cfd/benches/cfd_bench.rs  | 4 ++--
 juno_samples/rodinia/cfd/src/cpu_euler.sch     | 4 +++-
 juno_samples/rodinia/cfd/src/cpu_pre_euler.sch | 4 +++-
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/juno_samples/rodinia/cfd/benches/cfd_bench.rs b/juno_samples/rodinia/cfd/benches/cfd_bench.rs
index 5b4db044..17c503b3 100644
--- a/juno_samples/rodinia/cfd/benches/cfd_bench.rs
+++ b/juno_samples/rodinia/cfd/benches/cfd_bench.rs
@@ -14,7 +14,7 @@ fn cfd_bench(c: &mut Criterion) {
 
     let mut euler_bench = |name, data_file, iterations| {
         let mut r = runner!(euler);
-        let block_size = 16;
+        let block_size = 256;
         let FarFieldConditions {
             ff_variable,
             ff_fc_momentum_x,
@@ -92,7 +92,7 @@ fn cfd_bench(c: &mut Criterion) {
 
     let mut pre_euler_bench = |name, data_file, iterations| {
         let mut r = runner!(pre_euler);
-        let block_size = 16;
+        let block_size = 256;
         let FarFieldConditions {
             ff_variable,
             ff_fc_momentum_x,
diff --git a/juno_samples/rodinia/cfd/src/cpu_euler.sch b/juno_samples/rodinia/cfd/src/cpu_euler.sch
index d9d3eb8c..a5c7cbdf 100644
--- a/juno_samples/rodinia/cfd/src/cpu_euler.sch
+++ b/juno_samples/rodinia/cfd/src/cpu_euler.sch
@@ -25,7 +25,8 @@ fixpoint {
   fork-guard-elim(*);
 }
 simpl!(*);
-unforkify(compute_flux@inner_loop);
+//unforkify(compute_flux@inner_loop);
+fork-unroll(compute_flux);
 
 if !feature("seq") {
   fork-tile[32, 0, false, false](compute_step_factor);
@@ -41,6 +42,7 @@ if !feature("seq") {
   fork-coalesce(compute_flux, compute_flux_body);
   simpl!(compute_flux, compute_flux_body);
   compute_flux = compute_flux_body;
+  fork-tile[8, 0, false, true](compute_flux);
 
   fork-tile[32, 0, false, false](time_step);
   let split = fork-split(time_step);
diff --git a/juno_samples/rodinia/cfd/src/cpu_pre_euler.sch b/juno_samples/rodinia/cfd/src/cpu_pre_euler.sch
index 3acee55b..3018ea3e 100644
--- a/juno_samples/rodinia/cfd/src/cpu_pre_euler.sch
+++ b/juno_samples/rodinia/cfd/src/cpu_pre_euler.sch
@@ -25,7 +25,8 @@ fixpoint {
 }
 simpl!(*);
 no-memset(compute_step_factor@res, compute_flux_contributions@res, compute_flux@res, copy_vars@res);
-unforkify(compute_flux@inner_loop);
+//unforkify(compute_flux@inner_loop);
+fork-unroll(compute_flux);
 
 if !feature("seq") {
   fork-tile[32, 0, false, false](compute_step_factor);
@@ -48,6 +49,7 @@ if !feature("seq") {
   fork-coalesce(compute_flux, compute_flux_body);
   simpl!(compute_flux, compute_flux_body);
   compute_flux = compute_flux_body;
+  fork-tile[8, 0, false, true](compute_flux);
 
   fork-tile[32, 0, false, false](time_step);
   let split = fork-split(time_step);
-- 
GitLab