Skip to content

Commit

Permalink
bench several funcs
Browse files Browse the repository at this point in the history
  • Loading branch information
kali committed Apr 3, 2023
1 parent b8bf9ad commit 04a3f0b
Showing 1 changed file with 17 additions and 11 deletions.
28 changes: 17 additions & 11 deletions linalg/activations/benches/vm.rs
Original file line number Diff line number Diff line change
@@ -1,35 +1,41 @@
use activations::{definitions, reference};
use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion, BatchSize};
use activations::{definitions, reference, Program};
use criterion::{black_box, criterion_group, criterion_main, BatchSize, BenchmarkId, Criterion};

pub fn criterion_benchmark(c: &mut Criterion) {
let mut group = c.benchmark_group("relu");
fn crit(c: &mut Criterion, name: &str, r: impl Fn(f32) -> f32, prog: &Program) {
let mut group = c.benchmark_group(name);
for size in [1i32, 32, 256, 1024, 8192].iter() {
group.throughput(criterion::Throughput::Elements(*size as u64));
group.bench_with_input(BenchmarkId::new("Reference", size), size, |b, size| {
b.iter_batched(
|| vec![1.0f32; *size as usize],
|v| {
for x in v {
reference::relu(black_box(x));
r(black_box(x));
}
},
BatchSize::LargeInput
)
BatchSize::LargeInput,
)
});
let d = definitions::relu();
group.bench_with_input(BenchmarkId::new("VM", size), size, |b, size| {
b.iter_batched(
|| vec![1.0f32; *size as usize],
|v| {
for x in v {
d.compute(black_box(x));
prog.compute(black_box(x));
}
},
BatchSize::LargeInput
)
BatchSize::LargeInput,
)
});
}
}

fn criterion_benchmark(c: &mut Criterion) {
crit(c, "relu", reference::relu, &definitions::relu());
crit(c, "hardswish", reference::hardswish, &definitions::hardswish());
crit(c, "exp2f", reference::exp2f, &definitions::exp2f());
crit(c, "sigmoid", reference::sigmoid, &definitions::sigmoid());
}

criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);

0 comments on commit 04a3f0b

Please sign in to comment.