Skip to content

Commit bac48fb

Browse files
authored
Enable svs fp16 tests (#842)
enable svs fp16 tests align them with index size / label count definition
1 parent 11ea88d commit bac48fb

File tree

2 files changed

+27
-10
lines changed

2 files changed

+27
-10
lines changed

tests/unit/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ add_executable(test_fp16 ../utils/test_main_with_timeout.cpp ../utils/mock_threa
4747
add_executable(test_int8 ../utils/test_main_with_timeout.cpp ../utils/mock_thread_pool.cpp test_int8.cpp unit_test_utils.cpp)
4848
add_executable(test_uint8 ../utils/test_main_with_timeout.cpp ../utils/mock_thread_pool.cpp test_uint8.cpp unit_test_utils.cpp)
4949
add_executable(test_index_test_utils ../utils/test_main_with_timeout.cpp ../utils/mock_thread_pool.cpp test_index_test_utils.cpp unit_test_utils.cpp)
50-
add_executable(test_svs ../utils/test_main_with_timeout.cpp ../utils/mock_thread_pool.cpp test_svs.cpp test_svs_tiered.cpp test_svs_multi.cpp unit_test_utils.cpp)
50+
add_executable(test_svs ../utils/test_main_with_timeout.cpp ../utils/mock_thread_pool.cpp test_svs.cpp test_svs_tiered.cpp test_svs_multi.cpp test_svs_fp16.cpp unit_test_utils.cpp)
5151

5252
target_link_libraries(test_hnsw PUBLIC gtest VectorSimilarity)
5353
target_link_libraries(test_hnsw_parallel PUBLIC gtest VectorSimilarity)

tests/unit/test_svs_fp16.cpp

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,9 @@ TYPED_TEST(FP16SVSTest, svs_bulk_vectors_add_delete_test) {
242242
// Delete almost all vectors
243243
const size_t keep_num = 10;
244244
ASSERT_EQ(svs_index->deleteVectors(ids.data(), n - keep_num), n - keep_num);
245-
ASSERT_EQ(VecSimIndex_IndexSize(index), keep_num);
245+
ASSERT_EQ(VecSimIndex_IndexSize(index), n);
246+
ASSERT_EQ(index->indexLabelCount(), keep_num);
247+
ASSERT_EQ(svs_index->getNumMarkedDeleted(), n - keep_num);
246248

247249
auto verify_res_after_delete = [&](size_t id, double score, size_t index) {
248250
EXPECT_EQ(id, n - keep_num + index);
@@ -252,6 +254,12 @@ TYPED_TEST(FP16SVSTest, svs_bulk_vectors_add_delete_test) {
252254
// Thread 0: Couldn't find key.
253255
runTopKSearchTest(index, query, keep_num, verify_res_after_delete, nullptr, BY_ID);
254256

257+
// Delete rest of the vectors
258+
// num_marked_deleted should reset.
259+
ASSERT_EQ(svs_index->deleteVectors(ids.data() + n - keep_num, keep_num), keep_num);
260+
ASSERT_EQ(VecSimIndex_IndexSize(index), 0);
261+
ASSERT_EQ(index->indexLabelCount(), 0);
262+
ASSERT_EQ(svs_index->getNumMarkedDeleted(), 0);
255263
VecSimIndex_Free(index);
256264
}
257265

@@ -334,14 +342,18 @@ TYPED_TEST(FP16SVSTest, svs_reindexing_same_vector) {
334342
for (size_t i = 0; i < n - 1; i++) {
335343
VecSimIndex_DeleteVector(index, i);
336344
}
337-
ASSERT_EQ(VecSimIndex_IndexSize(index), 1);
345+
ASSERT_EQ(VecSimIndex_IndexSize(index), n);
346+
ASSERT_EQ(index->indexLabelCount(), 1);
347+
ASSERT_EQ(svs_index->getNumMarkedDeleted(), n - 1);
338348

339349
// Reinsert the same vectors under the same ids.
340350
for (size_t i = 0; i < n; i++) {
341351
// i / 10 is in integer (take the "floor value).
342352
this->GenerateAndAddVector(index, dim, i, i / 10);
343353
}
344-
ASSERT_EQ(VecSimIndex_IndexSize(index), n);
354+
ASSERT_EQ(VecSimIndex_IndexSize(index), 2 * n);
355+
ASSERT_EQ(index->indexLabelCount(), n);
356+
ASSERT_EQ(svs_index->getNumMarkedDeleted(), n);
345357

346358
// Run the same query again.
347359
runTopKSearchTest(index, query, k, verify_res);
@@ -388,14 +400,18 @@ TYPED_TEST(FP16SVSTest, svs_reindexing_same_vector_different_id) {
388400
for (size_t i = 0; i < n - 1; i++) {
389401
VecSimIndex_DeleteVector(index, i);
390402
}
391-
ASSERT_EQ(VecSimIndex_IndexSize(index), 1);
403+
ASSERT_EQ(VecSimIndex_IndexSize(index), n);
404+
ASSERT_EQ(index->indexLabelCount(), 1);
405+
ASSERT_EQ(svs_index->getNumMarkedDeleted(), n - 1);
392406

393407
// Reinsert the same vectors under different ids than before.
394408
for (size_t i = 0; i < n; i++) {
395409
this->GenerateAndAddVector(index, dim, i + 10,
396410
i / 10); // i / 10 is in integer (take the "floor" value).
397411
}
398-
ASSERT_EQ(VecSimIndex_IndexSize(index), n);
412+
ASSERT_EQ(VecSimIndex_IndexSize(index), 2 * n);
413+
ASSERT_EQ(index->indexLabelCount(), n);
414+
ASSERT_EQ(svs_index->getNumMarkedDeleted(), n);
399415

400416
// Run the same query again.
401417
auto verify_res_different_id = [&](size_t id, double score, size_t index) {
@@ -787,7 +803,8 @@ TYPED_TEST(FP16SVSTest, test_delete_vector) {
787803

788804
// Here the shift should happen.
789805
VecSimIndex_DeleteVector(index, 1);
790-
ASSERT_EQ(VecSimIndex_IndexSize(index), n - 1);
806+
ASSERT_EQ(VecSimIndex_IndexSize(index), n);
807+
ASSERT_EQ(index->indexLabelCount(), n - 1);
791808

792809
float16 query[dim];
793810
this->GenerateVector(query, dim, 0.0);
@@ -2750,7 +2767,7 @@ TYPED_TEST(FP16SVSTieredIndexTest, KNNSearch) {
27502767
VecSimIndex_DeleteVector(svs_index, i);
27512768
}
27522769
ASSERT_EQ(flat_index->indexSize(), n * 2 / 3);
2753-
ASSERT_EQ(svs_index->indexSize(), n / 2);
2770+
ASSERT_EQ(svs_index->indexLabelCount(), n / 2);
27542771
k = n * 2 / 3;
27552772
cur_memory_usage = allocator->getAllocationSize();
27562773
runTopKSearchTest(tiered_index, query_0, k, ver_res_0);
@@ -2765,7 +2782,7 @@ TYPED_TEST(FP16SVSTieredIndexTest, KNNSearch) {
27652782
VecSimIndex_DeleteVector(flat_index, i);
27662783
}
27672784
ASSERT_EQ(flat_index->indexSize(), n / 6);
2768-
ASSERT_EQ(svs_index->indexSize(), n / 2);
2785+
ASSERT_EQ(svs_index->indexLabelCount(), n / 2);
27692786
k = n / 4;
27702787
cur_memory_usage = allocator->getAllocationSize();
27712788
runTopKSearchTest(tiered_index, query_0, k, ver_res_0);
@@ -2779,7 +2796,7 @@ TYPED_TEST(FP16SVSTieredIndexTest, KNNSearch) {
27792796
this->GenerateAndAddVector(flat_index, dim, i, i);
27802797
}
27812798
ASSERT_EQ(flat_index->indexSize(), n * 2 / 3);
2782-
ASSERT_EQ(svs_index->indexSize(), 0);
2799+
ASSERT_EQ(svs_index->indexLabelCount(), 0);
27832800
k = n / 3;
27842801
cur_memory_usage = allocator->getAllocationSize();
27852802
runTopKSearchTest(tiered_index, query_0, k, ver_res_0);

0 commit comments

Comments
 (0)