Skip to content
Snippets Groups Projects
Commit cf46a38b authored by Martin Larralde's avatar Martin Larralde
Browse files

Reorganize all benchmarks in `lightmotif` crate

parent 5c258648
No related branches found
No related tags found
No related merge requests found
......@@ -23,34 +23,34 @@ mod dna {
}
#[bench]
fn bench_generic(bencher: &mut test::Bencher) {
fn generic(bencher: &mut test::Bencher) {
let pli = Pipeline::generic();
bench(bencher, &pli);
}
#[bench]
fn bench_dispatch(bencher: &mut test::Bencher) {
fn dispatch(bencher: &mut test::Bencher) {
let pli = Pipeline::dispatch();
bench(bencher, &pli);
}
#[cfg(target_feature = "sse2")]
#[bench]
fn bench_sse2(bencher: &mut test::Bencher) {
fn sse2(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench(bencher, &pli);
}
#[cfg(target_feature = "avx2")]
#[bench]
fn bench_avx2(bencher: &mut test::Bencher) {
fn avx2(bencher: &mut test::Bencher) {
let pli = Pipeline::avx2().unwrap();
bench(bencher, &pli);
}
#[cfg(target_feature = "neon")]
#[bench]
fn bench_neon(bencher: &mut test::Bencher) {
fn neon(bencher: &mut test::Bencher) {
let pli = Pipeline::neon().unwrap();
bench(bencher, &pli);
}
......@@ -72,34 +72,34 @@ mod protein {
}
#[bench]
fn bench_generic(bencher: &mut test::Bencher) {
fn generic(bencher: &mut test::Bencher) {
let pli = Pipeline::generic();
bench(bencher, &pli);
}
#[bench]
fn bench_dispatch(bencher: &mut test::Bencher) {
fn dispatch(bencher: &mut test::Bencher) {
let pli = Pipeline::dispatch();
bench(bencher, &pli);
}
#[cfg(target_feature = "sse2")]
#[bench]
fn bench_sse2(bencher: &mut test::Bencher) {
fn sse2(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench(bencher, &pli);
}
#[cfg(target_feature = "avx2")]
#[bench]
fn bench_avx2(bencher: &mut test::Bencher) {
fn avx2(bencher: &mut test::Bencher) {
let pli = Pipeline::avx2().unwrap();
bench(bencher, &pli);
}
#[cfg(target_feature = "neon")]
#[bench]
fn bench_neon(bencher: &mut test::Bencher) {
fn neon(bencher: &mut test::Bencher) {
let pli = Pipeline::neon().unwrap();
bench(bencher, &pli);
}
......
......@@ -46,41 +46,41 @@ mod dna {
}
#[bench]
fn bench_generic(bencher: &mut test::Bencher) {
fn generic(bencher: &mut test::Bencher) {
let pli = Pipeline::generic();
bench::<U32, _>(bencher, &pli);
}
#[bench]
fn bench_dispatch(bencher: &mut test::Bencher) {
fn dispatch(bencher: &mut test::Bencher) {
let pli = Pipeline::dispatch();
bench(bencher, &pli);
}
#[cfg(target_feature = "sse2")]
#[bench]
fn bench_sse2(bencher: &mut test::Bencher) {
fn sse2(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench::<U16, _>(bencher, &pli);
}
#[cfg(target_feature = "sse2")]
#[bench]
fn bench_sse2_32(bencher: &mut test::Bencher) {
fn sse2_32(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench::<U32, _>(bencher, &pli);
}
#[cfg(target_feature = "avx2")]
#[bench]
fn bench_avx2(bencher: &mut test::Bencher) {
fn avx2(bencher: &mut test::Bencher) {
let pli = Pipeline::avx2().unwrap();
bench(bencher, &pli);
}
#[cfg(target_feature = "neon")]
#[bench]
fn bench_neon(bencher: &mut test::Bencher) {
fn neon(bencher: &mut test::Bencher) {
let pli = Pipeline::neon().unwrap();
bench::<U16, _>(bencher, &pli);
}
......@@ -112,41 +112,41 @@ mod dna {
}
#[bench]
fn bench_generic(bencher: &mut test::Bencher) {
fn generic(bencher: &mut test::Bencher) {
let pli = Pipeline::generic();
bench::<U32, _>(bencher, &pli);
}
#[bench]
fn bench_dispatch(bencher: &mut test::Bencher) {
fn dispatch(bencher: &mut test::Bencher) {
let pli = Pipeline::dispatch();
bench(bencher, &pli);
}
#[cfg(target_feature = "sse2")]
#[bench]
fn bench_sse2(bencher: &mut test::Bencher) {
fn sse2(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench::<U16, _>(bencher, &pli);
}
#[cfg(target_feature = "sse2")]
#[bench]
fn bench_sse2_32(bencher: &mut test::Bencher) {
fn sse2_32(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench::<U32, _>(bencher, &pli);
}
#[cfg(target_feature = "avx2")]
#[bench]
fn bench_avx2(bencher: &mut test::Bencher) {
fn avx2(bencher: &mut test::Bencher) {
let pli = Pipeline::avx2().unwrap();
bench(bencher, &pli);
}
#[cfg(target_feature = "neon")]
#[bench]
fn bench_neon(bencher: &mut test::Bencher) {
fn neon(bencher: &mut test::Bencher) {
let pli = Pipeline::neon().unwrap();
bench::<U16, _>(bencher, &pli);
}
......@@ -160,68 +160,75 @@ mod protein {
const SEQUENCE: &str = include_str!("abyB1.txt");
fn bench<C: StrictlyPositive, P: Score<f32, Protein, C>>(bencher: &mut test::Bencher, pli: &P) {
let encoded = EncodedSequence::<Protein>::encode(SEQUENCE).unwrap();
let mut striped = Pipeline::generic().stripe(encoded);
let cm = CountMatrix::<Protein>::from_sequences([
EncodedSequence::encode("SFKELGFDSLTAVELRNRLAAAT").unwrap(),
EncodedSequence::encode("AFKELGFDSLAAIQLRNRLLADV").unwrap(),
EncodedSequence::encode("PSRRLGFDSLTAVELRNQLAAST").unwrap(),
EncodedSequence::encode("AFREIGFDSLTAVELRNRLGAAA").unwrap(),
EncodedSequence::encode("SLMEEGLDSLAAVELGGTLQRDT").unwrap(),
EncodedSequence::encode("GFFDLGMDSLMAVELRRRIEQGV").unwrap(),
])
.unwrap();
let pbm = cm.to_freq(0.1);
let pssm = pbm.to_scoring(None);
striped.configure(&pssm);
let mut scores = StripedScores::empty();
scores.resize(striped.matrix().rows(), striped.len());
bencher.bytes = SEQUENCE.len() as u64;
bencher.iter(|| {
test::black_box(pli.score_into(&pssm, &striped, &mut scores));
});
}
mod f32 {
use super::*;
#[bench]
fn bench_generic(bencher: &mut test::Bencher) {
let pli = Pipeline::generic();
bench::<U32, _>(bencher, &pli);
}
fn bench<C: StrictlyPositive, P: Score<f32, Protein, C>>(
bencher: &mut test::Bencher,
pli: &P,
) {
let encoded = EncodedSequence::<Protein>::encode(SEQUENCE).unwrap();
let mut striped = Pipeline::generic().stripe(encoded);
#[bench]
fn bench_dispatch(bencher: &mut test::Bencher) {
let pli = Pipeline::dispatch();
bench(bencher, &pli);
}
let cm = CountMatrix::<Protein>::from_sequences([
EncodedSequence::encode("SFKELGFDSLTAVELRNRLAAAT").unwrap(),
EncodedSequence::encode("AFKELGFDSLAAIQLRNRLLADV").unwrap(),
EncodedSequence::encode("PSRRLGFDSLTAVELRNQLAAST").unwrap(),
EncodedSequence::encode("AFREIGFDSLTAVELRNRLGAAA").unwrap(),
EncodedSequence::encode("SLMEEGLDSLAAVELGGTLQRDT").unwrap(),
EncodedSequence::encode("GFFDLGMDSLMAVELRRRIEQGV").unwrap(),
])
.unwrap();
let pbm = cm.to_freq(0.1);
let pssm = pbm.to_scoring(None);
#[cfg(target_feature = "sse2")]
#[bench]
fn bench_sse2(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench::<U16, _>(bencher, &pli);
}
striped.configure(&pssm);
let mut scores = StripedScores::empty();
scores.resize(striped.matrix().rows(), striped.len());
bencher.bytes = SEQUENCE.len() as u64;
bencher.iter(|| {
test::black_box(pli.score_into(&pssm, &striped, &mut scores));
});
}
#[cfg(target_feature = "sse2")]
#[bench]
fn bench_sse2_32(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench::<U32, _>(bencher, &pli);
}
#[bench]
fn generic(bencher: &mut test::Bencher) {
let pli = Pipeline::generic();
bench::<U32, _>(bencher, &pli);
}
#[cfg(target_feature = "avx2")]
#[bench]
fn bench_avx2(bencher: &mut test::Bencher) {
let pli = Pipeline::avx2().unwrap();
bench(bencher, &pli);
}
#[bench]
fn dispatch(bencher: &mut test::Bencher) {
let pli = Pipeline::dispatch();
bench(bencher, &pli);
}
#[cfg(target_feature = "sse2")]
#[bench]
fn sse2(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench::<U16, _>(bencher, &pli);
}
#[cfg(target_feature = "sse2")]
#[bench]
fn sse2_32(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench::<U32, _>(bencher, &pli);
}
#[cfg(target_feature = "neon")]
#[bench]
fn bench_neon(bencher: &mut test::Bencher) {
let pli = Pipeline::neon().unwrap();
bench::<U16, _>(bencher, &pli);
#[cfg(target_feature = "avx2")]
#[bench]
fn avx2(bencher: &mut test::Bencher) {
let pli = Pipeline::avx2().unwrap();
bench(bencher, &pli);
}
#[cfg(target_feature = "neon")]
#[bench]
fn neon(bencher: &mut test::Bencher) {
let pli = Pipeline::neon().unwrap();
bench::<U16, _>(bencher, &pli);
}
}
}
......@@ -28,34 +28,34 @@ mod dna {
}
#[bench]
fn bench_generic(bencher: &mut test::Bencher) {
fn generic(bencher: &mut test::Bencher) {
let pli = Pipeline::generic();
bench(bencher, &pli);
}
#[bench]
fn bench_dispatch(bencher: &mut test::Bencher) {
fn dispatch(bencher: &mut test::Bencher) {
let pli = Pipeline::dispatch();
bench(bencher, &pli);
}
// #[cfg(target_feature = "sse2")]
// #[bench]
// fn bench_sse2(bencher: &mut test::Bencher) {
// fn sse2(bencher: &mut test::Bencher) {
// let pli = Pipeline::sse2().unwrap();
// bench(bencher, &pli);
// }
#[cfg(target_feature = "avx2")]
#[bench]
fn bench_avx2(bencher: &mut test::Bencher) {
fn avx2(bencher: &mut test::Bencher) {
let pli = Pipeline::avx2().unwrap();
bench(bencher, &pli);
}
// #[cfg(target_feature = "neon")]
// #[bench]
// fn bench_neon(bencher: &mut test::Bencher) {
// fn neon(bencher: &mut test::Bencher) {
// let pli = Pipeline::neon().unwrap();
// bench(bencher, &pli);
// }
......@@ -80,34 +80,34 @@ mod protein {
}
#[bench]
fn bench_generic(bencher: &mut test::Bencher) {
fn generic(bencher: &mut test::Bencher) {
let pli = Pipeline::generic();
bench(bencher, &pli);
}
#[bench]
fn bench_dispatch(bencher: &mut test::Bencher) {
fn dispatch(bencher: &mut test::Bencher) {
let pli = Pipeline::dispatch();
bench(bencher, &pli);
}
// #[cfg(target_feature = "sse2")]
// #[bench]
// fn bench_sse2(bencher: &mut test::Bencher) {
// fn sse2(bencher: &mut test::Bencher) {
// let pli = Pipeline::sse2().unwrap();
// bench(bencher, &pli);
// }
#[cfg(target_feature = "avx2")]
#[bench]
fn bench_avx2(bencher: &mut test::Bencher) {
fn avx2(bencher: &mut test::Bencher) {
let pli = Pipeline::avx2().unwrap();
bench(bencher, &pli);
}
// #[cfg(target_feature = "neon")]
// #[bench]
// fn bench_neon(bencher: &mut test::Bencher) {
// fn neon(bencher: &mut test::Bencher) {
// let pli = Pipeline::neon().unwrap();
// bench(bencher, &pli);
// }
......
......@@ -47,41 +47,41 @@ mod f32 {
}
#[bench]
fn bench_generic(bencher: &mut test::Bencher) {
fn generic(bencher: &mut test::Bencher) {
let pli = Pipeline::generic();
bench::<U32, _>(bencher, &pli);
}
#[bench]
fn bench_dispatch(bencher: &mut test::Bencher) {
fn dispatch(bencher: &mut test::Bencher) {
let pli = Pipeline::dispatch();
bench(bencher, &pli);
}
#[cfg(target_feature = "sse2")]
#[bench]
fn bench_sse2(bencher: &mut test::Bencher) {
fn sse2(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench::<U16, _>(bencher, &pli);
}
#[cfg(target_feature = "sse2")]
#[bench]
fn bench_sse2_32(bencher: &mut test::Bencher) {
fn sse2_32(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench::<U32, _>(bencher, &pli);
}
#[cfg(target_feature = "avx2")]
#[bench]
fn bench_avx2(bencher: &mut test::Bencher) {
fn avx2(bencher: &mut test::Bencher) {
let pli = Pipeline::avx2().unwrap();
bench(bencher, &pli);
}
#[cfg(target_feature = "neon")]
#[bench]
fn bench_neon(bencher: &mut test::Bencher) {
fn neon(bencher: &mut test::Bencher) {
let pli = Pipeline::neon().unwrap();
bench::<U16, _>(bencher, &pli);
}
......@@ -128,41 +128,41 @@ mod u8 {
}
#[bench]
fn bench_generic(bencher: &mut test::Bencher) {
fn generic(bencher: &mut test::Bencher) {
let pli = Pipeline::generic();
bench::<U32, _>(bencher, &pli);
}
#[bench]
fn bench_dispatch(bencher: &mut test::Bencher) {
fn dispatch(bencher: &mut test::Bencher) {
let pli = Pipeline::dispatch();
bench(bencher, &pli);
}
#[cfg(target_feature = "sse2")]
#[bench]
fn bench_sse2(bencher: &mut test::Bencher) {
fn sse2(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench::<U16, _>(bencher, &pli);
}
#[cfg(target_feature = "sse2")]
#[bench]
fn bench_sse2_32(bencher: &mut test::Bencher) {
fn sse2_32(bencher: &mut test::Bencher) {
let pli = Pipeline::sse2().unwrap();
bench::<U32, _>(bencher, &pli);
}
#[cfg(target_feature = "avx2")]
#[bench]
fn bench_avx2(bencher: &mut test::Bencher) {
fn avx2(bencher: &mut test::Bencher) {
let pli = Pipeline::avx2().unwrap();
bench(bencher, &pli);
}
#[cfg(target_feature = "neon")]
#[bench]
fn bench_neon(bencher: &mut test::Bencher) {
fn neon(bencher: &mut test::Bencher) {
let pli = Pipeline::neon().unwrap();
bench::<U16, _>(bencher, &pli);
}
......
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