CMakeLists.txt 15.7 KB
Newer Older
Y
Yan Chunwei 已提交
1 2 3 4 5 6
if(LITE_WITH_LIGHT_WEIGHT_FRAMEWORK)
  lite_cc_library(place SRCS paddle_place.cc DEPS logging)
else()
  lite_cc_library(place SRCS paddle_place.cc DEPS glog)
endif(LITE_WITH_LIGHT_WEIGHT_FRAMEWORK)

7 8 9 10
if (LITE_ON_TINY_PUBLISH)
    set(CMAKE_CXX_FLAGS_RELEASE "-Os -DNDEBUG")
    set(CMAKE_C_FLAGS_RELEASE "-Os -DNDEBUG")
endif()
11
set(light_lib_DEPS light_api paddle_api paddle_api_light optimizer)
12
if ((NOT LITE_ON_TINY_PUBLISH) AND (LITE_WITH_CUDA OR LITE_WITH_X86 OR ARM_TARGET_OS STREQUAL "android" OR ARM_TARGET_OS STREQUAL "armlinux"))
13 14 15 16 17
    #full api dynamic library
    add_library(paddle_full_api_shared SHARED "")
    target_sources(paddle_full_api_shared PUBLIC ${__lite_cc_files} paddle_api.cc light_api.cc cxx_api.cc cxx_api_impl.cc light_api_impl.cc)
    add_dependencies(paddle_full_api_shared op_list_h kernel_list_h framework_proto)
    target_link_libraries(paddle_full_api_shared framework_proto)
H
huzhiqiang 已提交
18
    if(LITE_WITH_X86)
19 20 21 22 23
        add_dependencies(paddle_full_api_shared xxhash)
        target_link_libraries(paddle_full_api_shared xxhash)
        if (NOT LITE_ON_MODEL_OPTIMIZE_TOOL) 
            add_dependencies(paddle_full_api_shared dynload_mklml)
        endif()
H
huzhiqiang 已提交
24
    endif()
25 26
    if(LITE_WITH_CUDA)
        target_link_libraries(paddle_full_api_shared ${math_cuda} "-Wl,--whole-archive" ${cuda_kernels} "-Wl,--no-whole-archive")
27 28
    endif(LITE_WITH_CUDA)

29 30
    #light api dynamic library
    lite_cc_library(paddle_light_api_shared MODULE
31 32 33 34 35 36
        SRCS light_api_shared.cc
        DEPS ${light_lib_DEPS}
        ARM_DEPS ${arm_kernels}
        CV_DEPS paddle_cv_arm
        NPU_DEPS ${npu_kernels})

37
    target_link_libraries(paddle_light_api_shared ${light_lib_DEPS} ${arm_kernels} ${npu_kernels})
H
HappyAngel 已提交
38

39 40 41 42 43 44
    if (LITE_WITH_NPU)
        # Strips the symbols of our protobuf functions to fix the conflicts during
        # loading HIAI builder libs (libhiai_ir.so and libhiai_ir_build.so)
        set(LINK_FLAGS "-Wl,--version-script ${PADDLE_SOURCE_DIR}/lite/core/lite.map")
        set_target_properties(paddle_light_api_shared PROPERTIES LINK_FLAGS "${LINK_FLAGS}")
    endif()
45
else()
46
    if ((ARM_TARGET_OS STREQUAL "android") OR (ARM_TARGET_OS STREQUAL "armlinux"))
47 48
        add_library(paddle_light_api_shared SHARED "")
        target_sources(paddle_light_api_shared PUBLIC ${__lite_cc_files} paddle_api.cc light_api.cc light_api_impl.cc)
H
HappyAngel 已提交
49 50
        set_target_properties(paddle_light_api_shared PROPERTIES COMPILE_FLAGS "-flto -fdata-sections")
        add_dependencies(paddle_light_api_shared op_list_h kernel_list_h)
51 52
        if (LITE_WITH_NPU)
            # Need to add HIAI runtime libs (libhiai.so) dependency
53
            target_link_libraries(paddle_light_api_shared ${npu_builder_libs} ${npu_runtime_libs})
54
        endif()
55 56 57
    endif()
endif()

Y
Yan Chunwei 已提交
58 59 60 61
if (WITH_TESTING)
    lite_cc_library(lite_api_test_helper SRCS lite_api_test_helper.cc
      DEPS scope optimizer target_wrapper_host model_parser program
           ${ops} ${host_kernels}
62
      CUDA_DEPS ${cuda_kernels}
63
      X86_DEPS ${x86_kernels}
64 65
      XPU_DEPS ${xpu_kernels}
      BM_DEPS ${bm_kernels})
Y
Yan Chunwei 已提交
66 67 68 69 70 71
endif()
if(LITE_WITH_FPGA)
    set(light_api_deps ${light_api_deps} ${fpga_deps})
    set(cxx_api_deps ${cxx_api_deps} ${fpga_deps})
endif()

72 73 74 75 76
if(LITE_WITH_BM)
    set(light_api_deps ${light_api_deps} ${bm_deps})
    set(cxx_api_deps ${cxx_api_deps} ${bm_deps})
endif()

Y
Yan Chunwei 已提交
77
message(STATUS "get ops ${ops}")
78
message(STATUS "get X86 kernels ${x86_kernels}")
79
message(STATUS "get CUDA kernels ${cuda_kernels}")
Y
Yan Chunwei 已提交
80 81 82
message(STATUS "get Host kernels ${host_kernels}")
message(STATUS "get ARM kernels ${arm_kernels}")
message(STATUS "get NPU kernels ${npu_kernels}")
83
message(STATUS "get XPU kernels ${xpu_kernels}")
Y
Yan Chunwei 已提交
84
message(STATUS "get FPGA kernels ${fpga_kernels}")
85
message(STATUS "get BM kernels ${bm_kernels}")
Y
Yan Chunwei 已提交
86 87 88 89

# for full api
if (NOT LITE_ON_TINY_PUBLISH)
    set(cxx_api_deps
90
    scope optimizer target_wrapper_host model_parser program)
Y
Yan Chunwei 已提交
91
    lite_cc_library(cxx_api
92 93 94
                        SRCS cxx_api.cc
                        DEPS ${cxx_api_deps} ${ops} ${host_kernels} program
                        X86_DEPS ${x86_kernels}
95
                        CUDA_DEPS ${cuda_kernels}
96 97
                        ARM_DEPS ${arm_kernels}
                        CV_DEPS paddle_cv_arm
Z
zhupengyang 已提交
98 99
                        NPU_DEPS ${npu_kernels}
                        XPU_DEPS ${xpu_kernels}
100
                        BM_DEPS ${bm_kernels}
101 102
                        CL_DEPS ${opencl_kernels}
                        FPGA_DEPS ${fpga_kernels})
Y
Yan Chunwei 已提交
103 104 105 106 107 108
endif()

# for light api
set(light_api_deps
    scope target_wrapper_host model_parser program)
if(LITE_WITH_CUDA)
109
    get_property(cuda_static_deps GLOBAL PROPERTY CUDA_STATIC_MODULES)
Y
Yan Chunwei 已提交
110 111 112 113 114
    set(light_api_deps ${light_api_deps} target_wrapper_cuda)
endif()
lite_cc_library(light_api SRCS light_api.cc
        DEPS scope target_wrapper_host model_parser
            ${light_api_deps} ${ops} ${host_kernels} program
115
        CUDA_DEPS ${cuda_kernels}
Y
Yan Chunwei 已提交
116 117
        X86_DEPS ${x86_kernels}
        ARM_DEPS ${arm_kernels}
118
        CV_DEPS paddle_cv_arm
119
        NPU_DEPS ${npu_kernels}
120
        XPU_DEPS ${xpu_kernels}
121
        CL_DEPS ${opencl_kernels}
122 123
        FPGA_DEPS ${fpga_kernels}
        BM_DEPS ${bm_kernels})
Y
Yan Chunwei 已提交
124 125 126 127 128 129 130 131 132 133

include(ExternalProject)
set(LITE_DEMO_INSTALL_DIR "${THIRD_PARTY_PATH}/inference_demo" CACHE STRING
        "A path setting inference demo download directories.")

if(WITH_TESTING)
    lite_cc_test(test_cxx_api SRCS cxx_api_test.cc
       DEPS cxx_api mir_passes lite_api_test_helper
       ${ops} ${host_kernels}
       X86_DEPS ${x86_kernels}
134
       CUDA_DEPS ${cuda_kernels}
Y
Yan Chunwei 已提交
135
       ARM_DEPS ${arm_kernels}
H
HappyAngel 已提交
136
       CV_DEPS paddle_cv_arm
Y
Yan Chunwei 已提交
137
       NPU_DEPS ${npu_kernels}
138
       XPU_DEPS ${xpu_kernels}
Y
Yan Chunwei 已提交
139 140
       CL_DEPS ${opencl_kernels}
       FPGA_DEPS ${fpga_kernels}
141
       BM_DEPS ${bm_kernels}
Y
Yan Chunwei 已提交
142 143 144 145 146 147
       EXCLUDE_COMPILE_DEPS "ON"
       ARGS --model_dir=${LITE_MODEL_DIR}/lite_naive_model
            --optimized_model=${LITE_MODEL_DIR}/lite_naive_model_opt SERIAL)
    add_dependencies(test_cxx_api extern_lite_download_lite_naive_model_tar_gz)
    if(NOT LITE_WITH_LIGHT_WEIGHT_FRAMEWORK)
        lite_cc_test(test_googlenet SRCS test_googlenet_lite.cc
148
           DEPS mir_passes lite_api_test_helper paddle_api_full paddle_api_light gflags utils
Y
Yan Chunwei 已提交
149 150 151 152
           ${ops} ${host_kernels} ${x86_kernels}
           ARGS --model_dir=${LITE_MODEL_DIR}/googlenet)
        add_dependencies(test_googlenet extern_lite_download_GoogleNet_inference_tar_gz)
        lite_cc_test(test_mobilenetv1_lite_x86 SRCS test_mobilenetv1_lite_x86.cc
153
           DEPS mir_passes lite_api_test_helper paddle_api_full paddle_api_light gflags utils
Y
Yan Chunwei 已提交
154 155 156 157
           ${ops} ${host_kernels} ${x86_kernels}
           ARGS --model_dir=${LITE_MODEL_DIR}/mobilenet_v1)
        add_dependencies(test_mobilenetv1_lite_x86 extern_lite_download_mobilenet_v1_tar_gz)
        lite_cc_test(test_mobilenetv2_lite_x86 SRCS test_mobilenetv2_lite_x86.cc
158
           DEPS mir_passes lite_api_test_helper paddle_api_full paddle_api_light gflags utils
Y
Yan Chunwei 已提交
159 160 161 162
           ${ops} ${host_kernels} ${x86_kernels}
           ARGS --model_dir=${LITE_MODEL_DIR}/mobilenet_v2_relu)
        add_dependencies(test_mobilenetv2_lite_x86 extern_lite_download_mobilenet_v2_relu_tar_gz)
        lite_cc_test(test_inceptionv4_lite_x86 SRCS test_inceptionv4_lite_x86.cc
163
           DEPS mir_passes lite_api_test_helper paddle_api_full paddle_api_light gflags utils
Y
Yan Chunwei 已提交
164 165 166
           ${ops} ${host_kernels} ${x86_kernels}
           ARGS --model_dir=${LITE_MODEL_DIR}/inception_v4_simple)
        add_dependencies(test_inceptionv4_lite_x86 extern_lite_download_inception_v4_simple_tar_gz)
167
        lite_cc_test(test_resnet50_lite_x86 SRCS test_resnet50_lite_x86.cc
168
           DEPS mir_passes lite_api_test_helper paddle_api_full paddle_api_light gflags utils
169 170 171
           ${ops} ${host_kernels} ${x86_kernels}
           ARGS --model_dir=${LITE_MODEL_DIR}/resnet50)
        add_dependencies(test_resnet50_lite_x86 extern_lite_download_resnet50_tar_gz)
172 173 174 175 176
        lite_cc_test(test_step_rnn_lite_x86 SRCS test_step_rnn_lite_x86.cc
           DEPS mir_passes lite_api_test_helper paddle_api_full paddle_api_light gflags utils
           ${ops} ${host_kernels} ${x86_kernels}
           ARGS --model_dir=${LITE_MODEL_DIR}/step_rnn)
        add_dependencies(test_step_rnn_lite_x86 extern_lite_download_step_rnn_tar_gz)
177 178 179 180 181 182
        if(LITE_WITH_BM)
           lite_cc_test(test_resnet50_lite_bm SRCS test_resnet50_lite_bm.cc
              DEPS mir_passes lite_api_test_helper paddle_api_full paddle_api_light gflags utils
              ${ops} ${host_kernels} ${bm_kernels} ${bm_bridges}
              ARGS --model_dir=${LITE_MODEL_DIR}/resnet50)
        endif()
Y
Yan Chunwei 已提交
183 184 185 186 187 188 189 190 191
    endif()
endif()

if(LITE_WITH_LIGHT_WEIGHT_FRAMEWORK AND WITH_TESTING)
    set(lite_model_test_DEPS cxx_api mir_passes ${ops} ${host_kernels} ${arm_kernels} ${npu_kernels} ${fpga_kernels})

    lite_cc_test(test_mobilenetv1_int8 SRCS mobilenetv1_int8_test.cc
       DEPS ${lite_model_test_DEPS}
       CL_DEPS ${opencl_kernels}
192
       ARGS --cl_path=${CMAKE_SOURCE_DIR}/lite/backends/opencl
Y
Yan Chunwei 已提交
193 194 195 196 197 198 199
        --model_dir=${LITE_MODEL_DIR}/MobilenetV1_quant SERIAL)
    add_dependencies(test_mobilenetv1_int8 extern_lite_download_MobileNetV1_quant_tar_gz)

    lite_cc_test(test_mobilenetv1 SRCS mobilenetv1_test.cc
       DEPS ${lite_model_test_DEPS}
       CL_DEPS ${opencl_kernels}
       NPU_DEPS ${npu_kernels} ${npu_bridges}
200
       ARGS --cl_path=${CMAKE_SOURCE_DIR}/lite/backends/opencl
Y
Yan Chunwei 已提交
201 202 203 204
            --model_dir=${LITE_MODEL_DIR}/mobilenet_v1 SERIAL)
    add_dependencies(test_mobilenetv1 extern_lite_download_mobilenet_v1_tar_gz)
    set(LINK_FLAGS "-Wl,--version-script ${PADDLE_SOURCE_DIR}/lite/core/lite.map")
    set_target_properties(test_mobilenetv1 PROPERTIES LINK_FLAGS "${LINK_FLAGS}")
205

Y
Yan Chunwei 已提交
206 207 208
    lite_cc_test(test_mobilenetv2 SRCS mobilenetv2_test.cc
       DEPS ${lite_model_test_DEPS}
       CL_DEPS ${opencl_kernels}
209
       ARGS --cl_path=${CMAKE_SOURCE_DIR}/lite/backends/opencl
Y
Yan Chunwei 已提交
210 211 212
            --model_dir=${LITE_MODEL_DIR}/mobilenet_v2_relu SERIAL)
    add_dependencies(test_mobilenetv2 extern_lite_download_mobilenet_v2_relu_tar_gz)
    set_target_properties(test_mobilenetv2 PROPERTIES LINK_FLAGS "${LINK_FLAGS}")
213

Y
Yan Chunwei 已提交
214
    lite_cc_test(test_resnet50 SRCS resnet50_test.cc
215
       DEPS ${lite_model_test_DEPS} paddle_api_light
Y
Yan Chunwei 已提交
216 217
       CL_DEPS ${opencl_kernels}
       FPGA_DEPS ${fpga_kernels}
218
       ARGS --cl_path=${CMAKE_SOURCE_DIR}/lite/backends/opencl
Y
Yan Chunwei 已提交
219 220 221 222 223 224 225 226 227 228 229
            --model_dir=${LITE_MODEL_DIR}/resnet50 SERIAL)
    add_dependencies(test_resnet50 extern_lite_download_resnet50_tar_gz)

    lite_cc_test(test_resnet50_fpga SRCS resnet50_test_fpga.cc
       DEPS ${lite_model_test_DEPS}
       CL_DEPS ${opencl_kernels}
       FPGA_DEPS ${fpga_kernels})

    lite_cc_test(test_inceptionv4 SRCS inceptionv4_test.cc
       DEPS ${lite_model_test_DEPS}
       CL_DEPS ${opencl_kernels}
230
       ARGS --cl_path=${CMAKE_SOURCE_DIR}/lite/backends/opencl
Y
Yan Chunwei 已提交
231
            --model_dir=${LITE_MODEL_DIR}/inception_v4 SERIAL)
232
    add_dependencies(test_inceptionv4 extern_lite_download_inception_v4_simple_tar_gz)
T
TianXiaogang 已提交
233 234 235 236 237 238 239
   # lite_cc_test(test_ocr_attention SRCS ocr_attention_test.cc
   #    DEPS ${lite_model_test_DEPS})

   # lite_cc_test(model_run_test_image SRCS model_run_test_image.cc
   #    DEPS ${lite_model_test_DEPS}
   #    CL_DEPS ${opencl_kernels}
   #    FPGA_DEPS ${fpga_kernels})
Y
Yan Chunwei 已提交
240 241
endif()

242
lite_cc_library(paddle_api SRCS paddle_api.cc DEPS op_params tensor device_info)
Y
Yan Chunwei 已提交
243 244 245

#-----------------------------------------------------------------------------------------------------
# The final inference library for both CxxConfig and MobileConfig.
246 247 248 249 250
if (LITE_ON_TINY_PUBLISH)
    lite_cc_library(paddle_api_light SRCS light_api_impl.cc DEPS light_api paddle_api stream)
else()
    lite_cc_library(paddle_api_light SRCS light_api_impl.cc DEPS light_api paddle_api)
endif()
Y
Yan Chunwei 已提交
251
if (NOT LITE_ON_TINY_PUBLISH)
252
    lite_cc_library(paddle_api_full SRCS cxx_api_impl.cc DEPS cxx_api paddle_api_light
253 254 255 256 257 258
        ${ops}
        ARM_DEPS ${arm_kernels}
        CV_DEPS paddle_cv_arm
        NPU_DEPS ${npu_kernels}
        CL_DEPS ${opencl_kernels}
        FPGA_DEPS ${fpga_kernels})
Y
Yan Chunwei 已提交
259 260
    # The final inference library for just MobileConfig.
    bundle_static_library(paddle_api_full paddle_api_full_bundled bundle_full_api)
261
    get_property(fluid_modules GLOBAL PROPERTY FLUID_MODULES)
262
    cc_library(api_full_static SRCS DEPS paddle_api_full cxx_api paddle_api light_api  ${cxx_api_deps} ${ops} ${host_kernels} ${cuda_kernels} program tensor memory naive_buffer types ${fluid_modules} protobuf ${cuda_static_deps})
Y
Yan Chunwei 已提交
263 264 265 266
endif()
bundle_static_library(paddle_api_light paddle_api_light_bundled bundle_light_api)
#-----------------------------------------------------------------------------------------------------

267 268 269 270 271 272
# These tests needs CLI arguments, and is not supported in ARM CI.
# TODO(Superjomn) support latter.
lite_cc_test(test_light_api SRCS light_api_test.cc
        DEPS light_api program mir_passes paddle_api_light
        CL_DEPS ${opencl_kernels}
        FPGA_DEPS ${fpga_kernels}
273
        BM_DEPS ${bm_kernels}
274 275 276 277 278 279
        ARGS --optimized_model=${LITE_MODEL_DIR}/lite_naive_model_opt SERIAL)

lite_cc_test(test_apis SRCS apis_test.cc
        DEPS cxx_api light_api ${ops} paddle_api_light
        CL_DEPS ${opencl_kernels}
        X86_DEPS ${x86_kernels}
280
        XPU_DEPS ${xpu_kernels}
281
        FPGA_DEPS ${fpga_kernels}
282
        BM_DEPS ${bm_kernels}
283 284 285
        ARGS --model_dir=${LITE_MODEL_DIR}/lite_naive_model
        --optimized_model=${LITE_MODEL_DIR}/lite_naive_model_opt SERIAL)

Y
Yan Chunwei 已提交
286 287 288 289
if (LITE_WITH_JAVA AND LITE_WITH_ARM)
    add_subdirectory(android)
endif()

290
if (LITE_WITH_PYTHON)
S
sangoly 已提交
291 292 293
    add_subdirectory(python)
endif()

Y
Yan Chunwei 已提交
294 295 296
if (LITE_ON_TINY_PUBLISH)
    return()
endif()
297 298 299 300 301

if (LITE_ON_MODEL_OPTIMIZE_TOOL)
    message(STATUS "Compiling model_optimize_tool")
    lite_cc_binary(model_optimize_tool SRCS model_optimize_tool.cc cxx_api_impl.cc paddle_api.cc cxx_api.cc
        DEPS gflags kernel op optimizer mir_passes utils)
302
    add_dependencies(model_optimize_tool op_list_h kernel_list_h all_kernel_faked_cc supported_kernel_op_info_h)
303 304
endif(LITE_ON_MODEL_OPTIMIZE_TOOL)

Y
Yan Chunwei 已提交
305 306 307
lite_cc_test(test_paddle_api SRCS paddle_api_test.cc DEPS paddle_api_full paddle_api_light
  ${ops}
  ARM_DEPS ${arm_kernels}
H
HappyAngel 已提交
308
  CV_DEPS paddle_cv_arm
Y
Yan Chunwei 已提交
309
  NPU_DEPS ${npu_kernels}
310
  XPU_DEPS ${xpu_kernels}
Y
Yan Chunwei 已提交
311 312 313
  CL_DEPS ${opencl_kernels}
  X86_DEPS ${x86_kernels}
  FPGA_DEPS ${fpga_kernels}
314
  BM_DEPS ${bm_kernels}
Y
Yan Chunwei 已提交
315 316 317 318 319 320 321
  ARGS --model_dir=${LITE_MODEL_DIR}/lite_naive_model SERIAL)
if (WITH_TESTING)
    add_dependencies(test_paddle_api extern_lite_download_lite_naive_model_tar_gz)
endif()

# Some bins
if(NOT IOS)
322 323 324 325 326 327 328
    lite_cc_binary(test_model_bin SRCS model_test.cc DEPS paddle_api_full paddle_api_light gflags utils
        ${ops} ${host_kernels}
        ARM_DEPS ${arm_kernels}
        CV_DEPS paddle_cv_arm
        NPU_DEPS ${npu_kernels}
        XPU_DEPS ${xpu_kernels}
        CL_DEPS ${opencl_kernels}
329
        BM_DEPS ${bm_kernels}
330 331 332
        FPGA_DEPS ${fpga_kernels}
        X86_DEPS ${x86_kernels}
        CUDA_DEPS ${cuda_kernels})
H
HappyAngel 已提交
333

334 335 336
    lite_cc_binary(benchmark_bin SRCS benchmark.cc DEPS paddle_api_full paddle_api_light gflags utils
        ${ops} ${host_kernels}
        ARM_DEPS ${arm_kernels}
H
HappyAngel 已提交
337
        CV_DEPS paddle_cv_arm
338 339 340 341 342 343
        NPU_DEPS ${npu_kernels}
        XPU_DEPS ${xpu_kernels}
        CL_DEPS ${opencl_kernels}
        FPGA_DEPS ${fpga_kernels}
        X86_DEPS ${x86_kernels}
        CUDA_DEPS ${cuda_kernels})
X
xiaogang 已提交
344 345 346 347 348 349 350
    lite_cc_binary(multithread_test SRCS lite_multithread_test.cc DEPS paddle_api_full paddle_api_light gflags utils
        ${ops} ${host_kernels}
        ARM_DEPS ${arm_kernels}
        CV_DEPS paddle_cv_arm
        NPU_DEPS ${npu_kernels}
        XPU_DEPS ${xpu_kernels}
        CL_DEPS ${opencl_kernels}
351
	BM_DEPS ${bm_kernels}
X
xiaogang 已提交
352 353 354
        FPGA_DEPS ${fpga_kernels}
        X86_DEPS ${x86_kernels}
        CUDA_DEPS ${cuda_kernels})
Y
Yan Chunwei 已提交
355 356 357 358 359 360
endif()

#lite_cc_binary(cxx_api_bin SRCS cxx_api_bin.cc
    #X86_DEPS operator
    #DEPS light_api model_parser target_wrapper_host mir_passes
    #ARM_DEPS ${arm_kernels}) NPU_DEPS ${npu_kernels})