SimSIMD

Up to 200x Faster Inner Products and Vector Similarity — for Python, JavaScript, Rust, and C, supporting f64, f32, f16 real & complex, i8, and binary vectors using SIMD for both x86 AVX2 & AVX-512 and Arm NEON & SVE 📐

APACHE-2.0 License

Downloads
278K
Stars
746
Committers
26
SimSIMD - v2.0.4

Published by ashvardanian about 1 year ago

2.0.4 (2023-10-05)

Make

  • Avoid uncommon Python version (c290513)
SimSIMD - v2.0.3

Published by ashvardanian about 1 year ago

2.0.3 (2023-10-05)

Make

  • Temporarily disable SVE checks (8ad641f)
SimSIMD - v2.0.2

Published by ashvardanian about 1 year ago

2.0.2 (2023-10-05)

Make

  • Use arch=armv8.2-a+dotprod flag (1f2dc65)
SimSIMD - v2.0.1

Published by ashvardanian about 1 year ago

2.0.1 (2023-10-05)

Fix

  • Revert to older neon_i8 implementation (3bb25d5)
SimSIMD - v2.0.0

Published by ashvardanian about 1 year ago

2.0.0 (2023-10-05)

Add

  • Parallel cdist API using OpenMP (153999a)

Break

SimSIMD - v1.5.2

Published by ashvardanian about 1 year ago

1.5.2 (2023-10-05)

Fix

SimSIMD - v1.5.1

Published by ashvardanian about 1 year ago

1.5.1 (2023-10-05)

Fix

Make

SimSIMD - v1.5.0

Published by ashvardanian about 1 year ago

1.5.0 (2023-10-05)

Add

  • cdist implementations with OpenMP (293504a)
  • AVX-512 variants for i8 metrics (25412ee)
  • Benchmark for SciPy (5c65142)
  • Dynamic dispatch and hardware introspection (6864829)
  • Hardware capabilities checks in Python (d1d51ab)
  • New distances and project structure (9c833a5)
  • Preceise calculation mode (b213ffb)
  • Prototype for Intel AMX (c96f8f9)

Break

Docs

Fix

  • AVX-512 masks undefined behaviour (857afba)
  • Compilation (2d8422d)
  • Correct and branchless masking in AVX-512 (0a32408)
  • From SQRT macro to RSQRT (d6b6cee)
  • From similarity to distance (a148d9e)
  • Increase relative tolerance levels (5faee24)
  • Low-precision accumulation in L2sq for i8 (b875c39)
  • Remove false (5a66779)
  • Skipped i8>i16>i32 upcasting step in AVX2 (2e43ab7)

Improve

  • SIMSIMD_SQRT param to avoid LibC (196d679)
  • Accumulating i8 vectors with integers (a7735aa)
  • Add baseline comparison (53eecc3)
  • Add GCC options directly to file (1296d78)
  • Avoid _Pragma parameterized macros (e33e9f7)
  • Benchmarking suite (0de1cb2)
  • Equi-dimensional benchmarks (881091d)
  • Expose pointers for USearch (d8acf83)
  • Extend use of _mm_mask_rsqrt14_pd (61e401c)
  • Jan Kadlec's magic numbers for rsqrt (ebbdb86)
  • Multi-threaded benchmarks (6653c85)
  • Normalize vectors before benchmarks (da3e8ed)
  • Parameterizing benchmarks (fa220a7)
  • Precompute baselines (bc48ff3)
  • Repalce lib-wide compiler flags (53c15a4)
  • Use rsqrtss in AVX2 metrics (47fac21)
  • Use vrsqrte_f32 on Arm NEON (a5a868c)

Make

Refactor

Test

  • Batch requests in Python (a594758)
SimSIMD - v1.4.0

Published by ashvardanian about 1 year ago

1.4.0 (2023-09-05)

Add

Fix

  • _mm_cvtph_ps to _mm256_cvtph_ps (5096928)

Improve

SimSIMD - v1.3.0

Published by ashvardanian about 1 year ago

1.3.0 (2023-09-04)

Add

Fix

  • Removing the square root (acf5a4d)

Make

  • Build on macOS with GCC (07ca59a)
  • Build python on MacOS with GCC (70a67ad)
  • Disable python universal builds (636185b)
  • Enable python MacOS build (e35fa8d)
  • Install GCC 12 for MacOS (7dda672)
  • Polish Release (4db6dae)
SimSIMD - v1.2.0

Published by ashvardanian about 1 year ago

1.2.0 (2023-09-04)

Add

  • Placeholders for string similarity (bd0d50c)

Fix

  • avx512bw label for masked loads (ccce7c8)
  • avx512f flag for __m512 registers (14ceef0)
  • avx512fp16 compilation flag (f8640e0)
  • fma flag for AVX2 cosine and dot-product (850a0e8)
  • AVX-512 flag for _mm256_popcnt_epi64 (9055a02)
  • C union instantiations (ebc4b12)
  • Check only relevant symbols in tests (aa77e12)
  • Compilation on non-SVE Arm machines (59cdc05)
  • Disable AVX-512 for Windows and MacOS (352a5a1)
  • Tanimoto out-of-range access (c21ecbc)

Improve

  • Annotate GCC on how to compile code (4d4c267)

Make

Refactor

  • Dont set version to latest for MinGW (3d744ad)
SimSIMD - v1.1.2

Published by ashvardanian about 1 year ago

1.1.2 (2023-08-22)

Make

  • Disable versioning needs (ca9bb37)
  • Restore temporary disabled jobs (953f7f3)
  • Test build wheels without setup docker in Mac-Os (a952343)
  • Update package classifiers (4d32c47)
SimSIMD - v1.1.1

Published by ashvardanian about 1 year ago

1.1.1 (2023-08-22)

Make

  • Change Docker setup action (4b7561b)
SimSIMD - v1.1.0

Published by ashvardanian about 1 year ago

1.1.0 (2023-08-22)

Add

Docs

Fix

  • simsimd_tanimoto_maccs_avx512 (f7ddbf5)

Improve

  • Tanimoto coefficients with larger words (8ddedc6)

Make

SimSIMD - v1.0.3

Published by ashvardanian over 1 year ago

1.0.3 (2023-07-14)

Fix

  • Python deps & x86 benchmarks (6040a51)
SimSIMD - v1.0.2

Published by ashvardanian over 1 year ago

1.0.2 (2023-07-13)

Make

  • Disable Win32 and other deprecated builds (6fafb73)
SimSIMD - v1.0.1

Published by ashvardanian over 1 year ago

1.0.1 (2023-07-13)

Make

  • Fix parsing file on Windows (939ef60)
SimSIMD - v1.0.0

Published by ashvardanian over 1 year ago

1.0.0 (2023-07-13)

Add

  • cos_f16_sve common metric kind for Arm SVE (7b29466)
  • simsimd_cos_i8x16neon (4dfe9d5)
  • to_int method for capsules (c0ca719)
  • Arm Neon f16 dot product, refactor visibility (23567db)
  • Arm SVE acceleration for f16 dot-product, L2 (de34a04)
  • AVX-512 for dot-product on Sapphire Rapids (401ed6b)
  • Benchmarks for cosine similarity (e29c177)
  • C99 version (06fb120)
  • capsule for dot_f32sve (b5cb7b1)
  • capsule for dot_f32sve (ff23d94)
  • Capsules for Chemistry research (bf6ec11)
  • configuration for test debug (8a82485)
  • Graviton 3 results (8ea912a)
  • Hamming distance with scalar, AVX-512, NEON (cbd2b85)
  • Initial benchmark and AVX2, Neon, SVE (fb0aa11)
  • Separate chemsitry-oriented measures (dc00183)
  • SVE cosine distance of dynamic length vecs (3162f7d)
  • SVE-accelerated Hamming distance (e407ab3)
  • Tanimoto distances (168f026)
  • test for module using (c5afa3a)

Build

  • AVX-512 code for Hamming distance (d6a7820)
  • cpython module and test (ac5985e)

Create

Docs

Fix

  • simsimd_cos_i8x16neon for Gravitons (ccad0b4)
  • Arm Neon ordering FMA arguments (2ab1293)
  • Benchmark compilation (9209bfb)
  • Capsule destructors (12f756e)
  • Casting to f16 (709e346)
  • Casting to f16 (6245890)
  • Compilation (905942a)
  • Compilation error - unnamed argument (1311da4)
  • Cosine similarity with Arm Neon (d2d8ad5)
  • Duplicate symbol in cosine similarity (d791376)
  • Hamming iteration step with SVE (e0194fa)
  • IP error compensation with normalization (b577ad8)
  • Missing includes for size_t (74760c7)
  • Missing MSVC intrinsics (0fe4c1e)
  • Module name (8a08231)
  • Quantized i8 dot-product on AVX (725152d)
  • Separate similarity and distance measures (3e922ce)

Improve

  • Extended benchmarks to include chem.h (b222949)
  • Using PyTest (8c29c45)

Make

  • Downgrading to C++11, CMake imterface (add627d)
  • Fix tests (a034a5c)
  • Script to update version (9b12d67)
  • Semantic Releases (208290e)
  • Specifying the header sources (ce95f7c)
  • Using different debuggers on MacOS (7390b7d)

Refactor