Repository navigation
Reduce CI duplication and strengthen clustering and SIMD coverage - #122
Merged
Merged
Conversation
Keep full portable C++ and repaired-wheel suites while using smoke tests for native C++ and source Python installs. Isolate FAISS comparisons in one Linux job and trim repeated large-dimension Python cases. Run C++ example integration tests in the existing Ubuntu build and fail on missing binaries. Update path routing and exclude these tests from wheel jobs. Exercise both clustering APIs through the installed CMake package and add maximum-dimension RaBitQKMeans training coverage. Reuse the portable binary under pinned, checksum-verified Intel SDE Haswell and Ice Lake models. Require the expected CPU capabilities so AVX2 and AVX-512 dispatch coverage cannot silently disappear.
Compile the sanitizer CI configuration with -O1 and debug symbols, keeping assertions, ASan/UBSan, leak detection and frame pointers enabled. Disable sibling-call optimization for useful diagnostic stacks. Run the same full test suite without reducing fixtures or coverage.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reduce repeated CI work while making example, installed-package, and SIMD coverage explicit. This replaces the closed PR #121 and includes its graph-search fixture optimization.
-O1 -g -fno-optimize-sibling-callsin Debug, retaining assertions, ASan/UBSan, leak detection and frame pointers. The original CI test step took 874.83 s; the optimized run passed in 180.17 s (79.4% less test time). Total job time fell from 16m33s to 6m45s (59.2% less), despite build time increasing from 97 s to 191 s. Both runs registered 246 tests with zero failures and the same five expected AVX-512 skips. Locally, all 246 tests passed in 157.51 s, and a same-machine comparison of the two slowest fixtures improved from 280.97 s to 54.87 s (80.5%).No production library code, public APIs, saved formats, or production dependencies change. The intentional clang-tidy exclusion of tests/examples remains; changed C++ files received focused local analysis. Test ownership is documented in
tests/README.md.Testing
windows-2025-vs2026runner-label diagnostic excluded.Sanitizer timing comparison used one before/after measurement on an Intel Xeon Gold 6418H, GCC 14.3.0, Linux x86-64, Debug with native tuning off, ASan leak detection and UBSan halt-on-error, serial CTest pinned to CPUs 0–3, and OMP_NUM_THREADS=2; build time excluded. The speedup applies only to the two search tests, not the full CI suite. Emulation establishes correctness coverage, not native hardware performance. The follow-up optimized sanitizer build passed the full 246-test suite locally. Temporary probes confirmed use-after-free, signed-overflow, and assertion failures still fail; all 63 first-party compile commands retain instrumentation and no NDEBUG. The focused before/after timing used the same local machine, CPUs 0–3, OMP_NUM_THREADS=2, serial CTest and sanitizer settings; one measurement per configuration. Full optimized-suite timing used CPUs 24–27. Full repository clang-tidy and remote cross-platform workflows were not rerun locally; the original PR C++ checks passed on GitHub.