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