@@ -2,10 +2,22 @@ if (NOT WITH_ANAKIN)
2
2
return ()
3
3
endif ()
4
4
5
- set (ANAKIN_INSTALL_DIR "${THIRD_PARTY_PATH} /install/anakin" CACHE PATH
6
- "Anakin install path." FORCE )
7
- set (ANAKIN_INCLUDE "${ANAKIN_INSTALL_DIR} " CACHE STRING "root of Anakin header files" )
8
- set (ANAKIN_LIBRARY "${ANAKIN_INSTALL_DIR} " CACHE STRING "path of Anakin library" )
5
+ INCLUDE (ExternalProject )
6
+ set (ANAKIN_SOURCE_DIR ${THIRD_PARTY_PATH} /anakin )
7
+ # the anakin install dir is only default one now
8
+ set (ANAKIN_INSTALL_DIR ${THIRD_PARTY_PATH} /anakin/src/extern_anakin/output )
9
+ set (ANAKIN_INCLUDE ${ANAKIN_INSTALL_DIR} )
10
+ set (ANAKIN_LIBRARY ${ANAKIN_INSTALL_DIR} )
11
+ set (ANAKIN_SHARED_LIB ${ANAKIN_LIBRARY} /libanakin.so )
12
+ set (ANAKIN_SABER_LIB ${ANAKIN_LIBRARY} /libanakin_saber_common.so )
13
+
14
+ # TODO(luotao): ANAKIN_MODLE_URL will move to demo ci later.
15
+ set (ANAKIN_MODLE_URL "http://paddle-inference-dist.bj.bcebos.com/mobilenet_v2.anakin.bin" )
16
+ execute_process (COMMAND bash -c "mkdir -p ${ANAKIN_SOURCE_DIR} " )
17
+ execute_process (COMMAND bash -c "cd ${ANAKIN_SOURCE_DIR} ; wget -q --no-check-certificate ${ANAKIN_MODLE_URL} " )
18
+
19
+ include_directories (${ANAKIN_INCLUDE} )
20
+ include_directories (${ANAKIN_INCLUDE} /saber/ )
9
21
10
22
set (ANAKIN_COMPILE_EXTRA_FLAGS
11
23
-Wno-error=unused-but-set-variable -Wno-unused-but-set-variable
@@ -20,36 +32,33 @@ set(ANAKIN_COMPILE_EXTRA_FLAGS
20
32
-Wno-reorder
21
33
-Wno-error=cpp )
22
34
23
- set (ANAKIN_LIBRARY_URL "https://github.com/pangge/Anakin/releases/download/Version0.1.0/anakin.tar.gz" )
24
-
25
- # A helper function used in Anakin, currently, to use it, one need to recursively include
26
- # nearly all the header files.
27
- function (fetch_include_recursively root_dir )
28
- if (IS_DIRECTORY ${root_dir} )
29
- include_directories (${root_dir} )
30
- endif ()
31
-
32
- file (GLOB ALL_SUB RELATIVE ${root_dir} ${root_dir} /* )
33
- foreach (sub ${ALL_SUB} )
34
- if (IS_DIRECTORY ${root_dir} /${sub} )
35
- fetch_include_recursively (${root_dir} /${sub} )
36
- endif ()
37
- endforeach ()
38
- endfunction ()
39
-
40
- if (NOT EXISTS "${ANAKIN_INSTALL_DIR} " )
41
- # download library
42
- message (STATUS "Download Anakin library from ${ANAKIN_LIBRARY_URL} " )
43
- execute_process (COMMAND bash -c "mkdir -p ${ANAKIN_INSTALL_DIR} " )
44
- execute_process (COMMAND bash -c "rm -rf ${ANAKIN_INSTALL_DIR} /*" )
45
- execute_process (COMMAND bash -c "cd ${ANAKIN_INSTALL_DIR} ; wget --no-check-certificate -q ${ANAKIN_LIBRARY_URL} " )
46
- execute_process (COMMAND bash -c "mkdir -p ${ANAKIN_INSTALL_DIR} " )
47
- execute_process (COMMAND bash -c "cd ${ANAKIN_INSTALL_DIR} ; tar xzf anakin.tar.gz" )
48
- endif ()
35
+ ExternalProject_Add (
36
+ extern_anakin
37
+ ${EXTERNAL_PROJECT_LOG_ARGS}
38
+ # TODO(luotao): use PaddlePaddle/Anakin later
39
+ GIT_REPOSITORY "https://github.com/luotao1/Anakin"
40
+ GIT_TAG "3957ae9263eaa0b1986758dac60a88852afb09be"
41
+ PREFIX ${ANAKIN_SOURCE_DIR}
42
+ UPDATE_COMMAND ""
43
+ CMAKE_ARGS -DUSE_GPU_PLACE=YES
44
+ -DUSE_X86_PLACE=YES
45
+ -DBUILD_WITH_UNIT_TEST=NO
46
+ -DPROTOBUF_ROOT=${THIRD_PARTY_PATH}/install/protobuf
47
+ -DMKLML_ROOT=${THIRD_PARTY_PATH}/install/mklml
48
+ -DCUDNN_ROOT=${CUDNN_ROOT}
49
+ ${EXTERNAL_OPTIONAL_ARGS}
50
+ CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${ANAKIN_INSTALL_DIR}
51
+ )
49
52
50
- if (WITH_ANAKIN )
51
- message (STATUS "Anakin for inference is enabled" )
52
- message (STATUS "Anakin is set INCLUDE:${ANAKIN_INCLUDE} LIBRARY:${ANAKIN_LIBRARY} " )
53
- fetch_include_recursively (${ANAKIN_INCLUDE} )
54
- link_directories (${ANAKIN_LIBRARY} )
55
- endif ()
53
+ message (STATUS "Anakin for inference is enabled" )
54
+ message (STATUS "Anakin is set INCLUDE:${ANAKIN_INCLUDE} LIBRARY:${ANAKIN_LIBRARY} " )
55
+
56
+ add_library (anakin_shared SHARED IMPORTED GLOBAL )
57
+ set_property (TARGET anakin_shared PROPERTY IMPORTED_LOCATION ${ANAKIN_SHARED_LIB} )
58
+ add_dependencies (anakin_shared extern_anakin protobuf mklml )
59
+
60
+ add_library (anakin_saber SHARED IMPORTED GLOBAL )
61
+ set_property (TARGET anakin_saber PROPERTY IMPORTED_LOCATION ${ANAKIN_SABER_LIB} )
62
+ add_dependencies (anakin_saber extern_anakin protobuf mklml )
63
+
64
+ list (APPEND external_project_dependencies anakin_shared anakin_saber )
0 commit comments