diff --git a/juno_samples/rodinia/bfs/benches/bfs_bench.rs b/juno_samples/rodinia/bfs/benches/bfs_bench.rs
index 9c09c180a82cf402ae75b1f6d001b1065e7efd5c..f87b4e09bc2c3707b1436ad21b2f8f8407033e52 100644
--- a/juno_samples/rodinia/bfs/benches/bfs_bench.rs
+++ b/juno_samples/rodinia/bfs/benches/bfs_bench.rs
@@ -13,37 +13,37 @@ fn bfs_bench(c: &mut Criterion) {
 
     let mut r = runner!(bfs);
 
-    let input = "data/graph4096.txt";
-    let (nodes, source, edges) = parse_graph(input.into()).unwrap();
-    let n = nodes.len() as u64;
-    let m = edges.len() as u64;
-    let nodes = HerculesImmBox::from(&nodes as &[Node]);
-    let edges = HerculesImmBox::from(&edges as &[u32]);
     group.bench_function("bfs bench 4096", |b| {
+        let input = "data/graph4096.txt";
+        let (nodes, source, edges) = parse_graph(input.into()).unwrap();
+        let n = nodes.len() as u64;
+        let m = edges.len() as u64;
+        let nodes = HerculesImmBox::from(&nodes as &[Node]);
+        let edges = HerculesImmBox::from(&edges as &[u32]);
         b.iter(|| {
             async_std::task::block_on(async { r.run(n, m, nodes.to(), source, edges.to()).await });
         })
     });
 
-    let input = "data/graph65536.txt";
-    let (nodes, source, edges) = parse_graph(input.into()).unwrap();
-    let n = nodes.len() as u64;
-    let m = edges.len() as u64;
-    let nodes = HerculesImmBox::from(&nodes as &[Node]);
-    let edges = HerculesImmBox::from(&edges as &[u32]);
     group.bench_function("bfs bench 65536", |b| {
+        let input = "data/graph65536.txt";
+        let (nodes, source, edges) = parse_graph(input.into()).unwrap();
+        let n = nodes.len() as u64;
+        let m = edges.len() as u64;
+        let nodes = HerculesImmBox::from(&nodes as &[Node]);
+        let edges = HerculesImmBox::from(&edges as &[u32]);
         b.iter(|| {
             async_std::task::block_on(async { r.run(n, m, nodes.to(), source, edges.to()).await });
         })
     });
 
-    let input = "/scratch/aaronjc4/rodinia_3.1/data/bfs/graph64M.txt";
-    let (nodes, source, edges) = parse_graph(input.into()).expect("PANIC: Couldn't read input file for 64M benchmark. Currently, this benchmark uses a hard-coded path, so it can only be run on the lab machines.");
-    let n = nodes.len() as u64;
-    let m = edges.len() as u64;
-    let nodes = HerculesImmBox::from(&nodes as &[Node]);
-    let edges = HerculesImmBox::from(&edges as &[u32]);
     group.bench_function("bfs bench 64M", |b| {
+        let input = "/scratch/aaronjc4/rodinia_3.1/data/bfs/graph64M.txt";
+        let (nodes, source, edges) = parse_graph(input.into()).expect("PANIC: Couldn't read input file for 64M benchmark. Currently, this benchmark uses a hard-coded path, so it can only be run on the lab machines.");
+        let n = nodes.len() as u64;
+        let m = edges.len() as u64;
+        let nodes = HerculesImmBox::from(&nodes as &[Node]);
+        let edges = HerculesImmBox::from(&edges as &[u32]);
         b.iter(|| {
             async_std::task::block_on(async { r.run(n, m, nodes.to(), source, edges.to()).await });
         })
diff --git a/juno_samples/rodinia/cfd/benches/cfd_bench.rs b/juno_samples/rodinia/cfd/benches/cfd_bench.rs
index 962c524918b4a03770629e4d55cc3c4fb6613638..aa6d772724238d13b6464398b07b67e287716085 100644
--- a/juno_samples/rodinia/cfd/benches/cfd_bench.rs
+++ b/juno_samples/rodinia/cfd/benches/cfd_bench.rs
@@ -12,149 +12,161 @@ fn cfd_bench(c: &mut Criterion) {
     let mut group = c.benchmark_group("cfd bench");
     group.sample_size(10);
 
-    let mut r = runner!(euler);
-    let data_file = "/scratch/aaronjc4/rodinia_3.1/data/cfd/missile.domn.0.2M".to_string();
-    let iterations = 150;
-    let block_size = 16;
-    let FarFieldConditions {
-        ff_variable,
-        ff_fc_momentum_x,
-        ff_fc_momentum_y,
-        ff_fc_momentum_z,
-        ff_fc_density_energy,
-    } = set_far_field_conditions();
-    let GeometryData {
-        nelr,
-        areas,
-        elements_surrounding_elements,
-        normals,
-    } = read_domain_geometry(data_file, block_size);
-    let mut variables = initialize_variables(nelr, &ff_variable);
+    let mut euler_bench = |name, data_file, iterations| {
+        group.bench_function(name, |b| {
+            let mut r = runner!(euler);
+            let block_size = 16;
+            let FarFieldConditions {
+                ff_variable,
+                ff_fc_momentum_x,
+                ff_fc_momentum_y,
+                ff_fc_momentum_z,
+                ff_fc_density_energy,
+            } = set_far_field_conditions();
+            let GeometryData {
+                nelr,
+                areas,
+                elements_surrounding_elements,
+                normals,
+            } = read_domain_geometry(data_file, block_size).expect("PANIC: Couldn't read input for CFD benchmark. Currently, the path for the largest CFD benchmark is hard-coded, so it can only be run on the lab machines.");
+            let mut variables = initialize_variables(nelr, &ff_variable);
 
-    let mut v_density = HerculesMutBox::from(variables.density.as_mut_slice());
-    let mut v_momentum_x = HerculesMutBox::from(variables.momentum.x.as_mut_slice());
-    let mut v_momentum_y = HerculesMutBox::from(variables.momentum.y.as_mut_slice());
-    let mut v_momentum_z = HerculesMutBox::from(variables.momentum.z.as_mut_slice());
-    let mut v_energy = HerculesMutBox::from(variables.energy.as_mut_slice());
+            let mut v_density = HerculesMutBox::from(variables.density.as_mut_slice());
+            let mut v_momentum_x = HerculesMutBox::from(variables.momentum.x.as_mut_slice());
+            let mut v_momentum_y = HerculesMutBox::from(variables.momentum.y.as_mut_slice());
+            let mut v_momentum_z = HerculesMutBox::from(variables.momentum.z.as_mut_slice());
+            let mut v_energy = HerculesMutBox::from(variables.energy.as_mut_slice());
 
-    let areas = HerculesImmBox::from(areas.as_slice());
-    let elements_surrounding_elements =
-        HerculesImmBox::from(elements_surrounding_elements.as_slice());
+            let areas = HerculesImmBox::from(areas.as_slice());
+            let elements_surrounding_elements =
+                HerculesImmBox::from(elements_surrounding_elements.as_slice());
 
-    let normals_x = HerculesImmBox::from(normals.x.as_slice());
-    let normals_y = HerculesImmBox::from(normals.y.as_slice());
-    let normals_z = HerculesImmBox::from(normals.z.as_slice());
+            let normals_x = HerculesImmBox::from(normals.x.as_slice());
+            let normals_y = HerculesImmBox::from(normals.y.as_slice());
+            let normals_z = HerculesImmBox::from(normals.z.as_slice());
 
-    group.bench_function("cfd bench euler large", |b| {
-        b.iter(|| {
-            async_std::task::block_on(async {
-                r.run(
-                    nelr as u64,
-                    iterations as u64,
-                    v_density.to(),
-                    v_momentum_x.to(),
-                    v_momentum_y.to(),
-                    v_momentum_z.to(),
-                    v_energy.to(),
-                    areas.to(),
-                    elements_surrounding_elements.to(),
-                    normals_x.to(),
-                    normals_y.to(),
-                    normals_z.to(),
-                    ff_variable.density,
-                    ff_variable.momentum.x,
-                    ff_variable.momentum.y,
-                    ff_variable.momentum.z,
-                    ff_variable.energy,
-                    ff_fc_density_energy.x,
-                    ff_fc_density_energy.y,
-                    ff_fc_density_energy.z,
-                    ff_fc_momentum_x.x,
-                    ff_fc_momentum_x.y,
-                    ff_fc_momentum_x.z,
-                    ff_fc_momentum_y.x,
-                    ff_fc_momentum_y.y,
-                    ff_fc_momentum_y.z,
-                    ff_fc_momentum_z.x,
-                    ff_fc_momentum_z.y,
-                    ff_fc_momentum_z.z,
-                )
-                .await
-            });
-        })
-    });
+            b.iter(|| {
+                async_std::task::block_on(async {
+                    r.run(
+                        nelr as u64,
+                        iterations as u64,
+                        v_density.to(),
+                        v_momentum_x.to(),
+                        v_momentum_y.to(),
+                        v_momentum_z.to(),
+                        v_energy.to(),
+                        areas.to(),
+                        elements_surrounding_elements.to(),
+                        normals_x.to(),
+                        normals_y.to(),
+                        normals_z.to(),
+                        ff_variable.density,
+                        ff_variable.momentum.x,
+                        ff_variable.momentum.y,
+                        ff_variable.momentum.z,
+                        ff_variable.energy,
+                        ff_fc_density_energy.x,
+                        ff_fc_density_energy.y,
+                        ff_fc_density_energy.z,
+                        ff_fc_momentum_x.x,
+                        ff_fc_momentum_x.y,
+                        ff_fc_momentum_x.z,
+                        ff_fc_momentum_y.x,
+                        ff_fc_momentum_y.y,
+                        ff_fc_momentum_y.z,
+                        ff_fc_momentum_z.x,
+                        ff_fc_momentum_z.y,
+                        ff_fc_momentum_z.z,
+                    )
+                    .await
+                });
+            })
+        });
+    };
+    euler_bench("cfd bench euler small", "data/fvcorr.domn.097K", 1);
+    euler_bench(
+        "cfd bench euler large",
+        "/scratch/aaronjc4/rodinia_3.1/data/cfd/missile.domn.0.2M",
+        150,
+    );
 
-    let mut r = runner!(pre_euler);
-    let data_file = "/scratch/aaronjc4/rodinia_3.1/data/cfd/missile.domn.0.2M".to_string();
-    let iterations = 150;
-    let block_size = 16;
-    let FarFieldConditions {
-        ff_variable,
-        ff_fc_momentum_x,
-        ff_fc_momentum_y,
-        ff_fc_momentum_z,
-        ff_fc_density_energy,
-    } = set_far_field_conditions();
-    let GeometryData {
-        nelr,
-        areas,
-        elements_surrounding_elements,
-        normals,
-    } = read_domain_geometry(data_file, block_size);
-    let mut variables = initialize_variables(nelr, &ff_variable);
+    let mut pre_euler_bench = |name, data_file, iterations| {
+        group.bench_function(name, |b| {
+            let mut r = runner!(pre_euler);
+            let block_size = 16;
+            let FarFieldConditions {
+                ff_variable,
+                ff_fc_momentum_x,
+                ff_fc_momentum_y,
+                ff_fc_momentum_z,
+                ff_fc_density_energy,
+            } = set_far_field_conditions();
+            let GeometryData {
+                nelr,
+                areas,
+                elements_surrounding_elements,
+                normals,
+            } = read_domain_geometry(data_file, block_size).expect("PANIC: Couldn't read input for CFD benchmark. Currently, the path for the largest CFD benchmark is hard-coded, so it can only be run on the lab machines.");
+            let mut variables = initialize_variables(nelr, &ff_variable);
 
-    let mut v_density = HerculesMutBox::from(variables.density.as_mut_slice());
-    let mut v_momentum_x = HerculesMutBox::from(variables.momentum.x.as_mut_slice());
-    let mut v_momentum_y = HerculesMutBox::from(variables.momentum.y.as_mut_slice());
-    let mut v_momentum_z = HerculesMutBox::from(variables.momentum.z.as_mut_slice());
-    let mut v_energy = HerculesMutBox::from(variables.energy.as_mut_slice());
+            let mut v_density = HerculesMutBox::from(variables.density.as_mut_slice());
+            let mut v_momentum_x = HerculesMutBox::from(variables.momentum.x.as_mut_slice());
+            let mut v_momentum_y = HerculesMutBox::from(variables.momentum.y.as_mut_slice());
+            let mut v_momentum_z = HerculesMutBox::from(variables.momentum.z.as_mut_slice());
+            let mut v_energy = HerculesMutBox::from(variables.energy.as_mut_slice());
 
-    let areas = HerculesImmBox::from(areas.as_slice());
-    let elements_surrounding_elements =
-        HerculesImmBox::from(elements_surrounding_elements.as_slice());
+            let areas = HerculesImmBox::from(areas.as_slice());
+            let elements_surrounding_elements =
+                HerculesImmBox::from(elements_surrounding_elements.as_slice());
 
-    let normals_x = HerculesImmBox::from(normals.x.as_slice());
-    let normals_y = HerculesImmBox::from(normals.y.as_slice());
-    let normals_z = HerculesImmBox::from(normals.z.as_slice());
+            let normals_x = HerculesImmBox::from(normals.x.as_slice());
+            let normals_y = HerculesImmBox::from(normals.y.as_slice());
+            let normals_z = HerculesImmBox::from(normals.z.as_slice());
 
-    group.bench_function("cfd bench pre-euler large", |b| {
-        b.iter(|| {
-            async_std::task::block_on(async {
-                r.run(
-                    nelr as u64,
-                    iterations as u64,
-                    v_density.to(),
-                    v_momentum_x.to(),
-                    v_momentum_y.to(),
-                    v_momentum_z.to(),
-                    v_energy.to(),
-                    areas.to(),
-                    elements_surrounding_elements.to(),
-                    normals_x.to(),
-                    normals_y.to(),
-                    normals_z.to(),
-                    ff_variable.density,
-                    ff_variable.momentum.x,
-                    ff_variable.momentum.y,
-                    ff_variable.momentum.z,
-                    ff_variable.energy,
-                    ff_fc_density_energy.x,
-                    ff_fc_density_energy.y,
-                    ff_fc_density_energy.z,
-                    ff_fc_momentum_x.x,
-                    ff_fc_momentum_x.y,
-                    ff_fc_momentum_x.z,
-                    ff_fc_momentum_y.x,
-                    ff_fc_momentum_y.y,
-                    ff_fc_momentum_y.z,
-                    ff_fc_momentum_z.x,
-                    ff_fc_momentum_z.y,
-                    ff_fc_momentum_z.z,
-                )
-                .await
-            });
-        })
-    });
+            b.iter(|| {
+                async_std::task::block_on(async {
+                    r.run(
+                        nelr as u64,
+                        iterations as u64,
+                        v_density.to(),
+                        v_momentum_x.to(),
+                        v_momentum_y.to(),
+                        v_momentum_z.to(),
+                        v_energy.to(),
+                        areas.to(),
+                        elements_surrounding_elements.to(),
+                        normals_x.to(),
+                        normals_y.to(),
+                        normals_z.to(),
+                        ff_variable.density,
+                        ff_variable.momentum.x,
+                        ff_variable.momentum.y,
+                        ff_variable.momentum.z,
+                        ff_variable.energy,
+                        ff_fc_density_energy.x,
+                        ff_fc_density_energy.y,
+                        ff_fc_density_energy.z,
+                        ff_fc_momentum_x.x,
+                        ff_fc_momentum_x.y,
+                        ff_fc_momentum_x.z,
+                        ff_fc_momentum_y.x,
+                        ff_fc_momentum_y.y,
+                        ff_fc_momentum_y.z,
+                        ff_fc_momentum_z.x,
+                        ff_fc_momentum_z.y,
+                        ff_fc_momentum_z.z,
+                    )
+                    .await
+                });
+            })
+        });
+    };
+    pre_euler_bench("cfd bench pre-euler small", "data/fvcorr.domn.097K", 1);
+    pre_euler_bench(
+        "cfd bench pre-euler large",
+        "/scratch/aaronjc4/rodinia_3.1/data/cfd/missile.domn.0.2M",
+        150,
+    );
 }
 
 criterion_group!(benches, cfd_bench);
diff --git a/juno_samples/rodinia/cfd/src/lib.rs b/juno_samples/rodinia/cfd/src/lib.rs
index a9800ed0d373bddcc678714f81537210236ed412..3b1e21e62f78f2dd1017d908f7b0f73a38712d7f 100644
--- a/juno_samples/rodinia/cfd/src/lib.rs
+++ b/juno_samples/rodinia/cfd/src/lib.rs
@@ -237,7 +237,7 @@ pub fn cfd_harness(args: CFDInputs) {
         areas,
         elements_surrounding_elements,
         normals,
-    } = read_domain_geometry(data_file, block_size);
+    } = read_domain_geometry(data_file, block_size).unwrap();
 
     let variables = initialize_variables(nelr, &ff_variable);
     println!("Running CFD with nelr = {}.", nelr);
diff --git a/juno_samples/rodinia/cfd/src/setup.rs b/juno_samples/rodinia/cfd/src/setup.rs
index 0da0025162c919d2e420d6bbb0e69f98d83e52ff..669810d601a9ccfcbff7b4d06cace3ab8623d0de 100644
--- a/juno_samples/rodinia/cfd/src/setup.rs
+++ b/juno_samples/rodinia/cfd/src/setup.rs
@@ -29,7 +29,7 @@ pub struct AlignedSlice<T> {
 
 impl<T> Debug for AlignedSlice<T>
 where
-    T: Debug
+    T: Debug,
 {
     fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error> {
         write!(f, "{:?}", self.as_slice())
@@ -127,7 +127,15 @@ pub struct FarFieldConditions {
 }
 
 pub fn set_far_field_conditions() -> FarFieldConditions {
-    let mut ff_variable = Variable { density: 0.0, momentum: Float3 { x: 0.0, y: 0.0, z: 0.0 }, energy: 0.0 };
+    let mut ff_variable = Variable {
+        density: 0.0,
+        momentum: Float3 {
+            x: 0.0,
+            y: 0.0,
+            z: 0.0,
+        },
+        energy: 0.0,
+    };
 
     let angle_of_attack = std::f32::consts::PI / 180.0 * deg_angle_of_attack;
 
@@ -186,19 +194,21 @@ pub struct GeometryData {
     pub normals: Normals,
 }
 
-pub fn read_domain_geometry<P>(path: P, block_size: usize) -> GeometryData
+pub fn read_domain_geometry<P>(path: P, block_size: usize) -> Result<GeometryData, String>
 where
     P: AsRef<Path>,
 {
-    let mut file = File::open(path).expect("Error opening input file");
+    let mut file = File::open(path).map_err(|err| format!("Error opening input file: {}", err))?;
     let mut contents = String::new();
     file.read_to_string(&mut contents)
-        .expect("Error reading input file");
+        .map_err(|err| format!("Error reading input file: {}", err))?;
 
     let mut parser = nom::combinator::all_consuming(|s| cfd_parser(block_size, s));
-    let (_, result) = parser.parse(&contents).expect("Parser error");
+    let (_, result) = parser
+        .parse(&contents)
+        .map_err(|err| format!("Parser error: {}", err))?;
 
-    result
+    Ok(result)
 }
 
 fn cfd_parser<'a>(block_size: usize, text: &'a str) -> nom::IResult<&'a str, GeometryData> {
@@ -240,17 +250,17 @@ fn cfd_parser<'a>(block_size: usize, text: &'a str) -> nom::IResult<&'a str, Geo
             let val = i32::from_str(val).unwrap();
             let val = if neg { -val } else { val };
             elements_surrounding_elements[i + j * nelr] = if val < 0 { -1 } else { val } - 1; // it's coming in with Fortran numbering
-                
+
             let t = nom::character::complete::multispace0(text)?.0;
             let (t, val) = nom::number::complete::float(t)?;
             text = t;
             normals.x[i + j * nelr] = -val;
-                
+
             let t = nom::character::complete::multispace0(text)?.0;
             let (t, val) = nom::number::complete::float(t)?;
             text = t;
             normals.y[i + j * nelr] = -val;
-                
+
             let t = nom::character::complete::multispace0(text)?.0;
             let (t, val) = nom::number::complete::float(t)?;
             text = t;