Skip to content

v2.2.0

Choose a tag to compare

@dancixx dancixx released this 18 May 08:14
· 117 commits to main since this release
1fe6bdf

Highlights

  • SIMD RNG / Ziggurat speedups — single-sample dist.sample(rng) loops are ~2–4× faster vs the v2.1 wide 1.3 baseline. next_f64_array / next_f32_array go from 8 scalar shift+cast+mul loops to SIMD shift + magic-number bit-cast + subtract (52-bit / 23-bit precision). New fill_uniform_f64 / fill_uniform_f32 direct-write APIs skip the [T; 8] return-by-value round-trip. Fused 1/λ scaling into SimdExp::fill_exp_scaled. [819b1c0]
  • Opt-in dual-stream-rng featureSimdRngDual carries two independent Xoshiro state pairs (engine_a, engine_b) so the OoO core can interleave the Ziggurat scalar table-load chains across batches. Apple Silicon: −5% to −11% on SimdNormal::fill_slice Ziggurat sweet-spot (n = 4096). Uniform fills are not engine-bound, so no speedup there. Stream-bit-exactness changes (KS-validated). [207cb42]
  • Generic R: SimdRngExt across all 18 distributions — every SimdXxx<T, ..., R> struct is parameterised on the backing RNG (default SimdRng), letting SimdNormalDual / SimdExpDual / SimdExpZigDual reuse the exact same code paths via type alias. [f886c7b, 207cb42]
  • Unified seed-handling API (breaking)with_seed(u64) and from_seed_source(&src) are removed; every distribution and process now exposes a single canonical new(args, &seed) constructor accepting any SeedExt strategy (Unseeded, Deterministic::new(u64), or a custom source). SeedExt::reseed(u64) swaps a Deterministic source in place for calibration sweeps. [f886c7b, d74f824]
  • Seed propagation fixesnon_central_chi_squared::sample is now generic over SeedExt (was hardcoding &Unseeded), restoring reproducibility in the Svcgmy v-path. All four FGN GPU/Accelerate backends (fgn/accelerate.rs, fgn/gpu.rs, fgn/metal.rs, fgn/cuda_native.rs) now thread &self.seed instead of pulling from the global RNG. [88f7e0d, cf3c557]
  • Documentation — new seeding concept page covers the unified constructor, SeedExt strategies, SimdRngExt generic backing RNG, and the dual-stream feature. [d74f824, f67c6ac]

Full Changelog: v2.1.0...v2.2.0