From e9f7422bc5d90d161c80cbff48da829de024d078 Mon Sep 17 00:00:00 2001 From: "shengjun.li" <49774184+shengjun1985@users.noreply.github.com> Date: Thu, 26 Mar 2020 16:45:49 +0800 Subject: [PATCH] fix binary flat may retruns wrong distance when nq larger than 1 (#1760) Signed-off-by: shengjun.li --- core/src/index/thirdparty/faiss/utils/BinaryDistance.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/index/thirdparty/faiss/utils/BinaryDistance.cpp b/core/src/index/thirdparty/faiss/utils/BinaryDistance.cpp index 7827830452..5dabcf026a 100644 --- a/core/src/index/thirdparty/faiss/utils/BinaryDistance.cpp +++ b/core/src/index/thirdparty/faiss/utils/BinaryDistance.cpp @@ -209,7 +209,7 @@ void binary_distence_knn_mc( } } } - for (size_t i = 0, ni = 0; i < n1; i++) { + for (size_t i = 0; i < n1; i++) { size_t n_i = 0; float *distances_i = distances + i * k; int64_t *labels_i = labels + i * k; @@ -218,7 +218,7 @@ void binary_distence_knn_mc( size_t match_index = t * n1 + i; size_t copy_num = std::min(k - n_i, match_num[match_index]); memcpy(labels_i + n_i, match_data + match_index * k, copy_num * sizeof(int64_t)); - memset(distances + n_i, 0, copy_num * sizeof(int32_t)); + memset(distances_i + n_i, 0, copy_num * sizeof(float)); n_i += copy_num; } for (; n_i < k; n_i++) {