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

Create two benches in backprop, one old size, one new size

parent b442e4f8
No related branches found
No related tags found
1 merge request!215Large benches
Pipeline #202043 passed
This commit is part of merge request !215. Comments created here will be created in the context of that merge request.
......@@ -9,7 +9,8 @@ juno_build::juno!("backprop");
// We need this even though we don't use anything from the library because of
// Rust build scripts only linking static libraries into the library, and not
// into the benchmark binary. Ugh!
// into the benchmark binary. Yuck!
#[allow(unused_imports)]
use juno_backprop::*;
fn backprop_bench(c: &mut Criterion) {
......@@ -18,52 +19,56 @@ fn backprop_bench(c: &mut Criterion) {
let mut rng = StdRng::seed_from_u64(7);
let input_n = 33554432;
let hidden_n = 16;
let output_n = 1;
let mut bench = |name, input_n: usize| {
let hidden_n = 16;
let output_n = 1;
let mut input_vals = vec![0.0f32; input_n + 1];
input_vals[0] = 1.0;
let mut input_vals = vec![0.0f32; input_n + 1];
input_vals[0] = 1.0;
// For some reason the bpnn_randomize_row function used on target just sets it to 0.1
let target = vec![0.1f32; output_n + 1];
// For some reason the bpnn_randomize_row function used on target just sets it to 0.1
let target = vec![0.1f32; output_n + 1];
let input_weights = (0..(input_n + 1) * (hidden_n + 1))
.map(|_| rng.random::<f32>())
.collect::<Vec<_>>();
let hidden_weights = (0..(hidden_n + 1) * (output_n + 1))
.map(|_| rng.random::<f32>())
.collect::<Vec<_>>();
let input_weights = (0..(input_n + 1) * (hidden_n + 1))
.map(|_| rng.random::<f32>())
.collect::<Vec<_>>();
let hidden_weights = (0..(hidden_n + 1) * (output_n + 1))
.map(|_| rng.random::<f32>())
.collect::<Vec<_>>();
let input_prev_weights = vec![0.0; (input_n + 1) * (hidden_n + 1)];
let hidden_prev_weights = vec![0.0; (hidden_n + 1) * (output_n + 1)];
let input_prev_weights = vec![0.0; (input_n + 1) * (hidden_n + 1)];
let hidden_prev_weights = vec![0.0; (hidden_n + 1) * (output_n + 1)];
let mut r = runner!(backprop);
let input_vals = HerculesImmBox::from(&input_vals as &[f32]);
let target = HerculesImmBox::from(&target as &[f32]);
let mut input_weights = HerculesMutBox::from(input_weights.to_vec());
let mut hidden_weights = HerculesMutBox::from(hidden_weights.to_vec());
let mut input_prev_weights = HerculesMutBox::from(input_prev_weights.to_vec());
let mut hidden_prev_weights = HerculesMutBox::from(hidden_prev_weights.to_vec());
let mut r = runner!(backprop);
let input_vals = HerculesImmBox::from(&input_vals as &[f32]);
let target = HerculesImmBox::from(&target as &[f32]);
let mut input_weights = HerculesMutBox::from(input_weights.to_vec());
let mut hidden_weights = HerculesMutBox::from(hidden_weights.to_vec());
let mut input_prev_weights = HerculesMutBox::from(input_prev_weights.to_vec());
let mut hidden_prev_weights = HerculesMutBox::from(hidden_prev_weights.to_vec());
group.bench_function("backprop bench large", |b| {
b.iter(|| {
async_std::task::block_on(async {
r.run(
input_n as u64,
hidden_n as u64,
output_n as u64,
input_vals.to(),
input_weights.to(),
hidden_weights.to(),
target.to(),
input_prev_weights.to(),
hidden_prev_weights.to(),
)
.await
});
})
});
group.bench_function(name, |b| {
b.iter(|| {
async_std::task::block_on(async {
r.run(
input_n as u64,
hidden_n as u64,
output_n as u64,
input_vals.to(),
input_weights.to(),
hidden_weights.to(),
target.to(),
input_prev_weights.to(),
hidden_prev_weights.to(),
)
.await
});
})
});
};
bench("backprop bench small", 65536);
bench("backprop bench large", 33554432);
}
criterion_group!(benches, backprop_bench);
......
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