From f66449aab096069f20ced630357da0bd686889cf Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 5 Aug 2026 00:02:04 +0000 Subject: [PATCH] simd: trampoline hpc::cascade as ndarray::simd::cascade MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Consumers under the all-SIMD-from-ndarray::simd invariant need the Belichtungsmesser surface (Cascade::expose -> Band, recalibrate, PackedDatabase, adaptive_resolution) without reaching into crate::hpc directly — the Prozentrang/distribution-shape payload work in the consumer stack reads exposure bands through this path. Whole-module alias rather than an item list, so new cascade items arrive without a re-export edit. Both modules share the identical std feature gate. cargo clippy --lib -D warnings green; cargo fmt --check clean. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01K3RyLEbuNSHxxB3NTTrGki --- src/simd.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/simd.rs b/src/simd.rs index ce869ba1..7d227c43 100644 --- a/src/simd.rs +++ b/src/simd.rs @@ -623,6 +623,15 @@ pub use crate::hpc::cam_pq::{kmeans, squared_l2}; pub use crate::hpc::heel_f64x8::cosine_f32_to_f64_simd; +// The Belichtungsmesser — banded multi-resolution cascade search +// (`Cascade::expose(distance) → Band`, `recalibrate(ShiftAlert)`, +// `PackedDatabase`, `adaptive_resolution`). Trampolined as a whole module so +// consumers under the "all SIMD from `ndarray::simd`" invariant reach the +// exposure-meter surface as `ndarray::simd::cascade::*` without dipping into +// `crate::hpc` directly. Module alias, not an item list — new cascade items +// arrive here without a re-export edit. Same `std` gate as this module. +pub use crate::hpc::cascade; + // Dispatched integer matmul — the polyfill entry for batched int8 scoring. // `matmul_i8_to_i32` runtime-selects AMX `TDPBUSD` tiles (byte-asm, 16384 // MAC/instr, Sapphire Rapids+) → AVX-512 VPDPBUSD → AVX-VNNI → scalar, and