-
Notifications
You must be signed in to change notification settings - Fork 65
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
Diskann Benchmarking Wrapper #260
base: branch-24.12
Are you sure you want to change the base?
Conversation
…diskann-wrapper
…diskann-wrapper
…diskann-wrapper
…into diskann-wrapper
…into diskann-wrapper
…diskann-wrapper
…diskann-wrapper
…diskann-wrapper
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR, it's nice to see the list of supported algorithms growing.
I feel unsettled though about adding new functionality to the common benchmark.hpp
header just for one algorithm - this looks unsustainable. I see you probably want to avoid having the user to specify the path to the index file / dataset manually, but I think adding the new functionality in such an ad-hoc way is not a solution.
I think, the easiest solution could be just to pass both paths as algo parameters.
Maybe you can automate this in the python layer of the benchmark. Alternatively, I think it's acceptable to modify the parse_build_param
api to give it access to the full json config file; that way, you could get the path to the dataset and fill-in the algo parameters inside that function.
void cuvs_vamana<T, IdxT>::search( | ||
const T* queries, int batch_size, int k, algo_base::index_type* neighbors, float* distances) const | ||
{ | ||
diskann_memory_search_->search(queries, batch_size, k, neighbors, distances); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like this algorithm does not use the CUDA stream during search. If this is true, please add the uses_stream()
override to disable GPU timing to avoid extra sync overheads and make the benchmark results more fair.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The GPU build requires the stream, whereas the search is done on CPU. So we would still need the stream for the build part. So we would still have to set uses_stream()
to true for the whole algorithm (which is the default)? I believe we are currently doing it the same way in CAGRA + HNSWLIB.
…diskann-wrapper
…diskann-wrapper
Co-authored-by: Bradley Dice <[email protected]>
Co-authored-by: Bradley Dice <[email protected]>
…diskann-wrapper
Brings DiskANN into cuvs-bench