diff --git a/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.cpp b/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.cpp index 56ebfcc6b2cdbf50c0accad49969319a4003e66d..bee43bd6a03d6b698b30aaff18709c1884f4565e 100644 --- a/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.cpp +++ b/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.cpp @@ -19,12 +19,7 @@ namespace faiss { -ConcurrentBitset::ConcurrentBitset(id_type_t size) : size_(size) { - id_type_t bytes_count = (size >> 3) + 1; - // bitset_.resize(bytes_count, 0); - for (auto i = 0; i < bytes_count; ++i) { - bitset_.emplace_back(0); - } +ConcurrentBitset::ConcurrentBitset(id_type_t size) : size_(size), bitset_((size + 7) >> 3) { } bool @@ -42,4 +37,14 @@ ConcurrentBitset::clear(id_type_t id) { bitset_[id >> 3].fetch_and(~(0x1 << (id & 0x7))); } +ConcurrentBitset::id_type_t +ConcurrentBitset::size() { + return size_; +} + +const unsigned char* +ConcurrentBitset::bitset() { + return reinterpret_cast(bitset_.data()); +} + } // namespace faiss diff --git a/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.h b/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.h index 8e7e04b7f6a55af40490226356247e9c062d515a..fff7752c6a2bc56a7b046a2be6326194e3fddf4e 100644 --- a/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.h +++ b/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.h @@ -19,7 +19,7 @@ #include #include -#include +#include namespace faiss { @@ -42,9 +42,16 @@ class ConcurrentBitset { void clear(id_type_t id); + id_type_t + size(); + + const unsigned char* + bitset(); + private: - std::deque> bitset_; id_type_t size_; + std::vector> bitset_; + }; using ConcurrentBitsetPtr = std::shared_ptr;