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