Repository navigation
Conversation
|
Thanks for opening this early. The approach looks right: the GEMM only screens candidates, and the ones kept are recomputed with the same float Must fix
Performance
Tests. The regression test has 4 clusters and 13 queries, so it never covers more than one centroid tile (more than 256 clusters) or more than one row block (more than 32 queries). Please add cases that cross both, plus duplicate centroids, k larger than the number of points, and removed points. A direct test of Minor. The comment says distances are "recomputed in double precision", but they are float Toolchain. Please set up a Linux build environment; WSL2 or Docker works. The benchmark in #218 needs one anyway, and CI on this repository needs manual approval for each push. Before the next push, please run the IVF C++ tests and |
Closes #218
This draft adds a blocked top-nprobe assignment kernel for batched Flat IVF searches. It rotates query blocks, screens centroid tiles with the transposed matrix-product kernel, and recomputes candidates near each row's top-n boundary with the existing distance functions. The scalar search path is unchanged; the batch path falls back to scalar routing for one query and non-Flat initializers.
The IVF batch regression test now checks nprobe values 1, 2, 3, and all clusters across L2/IP, quantization settings, HACC modes, and thread counts, comparing IDs and distances to repeated scalar searches.
Validation is incomplete in this environment:
git diff --checkpassed, but C++ tests and formatting were not run because this Windows environment has no CMake, compiler, Bash, or clang-format 23 installed. No before/after GIST1M benchmark or Recall@10 measurement has been run. Please treat this as an early implementation draft; CI and the required benchmark/quality report remain outstanding.