Expand description
§SIMD Vector Operations Framework
High-performance SIMD-optimized vector operations library providing comprehensive mathematical operations with automatic platform detection and optimization.
§Features
- Multi-Platform SIMD: Automatic detection and use of SSE2, AVX2, AVX512, NEON
- Comprehensive Operations: Basic arithmetic, advanced math, statistics, comparisons
- Performance Optimized: Hand-tuned intrinsics with scalar fallbacks
- Type Safe: Compile-time platform feature detection
- No-std Compatible: Supports embedded and constrained environments
- Extensive Testing: Comprehensive test coverage with accuracy verification
§Architecture
SIMD Vector Framework
├── Basic Operations (dot product, norms, fundamentals)
├── Arithmetic Operations (add, multiply, FMA, element-wise)
├── Comparison Operations (min/max, logical operations)
├── Math Functions (trigonometric, exponential functions)
├── Statistics Operations (mean, histogram, quantile)
└── Platform Intrinsics (SSE2, AVX2, AVX512, NEON)§Usage Examples
use sklears_simd::vector::{dot_product, norm_l2, add_vec};
// Basic vector operations
let a = vec![1.0, 2.0, 3.0, 4.0];
let b = vec![5.0, 6.0, 7.0, 8.0];
// SIMD-optimized dot product
let dot = dot_product(&a, &b);
// L2 norm computation
let norm = norm_l2(&a);
// Element-wise addition
let mut result = vec![0.0; a.len()];
add_vec(&a, &b, &mut result);Re-exports§
pub use arithmetic_ops::abs_vec;pub use arithmetic_ops::add_vec;pub use arithmetic_ops::divide_vec;pub use arithmetic_ops::fma;pub use arithmetic_ops::multiply_vec;pub use arithmetic_ops::neg_vec;pub use arithmetic_ops::reciprocal_vec;pub use arithmetic_ops::scale_vec;pub use arithmetic_ops::square_vec;pub use arithmetic_ops::subtract_vec;pub use basic_operations::cosine_similarity;pub use basic_operations::dot_product;pub use basic_operations::euclidean_distance;pub use basic_operations::norm_l1;pub use basic_operations::norm_l2;pub use comparison_ops::and_vec;pub use comparison_ops::eq_vec;pub use comparison_ops::ge_vec;pub use comparison_ops::gt_vec;pub use comparison_ops::le_vec;pub use comparison_ops::lt_vec;pub use comparison_ops::ne_vec;pub use comparison_ops::not_vec;pub use comparison_ops::or_vec;pub use comparison_ops::xor_vec;pub use intrinsics::detect_simd_capabilities;pub use intrinsics::optimal_chunk_size;pub use intrinsics::simd_width_f32;pub use intrinsics::F32x4;pub use intrinsics::SimdCapabilities;pub use math_functions::cos_vec;pub use math_functions::exp_vec;pub use math_functions::ln_vec;pub use math_functions::pow_vec;pub use math_functions::sin_vec;pub use math_functions::sqrt_vec;pub use math_functions::tan_vec;pub use statistics_ops::dot_product as stats_dot_product;pub use statistics_ops::max_vec;pub use statistics_ops::mean_vec;pub use statistics_ops::min_max_vec;pub use statistics_ops::min_vec;pub use statistics_ops::norm_l1 as stats_norm_l1;pub use statistics_ops::norm_l2 as stats_norm_l2;pub use statistics_ops::norm_l2_squared;pub use statistics_ops::product_vec;pub use statistics_ops::std_dev_vec;pub use statistics_ops::sum_vec;pub use statistics_ops::variance_vec;pub use statistics_ops::sum_vec as sum;pub use arithmetic_ops::scale_vec_inplace as scale;pub use statistics_ops::mean_vec as mean;pub use statistics_ops::min_max_vec as min_max;pub use statistics_ops::variance_vec as variance;pub use basic_operations::norm_l2 as norm;pub use arithmetic_ops::add_vec as add_simd;pub use arithmetic_ops::fma as fma_simd;pub use basic_operations::cross_product;pub use basic_operations::outer_product;
Modules§
- accuracy
- Accuracy verification utilities for approximation functions
- arithmetic_
ops - Auto-generated module structure
- basic_
operations - Basic SIMD Vector Operations
- benchmarks
- Performance benchmarking utilities for SIMD operations
- comparison_
ops - Auto-generated module structure
- constants
- Export commonly used constants
- intrinsics
- Low-Level SIMD Intrinsics Wrapper
- math_
functions - SIMD Vector Mathematical Functions
- statistics_
ops - SIMD Vector Statistical and Reduction Operations
- utils
- Utility functions for vector operations
Structs§
- Platform
Info - Platform-specific feature detection and optimization
- Simd
Config - SIMD vector operations configuration
Functions§
- allocate_
aligned_ vec - Optimized memory allocation for SIMD vectors
- detect_
platform_ info - Detect platform capabilities and optimization parameters
- get_
simd_ config - Get current SIMD configuration
- is_
properly_ aligned - Check if vector is properly aligned for SIMD operations
- set_
simd_ config - Set global SIMD configuration