|
32 | 32 | #include "proto/common.pb.h"
|
33 | 33 | #include "proto/error.pb.h"
|
34 | 34 |
|
| 35 | +#ifndef ENABLE_DISKANN_SIMD_HOOK |
| 36 | +#define ENABLE_DISKANN_SIMD_HOOK |
| 37 | +#endif |
| 38 | + |
| 39 | +// #undef ENABLE_DISKANN_SIMD_HOOK |
| 40 | + |
| 41 | +#if defined(ENABLE_DISKANN_SIMD_HOOK) |
| 42 | +#include "diskann_hook.h" |
| 43 | +#include "simd/hook.h" |
| 44 | +#endif |
35 | 45 | namespace dingodb {
|
36 | 46 |
|
37 | 47 | DiskANNItemManager::DiskANNItemManager()
|
@@ -112,6 +122,8 @@ bool DiskANNItemManager::Init(std::shared_ptr<Config> config) {
|
112 | 122 | DiskANNItem::SetImportTimeout(import_timeout_s_);
|
113 | 123 | DiskANNItem::SetBaseDir(path_);
|
114 | 124 |
|
| 125 | + DiskANNItemManager::SetSimdHookForDiskANN(); |
| 126 | + |
115 | 127 | return true;
|
116 | 128 | }
|
117 | 129 |
|
@@ -162,4 +174,21 @@ std::vector<std::shared_ptr<DiskANNItem>> DiskANNItemManager::FindAll() {
|
162 | 174 | return items;
|
163 | 175 | }
|
164 | 176 |
|
| 177 | +void DiskANNItemManager::SetSimdHookForDiskANN() { |
| 178 | +#if defined(ENABLE_DISKANN_SIMD_HOOK) |
| 179 | + std::string simd_type; |
| 180 | + fvec_hook_info(simd_type); |
| 181 | + |
| 182 | +#if defined(__x86_64__) |
| 183 | + DINGO_LOG(INFO) << fmt::format("cpu_support_avx512 : {} cpu_support_avx2 : {} cpu_support_sse4_2 : {}", |
| 184 | + cpu_support_avx512() ? "true" : "false", cpu_support_avx2() ? "true" : "false", |
| 185 | + cpu_support_sse4_2() ? "true" : "false"); |
| 186 | +#endif |
| 187 | + DINGO_LOG(INFO) << fmt::format("cpu simd_type : {}", simd_type); |
| 188 | + diskann::set_fvec_L2sqr_hook(fvec_L2sqr); |
| 189 | + diskann::set_fvec_inner_product_hook(fvec_inner_product); |
| 190 | + DINGO_LOG(INFO) << fmt::format("set diskann hook : {} {}", "fvec_L2sqr", "fvec_inner_product"); |
| 191 | +#endif |
| 192 | +} |
| 193 | + |
165 | 194 | } // namespace dingodb
|
0 commit comments