From f3ddf1d2e3b74be58efd5a434ad8f7a9f6711b20 Mon Sep 17 00:00:00 2001 From: Russel Arbore <russel.jma@gmail.com> Date: Fri, 28 Feb 2025 19:42:08 -0600 Subject: [PATCH] Handle outputs --- juno_samples/rodinia/cfd/src/cpu_euler.sch | 4 +- .../rodinia/cfd/src/cpu_pre_euler.sch | 4 +- juno_samples/rodinia/cfd/src/lib.rs | 39 ++++++++++++++----- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/juno_samples/rodinia/cfd/src/cpu_euler.sch b/juno_samples/rodinia/cfd/src/cpu_euler.sch index 1244f80e..4cf320a6 100644 --- a/juno_samples/rodinia/cfd/src/cpu_euler.sch +++ b/juno_samples/rodinia/cfd/src/cpu_euler.sch @@ -14,8 +14,8 @@ simpl!(*); inline(compute_step_factor, compute_flux, compute_flux_contribution, time_step); delete-uncalled(*); simpl!(*); -ip-sroa[false](*); -sroa[false](*); +ip-sroa[true](*); +sroa[true](*); predication(*); const-inline(*); simpl!(*); diff --git a/juno_samples/rodinia/cfd/src/cpu_pre_euler.sch b/juno_samples/rodinia/cfd/src/cpu_pre_euler.sch index 6329c504..14eb6906 100644 --- a/juno_samples/rodinia/cfd/src/cpu_pre_euler.sch +++ b/juno_samples/rodinia/cfd/src/cpu_pre_euler.sch @@ -14,8 +14,8 @@ simpl!(*); inline(compute_step_factor, compute_flux, compute_flux_contributions, compute_flux_contribution, time_step); delete-uncalled(*); simpl!(*); -ip-sroa[false](*); -sroa[false](*); +ip-sroa[true](*); +sroa[true](*); predication(*); const-inline(*); simpl!(*); diff --git a/juno_samples/rodinia/cfd/src/lib.rs b/juno_samples/rodinia/cfd/src/lib.rs index 39384c0d..e054a605 100644 --- a/juno_samples/rodinia/cfd/src/lib.rs +++ b/juno_samples/rodinia/cfd/src/lib.rs @@ -55,8 +55,7 @@ fn run_euler( let ff_fc_momentum_z = HerculesImmBox::from(ff_fc_momentum_z.as_slice()); let mut runner = runner!(euler); - - HerculesMutBox::from(async_std::task::block_on(async { + let (density, x_m, y_m, z_m, energy) = async_std::task::block_on(async { runner .run( nelr as u64, @@ -72,9 +71,20 @@ fn run_euler( ff_fc_momentum_z.to(), ) .await - })) - .as_slice() - .to_vec() + }); + + let total = vec![]; + let density = HerculesMutBox::from(density).as_slice(); + let x_m = HerculesMutBox::from(x_m).as_slice(); + let y_m = HerculesMutBox::from(y_m).as_slice(); + let z_m = HerculesMutBox::from(z_m).as_slice(); + let energy = HerculesMutBox::from(energy).as_slice(); + total.extend(density.into_iter().map(|id: &mut f32| *id)); + total.extend(x_m.into_iter().map(|id: &mut f32| *id)); + total.extend(y_m.into_iter().map(|id: &mut f32| *id)); + total.extend(z_m.into_iter().map(|id: &mut f32| *id)); + total.extend(energy.into_iter().map(|id: &mut f32| *id)); + total } fn run_pre_euler( @@ -114,7 +124,7 @@ fn run_pre_euler( let variables = variables.to(); - HerculesMutBox::from(async_std::task::block_on(async { + let (density, x_m, y_m, z_m, energy) = async_std::task::block_on(async { runner .run( nelr as u64, @@ -130,9 +140,20 @@ fn run_pre_euler( ff_fc_momentum_z.to(), ) .await - })) - .as_slice() - .to_vec() + }); + + let total = vec![]; + let density = HerculesMutBox::from(density).as_slice(); + let x_m = HerculesMutBox::from(x_m).as_slice(); + let y_m = HerculesMutBox::from(y_m).as_slice(); + let z_m = HerculesMutBox::from(z_m).as_slice(); + let energy = HerculesMutBox::from(energy).as_slice(); + total.extend(density.into_iter().map(|id: &mut f32| *id)); + total.extend(x_m.into_iter().map(|id: &mut f32| *id)); + total.extend(y_m.into_iter().map(|id: &mut f32| *id)); + total.extend(z_m.into_iter().map(|id: &mut f32| *id)); + total.extend(energy.into_iter().map(|id: &mut f32| *id)); + total } fn compare_float(x: f32, y: f32) -> bool { -- GitLab