Overview
cdbe supports filtering using SIMD(Single Instruction, Multiple Data) via x86 instructions. This allows vectorized filtering over integer columns, significantly speeding up query performance.
Current Features
SIMD based comparison operators using SSE and AVX2:
- ==(equal)
- ≠(Not equal)
- <(less than)
- ≤(less than or equal to)
-
(Greater than)
- ≥(Greater than equal to)
logical combinators
- AND and OR across multiple column filters
Architecture
SIMD operators
- Each comparison operator is implemented using x86 intrinsics(SSE or AVX2)
- SSE - 4 * i32 at a time - 4 lanes
- AVX2 - 8 * i32 at a time - 8 lanes
- The core function
filter_simd_32 handles SSE-based filtering
filter_simd_32_avx function leverages AVX2 instructions(8 lanes)
Logical Combinators