Skip to content

Commit

Permalink
format doc
Browse files Browse the repository at this point in the history
  • Loading branch information
Sanhaoji2 committed Jan 19, 2024
1 parent d09c9cb commit ec6a1a1
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 36 deletions.
26 changes: 12 additions & 14 deletions include/tag_uint128.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,26 @@ struct tag_uint128
{
std::uint64_t _data1 = 0;
std::uint64_t _data2 = 0;
bool operator==(const tag_uint128& other) const

bool operator==(const tag_uint128 &other) const
{
return _data1 == other._data1
&& _data2 == other._data2;
return _data1 == other._data1 && _data2 == other._data2;
}

bool operator==(std::uint64_t other) const
{
return _data1 == other
&& _data2 == 0;
return _data1 == other && _data2 == 0;
}

tag_uint128& operator=(const tag_uint128& other)
tag_uint128 &operator=(const tag_uint128 &other)
{
_data1 = other._data1;
_data2 = other._data2;

return *this;
}

tag_uint128& operator=(std::uint64_t other)
tag_uint128 &operator=(std::uint64_t other)
{
_data1 = other;
_data2 = 0;
Expand All @@ -41,13 +39,14 @@ struct tag_uint128
};

#pragma pack(pop)
}
} // namespace diskann

namespace std
{
// Hash 128 input bits down to 64 bits of output.
// This is intended to be a reasonably good hash function.
inline std::uint64_t Hash128to64(const std::uint64_t& low, const std::uint64_t& high) {
inline std::uint64_t Hash128to64(const std::uint64_t &low, const std::uint64_t &high)
{
// Murmur-inspired hashing.
const std::uint64_t kMul = 0x9ddfea08eb382d69ULL;
std::uint64_t a = (low ^ high) * kMul;
Expand All @@ -58,13 +57,12 @@ inline std::uint64_t Hash128to64(const std::uint64_t& low, const std::uint64_t&
return b;
}

template<>
struct hash<diskann::tag_uint128>
template <> struct hash<diskann::tag_uint128>
{
_NODISCARD size_t operator()(const diskann::tag_uint128& key) const noexcept
_NODISCARD size_t operator()(const diskann::tag_uint128 &key) const noexcept
{
return Hash128to64(key._data1, key._data2); // map -0 to 0
}
};

}
} // namespace std
1 change: 0 additions & 1 deletion include/utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -1008,7 +1008,6 @@ void block_convert(std::ofstream &writr, std::ifstream &readr, float *read_buf,

DISKANN_DLLEXPORT void normalize_data_file(const std::string &inFileName, const std::string &outFileName);


inline std::string get_tag_string(std::uint64_t tag)
{
return std::to_string(tag);
Expand Down
42 changes: 21 additions & 21 deletions src/index.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2023,10 +2023,10 @@ std::pair<uint32_t, uint32_t> Index<T, TagT, LabelT>::_search_with_filters(const
float *distances)
{
auto converted_label = this->get_converted_label(raw_label);
if (typeid(TagT*) == indices.type())

if (typeid(TagT *) == indices.type())
{
auto ptr = std::any_cast<TagT*>(indices);
auto ptr = std::any_cast<TagT *>(indices);
return this->search_with_filters(std::any_cast<T *>(query), converted_label, K, L, ptr, distances);
}
else
Expand Down Expand Up @@ -3374,11 +3374,11 @@ template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<int8_t, uint32_t,
const int8_t *query, const size_t K, const uint32_t L, uint32_t *indices, float *distances);
// TagT==uint128
template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<float, tag_uint128, uint32_t>::search<tag_uint128>(
const float* query, const size_t K, const uint32_t L, tag_uint128* indices, float* distances);
const float *query, const size_t K, const uint32_t L, tag_uint128 *indices, float *distances);
template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<uint8_t, tag_uint128, uint32_t>::search<tag_uint128>(
const uint8_t* query, const size_t K, const uint32_t L, tag_uint128* indices, float* distances);
const uint8_t *query, const size_t K, const uint32_t L, tag_uint128 *indices, float *distances);
template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<int8_t, tag_uint128, uint32_t>::search<tag_uint128>(
const int8_t* query, const size_t K, const uint32_t L, tag_uint128* indices, float* distances);
const int8_t *query, const size_t K, const uint32_t L, tag_uint128 *indices, float *distances);

template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<float, uint64_t, uint32_t>::search_with_filters<
uint64_t>(const float *query, const uint32_t &filter_label, const size_t K, const uint32_t L, uint64_t *indices,
Expand Down Expand Up @@ -3410,14 +3410,14 @@ template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<int8_t, uint32_t,
float *distances);
// TagT==uint128
template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<float, tag_uint128, uint32_t>::search_with_filters<
tag_uint128>(const float* query, const uint32_t& filter_label, const size_t K, const uint32_t L, tag_uint128* indices,
float* distances);
tag_uint128>(const float *query, const uint32_t &filter_label, const size_t K, const uint32_t L,
tag_uint128 *indices, float *distances);
template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<uint8_t, tag_uint128, uint32_t>::search_with_filters<
tag_uint128>(const uint8_t* query, const uint32_t& filter_label, const size_t K, const uint32_t L, tag_uint128* indices,
float* distances);
tag_uint128>(const uint8_t *query, const uint32_t &filter_label, const size_t K, const uint32_t L,
tag_uint128 *indices, float *distances);
template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<int8_t, tag_uint128, uint32_t>::search_with_filters<
tag_uint128>(const int8_t* query, const uint32_t& filter_label, const size_t K, const uint32_t L, tag_uint128* indices,
float* distances);
tag_uint128>(const int8_t *query, const uint32_t &filter_label, const size_t K, const uint32_t L,
tag_uint128 *indices, float *distances);

template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<float, uint64_t, uint16_t>::search<uint64_t>(
const float *query, const size_t K, const uint32_t L, uint64_t *indices, float *distances);
Expand All @@ -3440,11 +3440,11 @@ template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<int8_t, uint32_t,
const int8_t *query, const size_t K, const uint32_t L, uint32_t *indices, float *distances);
// TagT==uint128
template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<float, tag_uint128, uint16_t>::search<tag_uint128>(
const float* query, const size_t K, const uint32_t L, tag_uint128* indices, float* distances);
const float *query, const size_t K, const uint32_t L, tag_uint128 *indices, float *distances);
template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<uint8_t, tag_uint128, uint16_t>::search<tag_uint128>(
const uint8_t* query, const size_t K, const uint32_t L, tag_uint128* indices, float* distances);
const uint8_t *query, const size_t K, const uint32_t L, tag_uint128 *indices, float *distances);
template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<int8_t, tag_uint128, uint16_t>::search<tag_uint128>(
const int8_t* query, const size_t K, const uint32_t L, tag_uint128* indices, float* distances);
const int8_t *query, const size_t K, const uint32_t L, tag_uint128 *indices, float *distances);

template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<float, uint64_t, uint16_t>::search_with_filters<
uint64_t>(const float *query, const uint16_t &filter_label, const size_t K, const uint32_t L, uint64_t *indices,
Expand Down Expand Up @@ -3476,13 +3476,13 @@ template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<int8_t, uint32_t,
float *distances);
// TagT==uint128
template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<float, tag_uint128, uint16_t>::search_with_filters<
tag_uint128>(const float* query, const uint16_t& filter_label, const size_t K, const uint32_t L, tag_uint128* indices,
float* distances);
tag_uint128>(const float *query, const uint16_t &filter_label, const size_t K, const uint32_t L,
tag_uint128 *indices, float *distances);
template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<uint8_t, tag_uint128, uint16_t>::search_with_filters<
tag_uint128>(const uint8_t* query, const uint16_t& filter_label, const size_t K, const uint32_t L, tag_uint128* indices,
float* distances);
tag_uint128>(const uint8_t *query, const uint16_t &filter_label, const size_t K, const uint32_t L,
tag_uint128 *indices, float *distances);
template DISKANN_DLLEXPORT std::pair<uint32_t, uint32_t> Index<int8_t, tag_uint128, uint16_t>::search_with_filters<
tag_uint128>(const int8_t* query, const uint16_t& filter_label, const size_t K, const uint32_t L, tag_uint128* indices,
float* distances);
tag_uint128>(const int8_t *query, const uint16_t &filter_label, const size_t K, const uint32_t L,
tag_uint128 *indices, float *distances);

} // namespace diskann

0 comments on commit ec6a1a1

Please sign in to comment.