Skip to content

ci: deduplicate builds and parallelize sanitizer and Windows checks - #161

Merged
gouyt13 merged 2 commits into
mainfrom
ci/deduplicate-builds-and-parallelize-sanitizers
Oct 23, 2026
Merged

gouyt13 merged 2 commits into
mainfrom
ci/deduplicate-builds-and-parallelize-sanitizers

Conversation

@gouyt13

@gouyt13 gouyt13 commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Summary

Reduce duplicate CI builds and shorten sanitizer and Windows consumer checks while retaining required check names and test coverage.

  • Skip the redundant standalone Clang OpenMP-OFF build/test: the retained FastScan producer has the same 168-test inventory, alongside the independent core producer and every consumer integration mode.
  • Run FAISS comparison tests against the Python 3.11 source installation instead of rebuilding the package. Preserve its required check as a failure-propagating source-matrix summary.
  • Run the full ASan/UBSan suite with at most two CTest processes, retaining compiler flags, leak detection, fatal UBSan errors, and internal test thread settings.
  • Split only Windows consumers into core/FastScan partitions for each OpenMP mode. Each partition retains its producer tests and add_subdirectory, FetchContent, and installed-package checks. The core partition owns the existing rejection checks and core benchmark. Linux/macOS retain the combined default; the required matrix summary is unchanged.

The Windows change replaces two sequential component pipelines with four independent jobs. It adds two runner-job instances to shorten the critical path; it does not claim lower total computation, and runner queueing can affect the benefit.

Testing

  • Latest CI automation suite: 44 tests passed, including all four Windows component/OpenMP combinations, invalid partition selection, and summary failure/skip behavior.
  • Fresh local core/FastScan partitions with OpenMP ON and OFF: each mode passed 146 core and 180 FastScan CTest executions. The combined default passed 326. Compared OFF test inventories with the combined baseline: identical, with no missing tests. Core rejection checks and benchmark remain present; the FastScan-only partition does not depend on a core-partition install.
  • Python/Ruff checks, actionlint with the observed VS2026 runner label declared, and git diff --check passed.
  • Source-install smoke and FAISS comparison: 18 tests passed using the existing CPython 3.13 environment.
  • Four local sanitizer runs on the same binary and four fixed CPU cores: serial 207.081s/206.455s; parallel 111.596s/113.025s. Median test-phase wall time decreased 45.7%, from 206.768s to 112.311s. All rounds had the same 409 cases and outcomes: 408 passed, one conditional skip; dedicated OpenMPBinding passed. Sampled aggregate process-tree RSS peaked at 1.16 GiB serial and 1.46 GiB parallel. Sanitized installed consumer: 3/3 tests passed.

Local sanitizer timing used Xeon Gold 6418H, GCC 13.4, Debug -O1 -g, native optimization OFF, ASan+UBSan and OpenMP ON, and existing GoogleTest 1.11.0 through a source override. CI pins v1.14.0. Both sides of the local comparison used identical binaries/dependencies.

CI verification: the latest run on 73a73f2 passed all 27 C++ workflow jobs in 6m57s, compared with 10m15s on b8b1936. Windows core ON/OFF took 3m04s/4m18s; FastScan ON/OFF took 3m16s/5m26s. The longest Windows consumer fell from 9m56s to 5m26s. Each OpenMP mode retains 314 Windows CTest executions (140 core + 174 FastScan), matching the previous combined job. This is a single-run observation with runner variance; it does not establish lower total computation. Run: https://github.com/VectorDB-NTU/RaBitQ-Library/actions/runs/39952542023

The earlier CI run on b8b1936 passed: sanitizer testing took 112s versus 243s in PR #160. Compilation also varied, so that result does not establish the whole-job causal speedup.

@github-actions github-actions Bot added the release:build Release category managed from the PR title label Oct 23, 2026
@gouyt13 gouyt13 changed the title ci: deduplicate builds and parallelize sanitizer tests ci: deduplicate builds and parallelize sanitizer and Windows checks Oct 23, 2026
@gouyt13
gouyt13 merged commit 7001929 into main Oct 23, 2026
53 checks passed
@gouyt13
gouyt13 deleted the ci/deduplicate-builds-and-parallelize-sanitizers branch October 23, 2026 12:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release:build Release category managed from the PR title

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant