Skip to content
Snippets Groups Projects
Commit d5af9dea authored by Russel Arbore's avatar Russel Arbore
Browse files

BFS bench add useful error messages

parent cf91c103
No related branches found
No related tags found
1 merge request!215Large benches
Pipeline #202044 passed
This commit is part of merge request !215. Comments created here will be created in the context of that merge request.
...@@ -14,7 +14,7 @@ fn bfs_bench(c: &mut Criterion) { ...@@ -14,7 +14,7 @@ fn bfs_bench(c: &mut Criterion) {
let mut r = runner!(bfs); let mut r = runner!(bfs);
let input = "data/graph4096.txt"; let input = "data/graph4096.txt";
let (nodes, source, edges) = parse_graph(input.into()); let (nodes, source, edges) = parse_graph(input.into()).unwrap();
let n = nodes.len() as u64; let n = nodes.len() as u64;
let m = edges.len() as u64; let m = edges.len() as u64;
let nodes = HerculesImmBox::from(&nodes as &[Node]); let nodes = HerculesImmBox::from(&nodes as &[Node]);
...@@ -26,7 +26,7 @@ fn bfs_bench(c: &mut Criterion) { ...@@ -26,7 +26,7 @@ fn bfs_bench(c: &mut Criterion) {
}); });
let input = "data/graph65536.txt"; let input = "data/graph65536.txt";
let (nodes, source, edges) = parse_graph(input.into()); let (nodes, source, edges) = parse_graph(input.into()).unwrap();
let n = nodes.len() as u64; let n = nodes.len() as u64;
let m = edges.len() as u64; let m = edges.len() as u64;
let nodes = HerculesImmBox::from(&nodes as &[Node]); let nodes = HerculesImmBox::from(&nodes as &[Node]);
...@@ -38,7 +38,7 @@ fn bfs_bench(c: &mut Criterion) { ...@@ -38,7 +38,7 @@ fn bfs_bench(c: &mut Criterion) {
}); });
let input = "/scratch/aaronjc4/rodinia_3.1/data/bfs/graph64M.txt"; let input = "/scratch/aaronjc4/rodinia_3.1/data/bfs/graph64M.txt";
let (nodes, source, edges) = parse_graph(input.into()); 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 n = nodes.len() as u64;
let m = edges.len() as u64; let m = edges.len() as u64;
let nodes = HerculesImmBox::from(&nodes as &[Node]); let nodes = HerculesImmBox::from(&nodes as &[Node]);
......
...@@ -11,16 +11,18 @@ pub struct Node { ...@@ -11,16 +11,18 @@ pub struct Node {
pub num_edges: u32, pub num_edges: u32,
} }
pub fn parse_graph(file: String) -> (Vec<Node>, u32, Vec<u32>) { pub fn parse_graph(file: String) -> Result<(Vec<Node>, u32, Vec<u32>), String> {
let mut file = File::open(file).expect("Error opening input file"); let mut file = File::open(file).map_err(|err| format!("Error opening input file: {}", err))?;
let mut contents = String::new(); let mut contents = String::new();
file.read_to_string(&mut contents) 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(graph_parser); let mut parser = nom::combinator::all_consuming(graph_parser);
let (_, result) = parser.parse(&contents).expect("Parser error"); let (_, result) = parser
.parse(&contents)
.map_err(|err| format!("Parsing error: {}", err))?;
result Ok(result)
} }
fn graph_parser<'a>(text: &'a str) -> nom::IResult<&'a str, (Vec<Node>, u32, Vec<u32>)> { fn graph_parser<'a>(text: &'a str) -> nom::IResult<&'a str, (Vec<Node>, u32, Vec<u32>)> {
......
...@@ -36,7 +36,7 @@ fn run_bfs(nodes: &[Node], source: u32, edges: &[u32]) -> Vec<i32> { ...@@ -36,7 +36,7 @@ fn run_bfs(nodes: &[Node], source: u32, edges: &[u32]) -> Vec<i32> {
pub fn bfs_harness(args: BFSInputs) { pub fn bfs_harness(args: BFSInputs) {
let BFSInputs { input } = args; let BFSInputs { input } = args;
let (nodes, source, edges) = parse_graph(input); let (nodes, source, edges) = parse_graph(input).unwrap();
let costs_juno = run_bfs(&nodes, source, &edges); let costs_juno = run_bfs(&nodes, source, &edges);
let costs_ref = rust_bfs::bfs(&nodes, source, &edges); let costs_ref = rust_bfs::bfs(&nodes, source, &edges);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment