-
Notifications
You must be signed in to change notification settings - Fork 21
Compilation fixes for linux x86 #890
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
eyalrund
wants to merge
11
commits into
joan-rust-test
Choose a base branch
from
rust
base: joan-rust-test
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
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
- Use peek_mut() for in-place heap replacement in MaxHeap::try_insert This avoids redundant sift operations when replacing the max element - Add is_deleted() method to GraphAccess trait for extensibility - Add into_sorted_pairs() method for efficient result collection - Optimize into_sorted_vec() with pre-allocated capacity Performance impact: - KNN search: More stable (47K-52K q/s vs 36K-51K before) - Insertion: Improved ~25% (4.3K vec/s vs 3.5K before) - Range search: Similar performance (205K-256K q/s)
Add a separate atomic flags array to ConcurrentGraph to allow O(1) deleted flag checking without acquiring the segment read lock. This matches the C++ implementation where idToMetaData provides direct array access. Changes: - Add flags module with DELETE_MARK and IN_PROCESS constants - Add element_flags field to ConcurrentGraph (Vec<AtomicU8>) - Implement is_marked_deleted() and mark_deleted() methods - Override is_deleted() in GraphAccess impl to use flags array - Update mark_deleted_concurrent() to sync both flags and metadata - Update replace() to reset flags during compaction - Standardize all is_deleted checks to use graph.is_deleted() This optimization reduces contention in the search hot path by avoiding segment read locks when checking deleted status during neighbor exploration.
This self-contained benchmark creates an in-memory HNSW index and measures KNN search, range search, and insertion performance. Unlike the existing benchmarks that require external data files, this can be run directly for quick performance comparisons with the Rust implementation. Test configuration: 10K vectors, 128 dimensions, M=16, ef_construction=100 Usage: ./build_cpp_vecsim/benchmark/simple_hnsw_bench
|
|
…3557] (#891) * Add getter for IndexCalculatorInterface in AbstractIndex class * Fix formatting of getIndexCalculator method in IndexCalculatorInterface * Add getter for IndexCalculatorInterface in VecSim Index class * Remove unnecessary blank line in AbstractIndex class
fix benchmark runner
…902) Add rerank field to VecSimDiskContext for disk-based HNSW MOD-13179: Add boolean rerank field to VecSimDiskContext struct to support the RERANK parameter for disk-based HNSW indexes. This parameter controls whether reranking is enabled during search operations.
…end buffer size and HNSW main thread insertion (#901) * add tiered metrics - wip * format * add a test with write in place
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.
Optimizations and compilation fixes for linux x86