Skip to content

Commit aaf65ce

Browse files
committed
Support selective build (i.e. excluding engines)
1 parent 312c8dc commit aaf65ce

File tree

10 files changed

+658
-199
lines changed

10 files changed

+658
-199
lines changed

CMakeLists.txt

Lines changed: 103 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
CMAKE_MINIMUM_REQUIRED(VERSION 3.0.0)
22
PROJECT(RedisAI)
3+
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/opt/cmake/modules)
4+
5+
# Set a default build type if none was specified
6+
set(default_build_type "Release")
7+
8+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
9+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
10+
11+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wno-cast-function-type -Werror -O3")
12+
# Add -fno-omit-frame-pointer to avoid seeing incomplete stack traces
13+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb -fno-omit-frame-pointer")
14+
15+
option(BUILD_TF "Build the TensorFlow backend" ON)
16+
option(BUILD_ORT "Build the ONNXRuntime backend" ON)
17+
option(BUILD_TORCH "Build the PyTorch backend" ON)
318

419
#----------------------------------------------------------------------------------------------
520

@@ -43,31 +58,48 @@ GET_FILENAME_COMPONENT(installAbs
4358
#----------------------------------------------------------------------------------------------
4459

4560
INCLUDE_DIRECTORIES(${depsAbs}/dlpack/include)
46-
INCLUDE_DIRECTORIES(${depsAbs}/libtensorflow/include)
47-
INCLUDE_DIRECTORIES(${depsAbs}/libtorch/include)
48-
INCLUDE_DIRECTORIES(${depsAbs}/onnxruntime/include)
61+
if(BUILD_TF)
62+
INCLUDE_DIRECTORIES(${depsAbs}/libtensorflow/include)
63+
endif(BUILD_TF)
64+
if(BUILD_TORCH)
65+
INCLUDE_DIRECTORIES(${depsAbs}/libtorch/include)
66+
endif(BUILD_TORCH)
67+
if(BUILD_ORT)
68+
INCLUDE_DIRECTORIES(${depsAbs}/onnxruntime/include)
69+
endif(BUILD_ORT)
4970

50-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
51-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
5271
SET(CMAKE_C_STANDARD 11)
72+
ADD_DEFINITIONS(-DREDISMODULE_EXPERIMENTAL_API)
5373

5474
# SET(CUDA_TOOLKIT_ROOT_DIR /usr/local/cuda-10.0)
5575

5676
#----------------------------------------------------------------------------------------------
5777

58-
FIND_LIBRARY(TF_LIBRARIES NAMES tensorflow
59-
PATHS ${depsAbs}/libtensorflow/lib)
60-
IF (NOT TF_LIBRARIES)
61-
MESSAGE(FATAL_ERROR "Could not find tensorflow")
62-
ENDIF()
78+
if(BUILD_TF)
79+
FIND_LIBRARY(TF_LIBRARIES NAMES tensorflow
80+
PATHS ${depsAbs}/libtensorflow/lib)
81+
message(STATUS "Found TensorFlow Libraries: \"${TF_LIBRARIES}\")")
82+
IF (NOT TF_LIBRARIES)
83+
message(STATUS "TensorFlow Libraries are not in ${depsAbs}/libtensorflow/lib. Trying find_package method")
84+
find_package(TensorFlow REQUIRED)
85+
set(TF_LIBRARIES ${TensorFlow_LIBRARY})
86+
IF (NOT TF_LIBRARIES)
87+
MESSAGE(FATAL_ERROR "Could not find tensorflow")
88+
else()
89+
message(STATUS "Found TensorFlow Libraries: \"${TF_LIBRARIES}\")")
90+
endif()
91+
ENDIF()
92+
endif(BUILD_TF)
6393

6494
#----------------------------------------------------------------------------------------------
6595

66-
FIND_LIBRARY(ORT_LIBRARIES NAMES onnxruntime
67-
PATHS ${depsAbs}/onnxruntime/lib)
68-
IF (NOT ORT_LIBRARIES)
69-
MESSAGE(FATAL_ERROR "Could not find ONNXRuntime")
70-
ENDIF()
96+
if(BUILD_ORT)
97+
FIND_LIBRARY(ORT_LIBRARIES NAMES onnxruntime
98+
PATHS ${depsAbs}/onnxruntime/lib)
99+
IF (NOT ORT_LIBRARIES)
100+
MESSAGE(FATAL_ERROR "Could not find ONNXRuntime")
101+
ENDIF()
102+
endif(BUILD_ORT)
71103

72104
#----------------------------------------------------------------------------------------------
73105

@@ -82,14 +114,15 @@ ENDIF()
82114

83115
#----------------------------------------------------------------------------------------------
84116

85-
# Find Torch stuff and build our wrapper
86-
SET (Torch_DIR ${depsAbs}/libtorch/share/cmake/Torch)
87-
FIND_PACKAGE(Torch REQUIRED)
117+
if(BUILD_TORCH)
118+
# Find Torch stuff and build our wrapper
119+
SET (Torch_DIR ${depsAbs}/libtorch/share/cmake/Torch)
120+
FIND_PACKAGE(Torch REQUIRED)
88121

89-
INCLUDE_DIRECTORIES(util/libtorch_c)
90-
ADD_DEFINITIONS(-DREDISMODULE_EXPERIMENTAL_API)
122+
INCLUDE_DIRECTORIES(util/libtorch_c)
91123

92-
ADD_SUBDIRECTORY(src/libtorch_c)
124+
ADD_SUBDIRECTORY(src/libtorch_c)
125+
endif(BUILD_TORCH)
93126

94127
#----------------------------------------------------------------------------------------------
95128

@@ -125,55 +158,61 @@ ENDIF()
125158

126159
#----------------------------------------------------------------------------------------------
127160

128-
ADD_LIBRARY(redisai_tensorflow SHARED $<TARGET_OBJECTS:redisai_tensorflow_obj>)
129-
TARGET_LINK_LIBRARIES(redisai_tensorflow ${TF_LIBRARIES})
130-
SET_TARGET_PROPERTIES(redisai_tensorflow PROPERTIES PREFIX "")
131-
SET_TARGET_PROPERTIES(redisai_tensorflow PROPERTIES SUFFIX ".so")
132-
IF (APPLE)
133-
SET_TARGET_PROPERTIES(redisai_tensorflow PROPERTIES INSTALL_RPATH "@loader_path/lib")
134-
ELSE ()
135-
ADD_LDFLAGS(redisai_tensorflow "-Wl,--enable-new-dtags")
136-
SET_TARGET_PROPERTIES(redisai_tensorflow PROPERTIES INSTALL_RPATH "\$ORIGIN/lib")
137-
ENDIF()
138-
INSTALL(TARGETS redisai_tensorflow LIBRARY DESTINATION backends/redisai_tensorflow)
139-
INSTALL(DIRECTORY ${depsAbs}/libtensorflow/lib DESTINATION ${installAbs}/backends/redisai_tensorflow
140-
FILES_MATCHING PATTERN ${LIB_PATTERN})
161+
if(BUILD_TF)
162+
ADD_LIBRARY(redisai_tensorflow SHARED $<TARGET_OBJECTS:redisai_tensorflow_obj>)
163+
TARGET_LINK_LIBRARIES(redisai_tensorflow ${TF_LIBRARIES})
164+
SET_TARGET_PROPERTIES(redisai_tensorflow PROPERTIES PREFIX "")
165+
SET_TARGET_PROPERTIES(redisai_tensorflow PROPERTIES SUFFIX ".so")
166+
IF (APPLE)
167+
SET_TARGET_PROPERTIES(redisai_tensorflow PROPERTIES INSTALL_RPATH "@loader_path/lib")
168+
ELSE ()
169+
ADD_LDFLAGS(redisai_tensorflow "-Wl,--enable-new-dtags")
170+
SET_TARGET_PROPERTIES(redisai_tensorflow PROPERTIES INSTALL_RPATH "\$ORIGIN/lib")
171+
ENDIF()
172+
INSTALL(TARGETS redisai_tensorflow LIBRARY DESTINATION backends/redisai_tensorflow)
173+
INSTALL(DIRECTORY ${depsAbs}/libtensorflow/lib DESTINATION ${installAbs}/backends/redisai_tensorflow
174+
FILES_MATCHING PATTERN ${LIB_PATTERN})
175+
ENDIF(BUILD_TF)
141176

142177
#----------------------------------------------------------------------------------------------
143178

144-
ADD_LIBRARY(redisai_torch SHARED $<TARGET_OBJECTS:redisai_torch_obj>)
145-
TARGET_LINK_LIBRARIES(redisai_torch torch_c ${TORCH_LIBRARIES})
146-
SET_TARGET_PROPERTIES(redisai_torch PROPERTIES PREFIX "")
147-
SET_TARGET_PROPERTIES(redisai_torch PROPERTIES SUFFIX ".so")
148-
IF (APPLE)
149-
SET_TARGET_PROPERTIES(redisai_torch PROPERTIES INSTALL_RPATH "@loader_path/lib")
150-
ELSE ()
151-
ADD_LDFLAGS(redisai_torch "-Wl,--enable-new-dtags")
152-
SET_TARGET_PROPERTIES(redisai_torch PROPERTIES INSTALL_RPATH "\$ORIGIN/lib")
153-
ENDIF()
154-
INSTALL(TARGETS redisai_torch LIBRARY DESTINATION backends/redisai_torch)
155-
INSTALL(DIRECTORY ${depsAbs}/libtorch/lib DESTINATION ${installAbs}/backends/redisai_torch
156-
FILES_MATCHING PATTERN ${LIB_PATTERN})
179+
if(BUILD_TORCH)
180+
ADD_LIBRARY(redisai_torch SHARED $<TARGET_OBJECTS:redisai_torch_obj>)
181+
TARGET_LINK_LIBRARIES(redisai_torch torch_c ${TORCH_LIBRARIES})
182+
SET_TARGET_PROPERTIES(redisai_torch PROPERTIES PREFIX "")
183+
SET_TARGET_PROPERTIES(redisai_torch PROPERTIES SUFFIX ".so")
184+
IF (APPLE)
185+
SET_TARGET_PROPERTIES(redisai_torch PROPERTIES INSTALL_RPATH "@loader_path/lib")
186+
ELSE ()
187+
ADD_LDFLAGS(redisai_torch "-Wl,--enable-new-dtags")
188+
SET_TARGET_PROPERTIES(redisai_torch PROPERTIES INSTALL_RPATH "\$ORIGIN/lib")
189+
ENDIF()
190+
INSTALL(TARGETS redisai_torch LIBRARY DESTINATION backends/redisai_torch)
191+
INSTALL(DIRECTORY ${depsAbs}/libtorch/lib DESTINATION ${installAbs}/backends/redisai_torch
192+
FILES_MATCHING PATTERN ${LIB_PATTERN})
193+
ENDIF(BUILD_TORCH)
157194

158195
#----------------------------------------------------------------------------------------------
159196

160-
IF (${DEVICE} STREQUAL "gpu")
161-
ADD_DEFINITIONS(-DRAI_ONNXRUNTIME_USE_CUDA)
162-
ENDIF()
163-
164-
ADD_LIBRARY(redisai_onnxruntime SHARED $<TARGET_OBJECTS:redisai_onnxruntime_obj>)
165-
TARGET_LINK_LIBRARIES(redisai_onnxruntime ${ORT_LIBRARIES})
166-
SET_TARGET_PROPERTIES(redisai_onnxruntime PROPERTIES PREFIX "")
167-
SET_TARGET_PROPERTIES(redisai_onnxruntime PROPERTIES SUFFIX ".so")
168-
IF (APPLE)
169-
SET_TARGET_PROPERTIES(redisai_onnxruntime PROPERTIES INSTALL_RPATH "@loader_path/lib")
170-
ELSE ()
171-
ADD_LDFLAGS(redisai_onnxruntime "-Wl,--enable-new-dtags")
172-
SET_TARGET_PROPERTIES(redisai_onnxruntime PROPERTIES INSTALL_RPATH "\$ORIGIN/lib")
173-
ENDIF()
174-
INSTALL(TARGETS redisai_onnxruntime LIBRARY DESTINATION backends/redisai_onnxruntime)
175-
INSTALL(DIRECTORY ${depsAbs}/onnxruntime/lib DESTINATION ${installAbs}/backends/redisai_onnxruntime
176-
FILES_MATCHING PATTERN ${LIB_PATTERN})
197+
if(BUILD_ORT)
198+
IF (${DEVICE} STREQUAL "gpu")
199+
ADD_DEFINITIONS(-DRAI_ONNXRUNTIME_USE_CUDA)
200+
ENDIF()
201+
202+
ADD_LIBRARY(redisai_onnxruntime SHARED $<TARGET_OBJECTS:redisai_onnxruntime_obj>)
203+
TARGET_LINK_LIBRARIES(redisai_onnxruntime ${ORT_LIBRARIES})
204+
SET_TARGET_PROPERTIES(redisai_onnxruntime PROPERTIES PREFIX "")
205+
SET_TARGET_PROPERTIES(redisai_onnxruntime PROPERTIES SUFFIX ".so")
206+
IF (APPLE)
207+
SET_TARGET_PROPERTIES(redisai_onnxruntime PROPERTIES INSTALL_RPATH "@loader_path/lib")
208+
ELSE ()
209+
ADD_LDFLAGS(redisai_onnxruntime "-Wl,--enable-new-dtags")
210+
SET_TARGET_PROPERTIES(redisai_onnxruntime PROPERTIES INSTALL_RPATH "\$ORIGIN/lib")
211+
ENDIF()
212+
INSTALL(TARGETS redisai_onnxruntime LIBRARY DESTINATION backends/redisai_onnxruntime)
213+
INSTALL(DIRECTORY ${depsAbs}/onnxruntime/lib DESTINATION ${installAbs}/backends/redisai_onnxruntime
214+
FILES_MATCHING PATTERN ${LIB_PATTERN})
215+
ENDIF(BUILD_ORT)
177216

178217
#----------------------------------------------------------------------------------------------
179218

Dockerfile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,13 @@ COPY ./test/test_requirements.txt test/
2222
RUN ./opt/readies/bin/getpy
2323
RUN ./opt/system-setup.py
2424

25+
ARG DEPS_ARGS=""
2526
COPY ./get_deps.sh .
26-
RUN ./get_deps.sh cpu
27+
RUN "$DEPS_ARGS" ./get_deps.sh cpu
2728

29+
ARG BUILD_ARGS=""
2830
ADD ./ /build
29-
RUN make -C opt build SHOW=1
31+
RUN make -C opt all "$BUILD_ARGS" SHOW=1
3032

3133
ARG PACK=0
3234
ARG TEST=0

Dockerfile.arm

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ FROM redisfab/redis-${ARCH}-${OSNICK}-xbuild:5.0.5 AS builder
1414

1515
RUN [ "cross-build-start" ]
1616

17-
ADD ./ /build
1817
WORKDIR /build
1918

2019
COPY ./opt/ opt/
@@ -23,11 +22,13 @@ COPY ./test/test_requirements.txt test/
2322
RUN ./opt/readies/bin/getpy
2423
RUN ./opt/system-setup.py
2524

25+
ARG DEPS_ARGS=""
2626
COPY ./get_deps.sh .
27-
RUN ./get_deps.sh cpu
27+
RUN "$DEPS_ARGS" ./get_deps.sh cpu
2828

29-
ADD ./ /redisai
30-
RUN make -C opt all SHOW=1
29+
ARG BUILD_ARGS=""
30+
ADD ./ /build
31+
RUN make -C opt all "$BUILD_ARGS" SHOW=1
3132

3233
ARG PACK=0
3334
ARG TEST=0

0 commit comments

Comments
 (0)