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
......@@ -14,7 +14,7 @@ fn bfs_bench(c: &mut Criterion) {
let mut r = runner!(bfs);
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 m = edges.len() as u64;
let nodes = HerculesImmBox::from(&nodes as &[Node]);
......@@ -26,7 +26,7 @@ fn bfs_bench(c: &mut Criterion) {
});
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 m = edges.len() as u64;
let nodes = HerculesImmBox::from(&nodes as &[Node]);
......@@ -38,7 +38,7 @@ fn bfs_bench(c: &mut Criterion) {
});
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 m = edges.len() as u64;
let nodes = HerculesImmBox::from(&nodes as &[Node]);
......
......@@ -11,16 +11,18 @@ pub struct Node {
pub num_edges: u32,
}
pub fn parse_graph(file: String) -> (Vec<Node>, u32, Vec<u32>) {
let mut file = File::open(file).expect("Error opening input file");
pub fn parse_graph(file: String) -> Result<(Vec<Node>, u32, Vec<u32>), String> {
let mut file = File::open(file).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(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>)> {
......
......@@ -36,7 +36,7 @@ fn run_bfs(nodes: &[Node], source: u32, edges: &[u32]) -> Vec<i32> {
pub fn bfs_harness(args: BFSInputs) {
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_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