Skip to content

Commit 0d32abe

Browse files
yuhaijun999ketor
authored andcommitted
[feat][store] Makes diskann independent of the system, of course it can be configured. By default it is independent.
1 parent 5ddcff3 commit 0d32abe

File tree

4 files changed

+93
-36
lines changed

4 files changed

+93
-36
lines changed

CMakeLists.txt

Lines changed: 50 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,13 @@ option(DINGO_BUILD_STATIC "Link libraries statically to generate the dingodb bin
3535
option(ENABLE_FAILPOINT "Enable failpoint" OFF)
3636
option(WITH_DISKANN "Build with diskann index" OFF)
3737
option(WITH_MKL "Build with intel mkl" OFF)
38-
option(BOOST_SEARCH_PATH "")
38+
option(BOOST_SEARCH_PATH "" OFF)
3939
option(BUILD_GOOGLE_SANITIZE "Enable google sanitize" OFF)
4040
option(BRPC_ENABLE_CPU_PROFILER "Enable brpc cpu profiler" OFF)
4141
option(XDPROCKS_PATH "Enable xdprocks raw engine")
4242
option(VECTORIZATION_INSTRUCTION_SET "vectorization instruction set")
4343
option(WITH_LIBURING "Build with liburing" ON)
44+
option(DISKANN_DEPEND_ON_SYSTEM "diskann require system dependencies for boost and aio " OFF)
4445

4546
message(STATUS CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
4647
message(STATUS THIRD_PARTY_BUILD_TYPE=${THIRD_PARTY_BUILD_TYPE})
@@ -286,7 +287,11 @@ include(ftxui)
286287
include(hnswlib)
287288
include(bdb)
288289
include(tantivy-search)
289-
include(libaio)
290+
if(WITH_DISKANN)
291+
if(NOT DISKANN_DEPEND_ON_SYSTEM)
292+
include(libaio)
293+
endif()
294+
endif()
290295

291296
set(MESSAGE_SOURCE_DIR ${CMAKE_SOURCE_DIR}/dingo-store-proto/proto)
292297
set(MESSAGE_DIR ${CMAKE_CURRENT_BINARY_DIR}/proto)
@@ -364,8 +369,13 @@ set(DYNAMIC_LIB
364369
${TANTIVY_SEARCH_LIBRARIES}
365370
${FTXUI_COMPONENT_LIBRARY}
366371
${FTXUI_DOM_LIBRARY}
367-
${FTXUI_SCREEN_LIBRARY}
368-
${LIBAIO_LIBRARIES})
372+
${FTXUI_SCREEN_LIBRARY})
373+
374+
if(WITH_DISKANN)
375+
if(NOT DISKANN_DEPEND_ON_SYSTEM)
376+
set(DYNAMIC_LIB ${DYNAMIC_LIB} ${LIBAIO_LIBRARIES})
377+
endif()
378+
endif()
369379

370380
if(ENABLE_XDPROCKS)
371381
set(DYNAMIC_LIB ${DYNAMIC_LIB} "${XDPROCKS_PATH}/lib/libxdprocks.a" "${XDPROCKS_PATH}/lib/libstorelib.a"
@@ -452,7 +462,13 @@ include_directories(${FAISS_INCLUDE_DIR})
452462
set(VECTOR_LIB ${FAISS_LIBRARIES} ${OPENMP_LIBRARY})
453463

454464
if(WITH_DISKANN)
455-
add_definitions(-DENABLE_DISKANN_MODULE=ON)
465+
add_definitions(-DENABLE_DISKANN_MODULE=1)
466+
if(DISKANN_DEPEND_ON_SYSTEM)
467+
add_definitions(-DDISKANN_DEPEND_ON_SYSTEM=1)
468+
else()
469+
add_definitions(-DDISKANN_DEPEND_ON_SYSTEM=0)
470+
endif()
471+
456472
if(NOT WITH_MKL)
457473
message(FATAL_ERROR "The WITH_MKL is not ON, please install enable WITH_MKL to build diskann.")
458474
endif()
@@ -462,15 +478,34 @@ if(WITH_DISKANN)
462478
find_package(MKL CONFIG REQUIRED)
463479

464480
if(NOT BOOST_SEARCH_PATH)
481+
# cmake_policy(SET CMP0167 OLD)
465482
find_package(Boost REQUIRED COMPONENTS program_options)
483+
if(Boost_FOUND)
484+
set(BOOST_SUMMARY "")
485+
string(APPEND BOOST_SUMMARY "Boost version: ${Boost_VERSION} ")
486+
string(APPEND BOOST_SUMMARY "Boost include dirs: ${Boost_INCLUDE_DIRS} ")
487+
string(APPEND BOOST_SUMMARY "Boost libraries: ${Boost_LIBRARIES}")
488+
489+
message(STATUS "${BOOST_SUMMARY}")
490+
add_definitions(-DBOOST_SUMMARY="${BOOST_SUMMARY}")
491+
else()
492+
message(FATAL_ERROR "Boost not found!")
493+
endif()
466494
else()
467495
message(STATUS "BOOST_SEARCH_PATH=${BOOST_SEARCH_PATH}, use user-defined boost version")
468496
endif()
469497

470498
include(diskann)
471499
include_directories(${DISKANN_INCLUDE_DIR})
472500
set(DEPEND_LIBS ${DEPEND_LIBS} diskann)
473-
set(VECTOR_LIB ${VECTOR_LIB} ${DISKANN_LIBRARIES} ${LIBAIO_LIBRARIES})
501+
if(DISKANN_DEPEND_ON_SYSTEM)
502+
set(VECTOR_LIB ${VECTOR_LIB} ${DISKANN_LIBRARIES} aio)
503+
message(STATUS "libaio use system")
504+
else()
505+
set(VECTOR_LIB ${VECTOR_LIB} ${DISKANN_LIBRARIES} ${LIBAIO_LIBRARIES})
506+
message(STATUS "libaio use third-party")
507+
endif()
508+
474509
endif()
475510

476511
if(LINK_TCMALLOC)
@@ -671,6 +706,15 @@ add_definitions(-DGIT_COMMIT_TIME="${GIT_COMMIT_TIME}")
671706
add_definitions(-DDINGO_BUILD_TYPE="${CMAKE_BUILD_TYPE}")
672707
add_definitions(-DDINGO_CONTRIB_BUILD_TYPE="${THIRD_PARTY_BUILD_TYPE}")
673708

709+
if(WITH_DISKANN)
710+
execute_process(
711+
COMMAND make -C ${CMAKE_SOURCE_DIR}/contrib/libaio clean
712+
OUTPUT_VARIABLE output
713+
ERROR_VARIABLE error
714+
RESULT_VARIABLE result
715+
OUTPUT_STRIP_TRAILING_WHITESPACE)
716+
endif()
717+
674718
if(ENABLE_FAILPOINT)
675719
message(STATUS "Enable failpoint")
676720
add_definitions(-DENABLE_FAILPOINT="ON")

cmake/libaio.cmake

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,8 @@ set(LIBAIO_LIBRARIES
2222
"${LIBAIO_INSTALL_DIR}/lib/libaio.a"
2323
CACHE FILEPATH "libaio library." FORCE)
2424

25-
if(THIRD_PARTY_BUILD_TYPE MATCHES "Debug")
26-
set(LIBAIO_DEBUG_FLAG "--enable-debug")
27-
elseif(THIRD_PARTY_BUILD_TYPE MATCHES "RelWithDebInfo")
28-
set(LIBAIO_DEBUG_FLAG "--enable-debug")
29-
endif()
30-
31-
add_custom_target(
32-
clean_libaio
33-
COMMAND $(MAKE) -C ${LIBAIO_SOURCE_DIR} clean
34-
COMMENT
35-
"Cleaning libaio.............................................................................................................................................."
36-
message
37-
(
38-
STATUS
39-
"Cleaning libaio..............................................................................................................................................."
40-
))
41-
42-
# option(FORCE_REBUILD_LIBAIO "Force rebuild libaio" ON)
25+
# if(THIRD_PARTY_BUILD_TYPE MATCHES "Debug") set(LIBAIO_DEBUG_FLAG "--enable-debug") elseif(THIRD_PARTY_BUILD_TYPE
26+
# MATCHES "RelWithDebInfo") set(LIBAIO_DEBUG_FLAG "--enable-debug") endif()
4327

4428
ExternalProject_Add(
4529
extern_libaio
@@ -48,13 +32,10 @@ ExternalProject_Add(
4832
# BINARY_DIR ${LIBAIO_BINARY_DIR}
4933
PREFIX ${LIBAIO_BINARY_DIR}
5034
BUILD_IN_SOURCE ON
51-
CONFIGURE_COMMAND
52-
""
53-
# BUILD_COMMAND $(MAKE) install prefix=${LIBAIO_BINARY_DIR} includedir=${LIBAIO_BINARY_DIR}/include
54-
# libdir=${LIBAIO_BINARY_DIR}/lib BUILD_COMMAND $(MAKE) -C src lib BUILD_COMMAND $(MAKE)
55-
# --file=${LIBAIO_SOURCES_DIR}/Makefile CLEAN_COMMAND $(MAKE) -C ${LIBAIO_SOURCES_DIR} clean BUILD_COMMAND $(MAKE)
56-
# -C ${LIBAIO_SOURCES_DIR} clean # BUILD_PRE_COMMAND ${CMAKE_COMMAND} -E env $(MAKE) -C ${LIBAIO_SOURCES_DIR} clean
57-
BUILD_COMMAND $(MAKE) -C ${LIBAIO_SOURCES_DIR} clean && $(MAKE) --file=${LIBAIO_SOURCES_DIR}/Makefile install prefix=${LIBAIO_BINARY_DIR} includedir=${LIBAIO_BINARY_DIR}/include libdir=${LIBAIO_BINARY_DIR}/lib
35+
CONFIGURE_COMMAND ""
36+
BUILD_ALWAYS ON
37+
BUILD_COMMAND $(MAKE) --file=${LIBAIO_SOURCES_DIR}/Makefile install prefix=${LIBAIO_BINARY_DIR}
38+
includedir=${LIBAIO_BINARY_DIR}/include libdir=${LIBAIO_BINARY_DIR}/lib
5839
INSTALL_COMMAND mkdir -p ${LIBAIO_INSTALL_DIR}/lib ${LIBAIO_INSTALL_DIR}/include
5940
COMMAND cp ${LIBAIO_BINARY_DIR}/include/libaio.h ${LIBAIO_INSTALL_DIR}/include/
6041
COMMAND cp ${LIBAIO_BINARY_DIR}/lib/libaio.a ${LIBAIO_INSTALL_DIR}/lib/
@@ -65,5 +46,4 @@ ExternalProject_Add(
6546

6647
add_library(libaio STATIC IMPORTED GLOBAL)
6748
set_property(TARGET libaio PROPERTY IMPORTED_LOCATION ${LIBAIO_LIBRARIES})
68-
add_dependencies(libaio clean_libaio extern_libaio)
69-
# add_dependencies(libaio extern_libaio)
49+
add_dependencies(libaio extern_libaio)

dingo-store-proto

src/common/version.cc

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,30 @@
1919

2020
namespace dingodb {
2121

22+
#if defined(ENABLE_DISKANN_MODULE)
23+
#if ENABLE_DISKANN_MODULE == 1
24+
#define USE_DISKANN true
25+
#else
26+
#define USE_DISKANN false
27+
#endif
28+
#else // #if defined(ENABLE_DISKANN_MODULE)
29+
#define USE_DISKANN false
30+
#endif
31+
32+
#if defined(DISKANN_DEPEND_ON_SYSTEM)
33+
#if DISKANN_DEPEND_ON_SYSTEM == 1
34+
#define ENABLE_DISKANN_DEPEND_ON_SYSTEM true
35+
#else
36+
#define ENABLE_DISKANN_DEPEND_ON_SYSTEM false
37+
#endif
38+
#else // #if defined(DISKANN_DEPEND_ON_SYSTEM)
39+
#define ENABLE_DISKANN_DEPEND_ON_SYSTEM false
40+
#endif
41+
42+
#if !defined(BOOST_SUMMARY)
43+
#define BOOST_SUMMARY ""
44+
#endif
45+
2246
DEFINE_string(git_commit_hash, GIT_VERSION, "current git commit version");
2347
DEFINE_string(git_tag_name, GIT_TAG_NAME, "current dingo git tag version");
2448
DEFINE_string(git_commit_user, GIT_COMMIT_USER, "current dingo git commit user");
@@ -33,6 +57,10 @@ DEFINE_bool(use_openblas, false, "use openblas");
3357
DEFINE_bool(use_tcmalloc, false, "use tcmalloc");
3458
DEFINE_bool(use_profiler, false, "use profiler");
3559
DEFINE_bool(use_sanitizer, false, "use sanitizer");
60+
DEFINE_bool(use_diskann, USE_DISKANN, "use diskann");
61+
DEFINE_bool(diskann_depend_on_system, ENABLE_DISKANN_DEPEND_ON_SYSTEM,
62+
"if true, diskann depend on system, else use third_party.");
63+
DEFINE_string(boost_summary, BOOST_SUMMARY, "boost summary");
3664

3765
std::string GetBuildFlag() {
3866
#ifdef USE_MKL
@@ -67,9 +95,11 @@ std::string GetBuildFlag() {
6795

6896
return butil::string_printf(
6997
"DINGO_STORE USE_MKL:[%s] USE_OPENBLAS:[%s] LINK_TCMALLOC:[%s] BRPC_ENABLE_CPU_PROFILER:[%s] "
70-
"USE_SANITIZE:[%s]\n",
98+
"USE_SANITIZE:[%s]\nDINGO_STORE USE_DISKANN:[%s] DISKANN_DEPEND_ON_SYSTEM:[%s]\nDINGO_STORE "
99+
"BOOST_SUMMARY:[%s]\n",
71100
FLAGS_use_mkl ? "ON" : "OFF", FLAGS_use_openblas ? "ON" : "OFF", FLAGS_use_tcmalloc ? "ON" : "OFF",
72-
FLAGS_use_profiler ? "ON" : "OFF", FLAGS_use_sanitizer ? "ON" : "OFF");
101+
FLAGS_use_profiler ? "ON" : "OFF", FLAGS_use_sanitizer ? "ON" : "OFF", FLAGS_use_diskann ? "ON" : "OFF",
102+
FLAGS_diskann_depend_on_system ? "ON" : "OFF", FLAGS_boost_summary.c_str());
73103
}
74104

75105
void DingoShowVerion() {
@@ -107,6 +137,9 @@ pb::common::VersionInfo GetVersionInfo() {
107137
version_info.set_use_tcmalloc(FLAGS_use_tcmalloc);
108138
version_info.set_use_profiler(FLAGS_use_profiler);
109139
version_info.set_use_sanitizer(FLAGS_use_sanitizer);
140+
version_info.set_use_diskann(FLAGS_use_diskann);
141+
version_info.set_diskann_depend_on_system(FLAGS_diskann_depend_on_system);
142+
version_info.set_boost_summary(FLAGS_boost_summary);
110143
return version_info;
111144
}
112145

0 commit comments

Comments
 (0)