Module simd

Module simd 

Source
Expand description

SIMD-accelerated distance calculations

This module provides SIMD-optimized implementations of distance metrics for improved performance on supported CPUs.

§Features

  • Auto-vectorization hints: Helps the compiler generate SIMD code
  • x86_64 optimizations: Automatically uses AVX-512, FMA+AVX2, or AVX2 when available
  • aarch64 optimizations: Automatically uses NEON (always available on ARM64)
  • Cache-friendly: Optimized memory access patterns
  • Fallback: Automatically falls back to auto-vectorization on unsupported platforms

§Performance Hierarchy

  • x86_64: AVX-512 (16-wide) → FMA+AVX2 (8-wide) → AVX2 (8-wide) → auto-vectorization
  • aarch64: NEON (4-wide)
  • other: auto-vectorization

§Usage

use oxify_vector::simd::cosine_similarity_simd;

let v1 = vec![1.0, 2.0, 3.0, 4.0];
let v2 = vec![2.0, 3.0, 4.0, 5.0];
let similarity = cosine_similarity_simd(&v1, &v2);

Functions§

compute_distance_lower_is_better_simd
Compute distance using the specified metric with SIMD optimization
compute_distance_simd
Compute similarity/distance using the specified metric with SIMD optimization
cosine_similarity_simd
SIMD-optimized cosine similarity calculation
dot_product_simd
SIMD-optimized dot product calculation
euclidean_distance_simd
SIMD-optimized Euclidean distance calculation
is_avx2_available
Check if AVX2 is available at runtime (non-x86_64 always returns false)
is_avx512_available
Check if AVX-512 is available at runtime (non-x86_64 always returns false)
is_fma_available
Check if FMA is available at runtime (non-x86_64 always returns false)
is_neon_available
Check if NEON is available at runtime (aarch64 always has NEON)
manhattan_distance_simd
SIMD-optimized Manhattan distance calculation
normalize_vector_simd
Normalize a vector in-place using SIMD optimization
quantized_dot_product_simd
Compute dot product between two quantized (u8) vectors using SIMD
quantized_euclidean_squared_simd
Compute Euclidean distance between two quantized (u8) vectors using SIMD
quantized_manhattan_distance_simd
Compute Manhattan distance between two quantized (u8) vectors using SIMD
scale_vector_simd
Scale a vector by a constant using SIMD optimization