Skip to content

Commit

Permalink
Minor literal fixes (#16)
Browse files Browse the repository at this point in the history
* better simd operation usage

* literal fixes and code improvements
  • Loading branch information
bwsw authored Jul 10, 2022
1 parent c989c23 commit bf99dd9
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 32 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ repository = "https://github.com/insight-platform/Similari"
readme = "README.md"
keywords = ["machine-learning", "similarity"]
categories = ["algorithms", "data-structures", "database", "mathematics", "science"]
version = "0.4.2"
version = "0.4.3"
edition = "2021"
license="Apache-2.0"
rust-version = "1.62"
Expand Down
15 changes: 10 additions & 5 deletions benches/simple_search.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,25 @@ use std::sync::Arc;
use test::Bencher;

#[bench]
fn simple_0512_001k(b: &mut Bencher) {
fn simple_0512_0001k(b: &mut Bencher) {
bench_capacity_len(512, 1000, b);
}

#[bench]
fn simple_0512_010k(b: &mut Bencher) {
fn simple_0512_0010k(b: &mut Bencher) {
bench_capacity_len(512, 10000, b);
}

#[bench]
fn simple_0512_100k(b: &mut Bencher) {
fn simple_0512_0100k(b: &mut Bencher) {
bench_capacity_len(512, 100000, b);
}

#[bench]
fn simple_0512_1000k(b: &mut Bencher) {
bench_capacity_len(512, 1000000, b);
}

#[bench]
fn simple_0128_001k(b: &mut Bencher) {
bench_capacity_len(128, 1000, b);
Expand Down Expand Up @@ -86,7 +91,7 @@ fn bench_capacity_len(vec_len: usize, count: usize, b: &mut Bencher) {
i as u64,
DEFAULT_FEATURE,
1.0,
Feature::from_vec(1, vec_len, (0..vec_len).map(|_| rng.sample(&gen)).collect()),
Feature::from_vec((0..vec_len).map(|_| rng.sample(&gen)).collect()),
SimpleAttributeUpdate {},
);
assert!(res.is_ok());
Expand All @@ -102,7 +107,7 @@ fn bench_capacity_len(vec_len: usize, count: usize, b: &mut Bencher) {
let _ = t.add_observation(
DEFAULT_FEATURE,
1.0,
Feature::from_vec(1, vec_len, (0..vec_len).map(|_| rng.sample(&gen)).collect()),
Feature::from_vec((0..vec_len).map(|_| rng.sample(&gen)).collect()),
SimpleAttributeUpdate {},
);

Expand Down
4 changes: 2 additions & 2 deletions benches/track_search.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ fn bench_capacity_len(vec_len: usize, track_len: usize, count: usize, b: &mut Be
i as u64,
DEFAULT_FEATURE,
1.0,
Feature::from_vec(1, vec_len, (0..vec_len).map(|_| rng.sample(&gen)).collect()),
Feature::from_vec((0..vec_len).map(|_| rng.sample(&gen)).collect()),
UnboundAttributeUpdate {},
);
assert!(res.is_ok());
Expand All @@ -45,7 +45,7 @@ fn bench_capacity_len(vec_len: usize, track_len: usize, count: usize, b: &mut Be
let _ = t.add_observation(
DEFAULT_FEATURE,
1.0,
Feature::from_vec(1, vec_len, (0..vec_len).map(|_| rng.sample(&gen)).collect()),
Feature::from_vec((0..vec_len).map(|_| rng.sample(&gen)).collect()),
UnboundAttributeUpdate {},
);
}
Expand Down
10 changes: 5 additions & 5 deletions src/distance.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ mod tests {

#[test]
fn euclidean_distances() {
let v1 = dbg!(Feature::from_vec(1, 3, vec![1f32, 0.0, 0.0]));
let v2 = dbg!(Feature::from_vec(1, 3, vec![0f32, 1.0f32, 0.0]));
let v1 = Feature::from_vec(vec![1f32, 0.0, 0.0]);
let v2 = Feature::from_vec(vec![0f32, 1.0f32, 0.0]);
let d = euclidean(&v1, &v1);
assert!(d.abs() < EPS);

Expand All @@ -64,9 +64,9 @@ mod tests {

#[test]
fn cosine_distances() {
let v1 = dbg!(Feature::from_vec(1, 3, vec![1f32, 0.0, 0.0]));
let v2 = dbg!(Feature::from_vec(1, 3, vec![0f32, 1.0f32, 0.0]));
let v3 = dbg!(Feature::from_vec(1, 3, vec![-1.0f32, 0.0, 0.0]));
let v1 = dbg!(Feature::from_vec(vec![1f32, 0.0, 0.0]));
let v2 = dbg!(Feature::from_vec(vec![0f32, 1.0f32, 0.0]));
let v3 = dbg!(Feature::from_vec(vec![-1.0f32, 0.0, 0.0]));
let d = cosine(&v1, &v1);
assert!((d - 1.0).abs() < EPS);
let d = cosine(&v1, &v3);
Expand Down
2 changes: 1 addition & 1 deletion src/test_stuff.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,5 +119,5 @@ impl Metric for UnboundMetric {
}

pub fn vec2(x: f32, y: f32) -> Feature {
Feature::from_vec(1, 2, vec![x, y])
Feature::from_vec(vec![x, y])
}
34 changes: 17 additions & 17 deletions src/track.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ pub type TrackDistance = (u64, Result<f32>);
pub type Feature = Vec<f32x8>;

pub trait FromVec<V> {
fn from_vec(_unused1: usize, _unused2: usize, vec: V) -> Feature;
fn from_vec(vec: V) -> Feature;
}

impl FromVec<Vec<f32>> for Feature {
fn from_vec(_unused1: usize, _unused2: usize, vec: Vec<f32>) -> Feature {
fn from_vec(vec: Vec<f32>) -> Feature {
let mut feature = {
let one_more = if vec.len() % INT_FEATURE_SIZE > 0 {
1
Expand Down Expand Up @@ -487,15 +487,15 @@ mod tests {
t1.add_observation(
0,
0.3,
Feature::from_vec(1, 3, vec![1f32, 0.0, 0.0]),
Feature::from_vec(vec![1f32, 0.0, 0.0]),
DefaultAttrUpdates {},
)?;

let mut t2 = Track::default();
t2.add_observation(
0,
0.3,
Feature::from_vec(1, 3, vec![0f32, 1.0f32, 0.0]),
Feature::from_vec(vec![0f32, 1.0f32, 0.0]),
DefaultAttrUpdates {},
)?;

Expand All @@ -512,7 +512,7 @@ mod tests {
t2.add_observation(
0,
0.2,
Feature::from_vec(1, 3, vec![1f32, 1.0f32, 0.0]),
Feature::from_vec(vec![1f32, 1.0f32, 0.0]),
DefaultAttrUpdates {},
)?;

Expand All @@ -532,15 +532,15 @@ mod tests {
t1.add_observation(
0,
0.3,
Feature::from_vec(1, 3, vec![1f32, 0.0, 0.0]),
Feature::from_vec(vec![1f32, 0.0, 0.0]),
DefaultAttrUpdates {},
)?;

let mut t2 = Track::default();
t2.add_observation(
0,
0.3,
Feature::from_vec(1, 3, vec![0f32, 1.0f32, 0.0]),
Feature::from_vec(vec![0f32, 1.0f32, 0.0]),
DefaultAttrUpdates {},
)?;
let r = t1.merge(&t2, &vec![0]);
Expand All @@ -555,15 +555,15 @@ mod tests {
t1.add_observation(
0,
0.3,
Feature::from_vec(1, 3, vec![1f32, 0.0, 0.0]),
Feature::from_vec(vec![1f32, 0.0, 0.0]),
DefaultAttrUpdates {},
)?;

let mut t2 = Track::default();
t2.add_observation(
1,
0.3,
Feature::from_vec(1, 3, vec![0f32, 1.0f32, 0.0]),
Feature::from_vec(vec![0f32, 1.0f32, 0.0]),
DefaultAttrUpdates {},
)?;
let r = t1.merge(&t2, &vec![1]);
Expand Down Expand Up @@ -650,15 +650,15 @@ mod tests {
t1.add_observation(
0,
0.3,
Feature::from_vec(1, 3, vec![1f32, 0.0, 0.0]),
Feature::from_vec(vec![1f32, 0.0, 0.0]),
TimeAttrUpdates { time: 2 },
)?;

let mut t2 = Track::default();
t2.add_observation(
0,
0.3,
Feature::from_vec(1, 3, vec![0f32, 1.0f32, 0.0]),
Feature::from_vec(vec![0f32, 1.0f32, 0.0]),
TimeAttrUpdates { time: 3 },
)?;
t2.track_id = 2;
Expand All @@ -673,7 +673,7 @@ mod tests {
t3.add_observation(
0,
0.3,
Feature::from_vec(1, 3, vec![0f32, 1.0f32, 0.0]),
Feature::from_vec(vec![0f32, 1.0f32, 0.0]),
TimeAttrUpdates { time: 1 },
)?;

Expand All @@ -688,14 +688,14 @@ mod tests {
t1.add_observation(
0,
0.3,
Feature::from_vec(1, 3, vec![1f32, 0.0, 0.0]),
Feature::from_vec(vec![1f32, 0.0, 0.0]),
DefaultAttrUpdates {},
)?;

t1.add_observation(
1,
0.3,
Feature::from_vec(1, 3, vec![0f32, 1.0f32, 0.0]),
Feature::from_vec(vec![0f32, 1.0f32, 0.0]),
DefaultAttrUpdates {},
)?;
let mut classes = t1.get_feature_classes();
Expand Down Expand Up @@ -789,7 +789,7 @@ mod tests {
let res = t1.add_observation(
0,
0.3,
Feature::from_vec(1, 3, vec![1f32, 0.0, 0.0]),
Feature::from_vec(vec![1f32, 0.0, 0.0]),
DefaultAttrUpdates { ignore: false },
);
assert!(res.is_ok());
Expand All @@ -798,7 +798,7 @@ mod tests {
let res = t1.add_observation(
0,
0.3,
Feature::from_vec(1, 3, vec![1f32, 0.0, 0.0]),
Feature::from_vec(vec![1f32, 0.0, 0.0]),
DefaultAttrUpdates { ignore: true },
);
assert!(res.is_err());
Expand All @@ -820,7 +820,7 @@ mod tests {
let res = t2.add_observation(
0,
0.3,
Feature::from_vec(1, 3, vec![1f32, 0.0, 0.0]),
Feature::from_vec(vec![1f32, 0.0, 0.0]),
DefaultAttrUpdates { ignore: false },
);
assert!(res.is_ok());
Expand Down
2 changes: 1 addition & 1 deletion src/track/store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -596,7 +596,7 @@ mod tests {
}

fn vec2(x: f32, y: f32) -> Feature {
Feature::from_vec(1, 2, vec![x, y])
Feature::from_vec(vec![x, y])
}

fn current_time_ms() -> u128 {
Expand Down

0 comments on commit bf99dd9

Please sign in to comment.