Skip to main content

Module simd

Module simd 

Source
Expand description

SIMD vectorization module for high-performance batch operations.

Provides optimized implementations of common mathematical operations for processing 8 values in parallel, matching Tier 2 batch size.

§Strategy

Uses Rust’s simd via the wide crate for f64x2-based vectorization. 8 f64 values = 4 f64x2 vectors processed in parallel. Hardware: SSE2 minimum, optimizes for AVX on modern x86_64.

§Performance

  • True SIMD: Actual vector hardware instructions via wide crate
  • f64x2 provides good vectorization across all architectures
  • Expected 5-15% speedup from ILP and vectorization
  • Trigonometric operations: primary bottleneck, now vectorized
  • GPU code already vectorizing color mapping

Functions§

simd_abs_8
Vectorized absolute value using vector SIMD
simd_acos_8
Vectorized inverse cosine for 8 f64 values
simd_add_8
Vectorized element-wise addition using vector SIMD
simd_asin_8
Vectorized inverse sine for 8 f64 values
simd_asinh_scale_8
Vectorized asinh scale transformation (handles positive and negative data)
simd_atan2_8
Vectorized inverse tangent (atan2) for 8 point pairs
simd_batch_scale_8
Batch process 8 raw values through scaling operation with caching
simd_batch_scale_16
Batch scale 16 values with validity masking (for 16-pixel rendering)
simd_clamp_8
Vectorized clamp operation using vector SIMD
simd_colormap_sample_8
Vectorized colormap LUT lookup (fast palette sampling)
simd_cos_8
Vectorized cosine for 8 f64 values
simd_cross_8
Vectorized 3D cross product
simd_dot3_8
Vectorized 3D dot product
simd_gamma_correct_8
Vectorized gamma correction for 8 values
simd_linear_scale_8
Vectorized linear scaling (normalization to [0, 1] range)
simd_ln_8
Vectorized natural logarithm
simd_log_scale_8
Vectorized log scale transformation (for positive data)
simd_madd_8
Vectorized fused multiply-add: result = a * b + c using vector SIMD
simd_matvec3_8
Vectorized 3x3 matrix-vector multiplication (8 vectors)
simd_mul_8
Vectorized element-wise multiplication using vector SIMD
simd_normalize_vec3_8
Vectorized 3D vector normalization
simd_plancklog_scale_8
Vectorized PlanckLog scale transformation
simd_pow_8
Vectorized power function (y = x^exp)
simd_recip_8
Vectorized reciprocal (1/x) using vector SIMD
simd_sin_8
Vectorized sine for 8 f64 values
simd_sin_cos_8
Vectorized sine and cosine simultaneously (more efficient than separate calls)
simd_sin_cos_16
Vectorized sin_cos for 16 f64 values
simd_sph_to_vec_8
Vectorized spherical to Cartesian conversion (8 theta-phi pairs)
simd_sqrt_8
Vectorized square root using vector SIMD
simd_symlog_scale_8
Vectorized symlog scale transformation (supports negative values)
simd_to_pixel_values
Convert SIMD linear scale results to PixelValue enum array
simd_to_pixel_values_16
Convert 16 SIMD scaling results to PixelValue array
simd_vec_to_sph_8
Vectorized Cartesian to spherical conversion (8 vectors)