You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The ann-bench dataset uses lazy-loading blobs to move data between storage and host and device memory.
The data may be moved between memory spaces at the moment some properties/pointers are requested.
In the search throughput mode, this sometimes causes a problem: two concurrent benchmark threads access the same property and concurrently modify the state of the blobs, which leads to various segfaults.
The fix is to guard the critical sections with a mutex lock. There shouldn't be any impact on benchmark QPS results.
Only one method, `dataset->dim()` is accessed within the benchmark loop. To avoid locking the mutex in this method, this PR changes the way `dim()` is evaluated; it's cached in `dim_` variable while still maintaining the behavior of loading it either from the query set or the base set depending on what is available/accessed first.
Authors:
- Artem M. Chirkin (https://github.com/achirkin)
- Corey J. Nolet (https://github.com/cjnolet)
Approvers:
- Tarang Jain (https://github.com/tarang-jain)
- Tamas Bela Feher (https://github.com/tfeher)
URL: #828
0 commit comments