Expand description
SIMD Vectorized Query Filters
From mm.md Task 5.3: AVX-512/NEON Vectorized Filters (VQE)
§Problem
Current filtering is scalar. LLM context queries often filter millions of rows (e.g., “events from last 7 days”). SIMD can evaluate 8-16 predicates per instruction.
§Solution
Column-oriented data layout + compiled filter expressions + runtime SIMD feature detection
§Throughput Analysis
Scalar: 1 comparison/cycle × 3GHz = 3B comparisons/sec
AVX-512: 8 comparisons/instruction × ~1 CPI × 3GHz = 24B/sec
AVX-256: 4 comparisons/instruction = 12B/sec
NEON: 4 comparisons/instruction = 12B/sec
100M rows @ 24B/sec = 4.2ms (AVX-512)
100M rows @ 3B/sec = 33ms (scalar)
Speedup: 8× (AVX-512), 4× (AVX-256/NEON)Structs§
- Simd
Info - SIMD capability information
Enums§
- Filter
Op - Filter comparison operation
Functions§
- allocate_
bitmap - Allocate a bitmap for the given number of rows
- bitmap_
and - AND two bitmaps together
- bitmap_
not - NOT a bitmap
- bitmap_
or - OR two bitmaps together
- filter_
f64_ gt - Filter f64 column: value > threshold
- filter_
f64_ gt_ scalar - Scalar filter: f64 > threshold
- filter_
f64_ lt_ scalar - Scalar filter: f64 < threshold
- filter_
i64_ between - Filter i64 column: low <= value <= high
- filter_
i64_ between_ scalar - Scalar filter: i64 between low and high (inclusive)
- filter_
i64_ eq - Filter i64 column: value == target
- filter_
i64_ eq_ scalar - Scalar filter: i64 == value
- filter_
i64_ ge_ scalar - Scalar filter: i64 >= threshold
- filter_
i64_ gt - Filter i64 column: value > threshold
- filter_
i64_ gt_ scalar - Scalar filter: i64 > threshold
- filter_
i64_ lt - Filter i64 column: value < threshold
- filter_
i64_ lt_ scalar - Scalar filter: i64 < threshold
- get_bit
- Check if a bit is set
- popcount
- Count set bits in bitmap
- set_bit
- Set a bit in the bitmap
- simd_
info - Get information about SIMD support
Type Aliases§
- Filter
Bitmap - Result bitmap - bit per row indicating pass/fail