CMakeLists.txt 17.0 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
set(PYBIND_DEPS
    init
    pybind
    python
    proto_desc
    memory
    executor
    fleet_wrapper
    box_wrapper
    metrics
    prune
    feed_fetch_method
    pass
    generate_pass
    pass_builder
    parallel_executor
    profiler
    layer
    tracer
    engine
    scope_pool
    analysis_predictor
    imperative_profiler
    imperative_flag
    save_load_util
    dlpack_tensor
    device_context
    gloo_wrapper
    infer_io_utils
    heter_wrapper
    generator
    op_version_registry
    ps_gpu_wrapper
    custom_operator
    cost_model
    cuda_graph_with_memory_pool
    fleet_executor
    global_utils
    phi_utils
    tcp_store
41 42
    new_profiler
    jit_layer)
43 44

if(WITH_PSCORE)
S
seemingwang 已提交
45 46
  set(PYBIND_DEPS ${PYBIND_DEPS} ps_service)
  set(PYBIND_DEPS ${PYBIND_DEPS} graph_py_service)
47
  if(WITH_HETERPS)
48 49
    set(PYBIND_DEPS ${PYBIND_DEPS} graph_gpu_wrapper)
  endif()
S
seemingwang 已提交
50
endif()
51
if(WITH_GPU OR WITH_ROCM)
52
  set(PYBIND_DEPS ${PYBIND_DEPS} dynload_cuda)
53
  set(PYBIND_DEPS ${PYBIND_DEPS} cuda_device_guard)
54 55
endif()

56
if(WITH_GPU)
57 58
  set(PYBIND_DEPS ${PYBIND_DEPS} cuda_profiler)
endif()
59
if(WITH_IPU)
J
jianghaicheng 已提交
60 61
  set(PYBIND_DEPS ${PYBIND_DEPS} ipu_info)
endif()
62

63
if(WITH_NCCL OR WITH_RCCL)
64
  set(PYBIND_DEPS ${PYBIND_DEPS} nccl_wrapper)
65
  set(PYBIND_DEPS ${PYBIND_DEPS} reducer)
66 67
endif()

68
if(WITH_XPU_BKCL)
69 70
  set(PYBIND_DEPS ${PYBIND_DEPS} reducer)
  set(PYBIND_DEPS ${PYBIND_DEPS} bkcl_context)
K
kuizhiqing 已提交
71 72 73
  set(PYBIND_DEPS ${PYBIND_DEPS} heter_ccl_context)
endif()

74
if(WITH_ASCEND_CL)
K
kuizhiqing 已提交
75 76 77
  set(PYBIND_DEPS ${PYBIND_DEPS} reducer)
  set(PYBIND_DEPS ${PYBIND_DEPS} hccl_context)
  set(PYBIND_DEPS ${PYBIND_DEPS} heter_ccl_context)
78 79
endif()

80
if(WITH_CNCL)
81
  set(PYBIND_DEPS ${PYBIND_DEPS} reducer)
82 83 84
  set(PYBIND_DEPS ${PYBIND_DEPS} cncl_context)
endif()

85
if(NOT WIN32)
86
  set(PYBIND_DEPS ${PYBIND_DEPS} data_loader)
87
  set(PYBIND_DEPS ${PYBIND_DEPS} mmap_allocator)
88
  if(WITH_GPU)
89 90
    set(PYBIND_DEPS ${PYBIND_DEPS} cuda_ipc_allocator)
  endif()
91
  if(WITH_NCCL OR WITH_RCCL)
92
    set(PYBIND_DEPS ${PYBIND_DEPS} nccl_context)
K
kuizhiqing 已提交
93
    set(PYBIND_DEPS ${PYBIND_DEPS} heter_ccl_context)
94
  endif()
95
endif()
F
flame 已提交
96

S
sneaxiy 已提交
97 98
if(WITH_PYTHON)
  list(APPEND PYBIND_DEPS py_func_op)
99
  list(APPEND PYBIND_DEPS py_layer_op)
S
sneaxiy 已提交
100
endif()
101 102

set(PYBIND_SRCS
103
    pybind.cc
104 105 106 107 108 109
    imperative.cc
    op_function.cc
    inference_api.cc
    ir.cc
    bind_fleet_executor.cc
    reader_py.cc
110
    protobuf.cc
111
    exception.cc
112 113 114 115 116 117 118 119 120 121 122 123 124 125
    const_value.cc
    global_value_getter_setter.cc
    fleet_wrapper_py.cc
    heter_wrapper_py.cc
    ps_gpu_wrapper_py.cc
    gloo_wrapper_py.cc
    box_helper_py.cc
    metrics_py.cc
    data_set_py.cc
    bind_cost_model.cc
    compatible.cc
    io.cc
    generator_py.cc
    communication.cc
126 127
    cuda_streams_py.cc
    jit.cc)
128

129 130 131 132 133 134
execute_process(
  COMMAND
    "${PYTHON_EXECUTABLE}"
    "${PADDLE_SOURCE_DIR}/paddle/fluid/pybind/generate_file_structures.py"
    "${PADDLE_SOURCE_DIR}/paddle/fluid/pybind/")

135 136 137 138
if(WITH_CUSTOM_DEVICE)
  set(PYBIND_DEPS ${PYBIND_DEPS} phi_capi)
endif()

139
if(NOT ON_INFER)
140
  set(PYBIND_DEPS ${PYBIND_DEPS} processgroup eager_reducer)
141
  if(WITH_NCCL OR WITH_RCCL)
142 143 144
    set(PYBIND_DEPS ${PYBIND_DEPS} processgroup_nccl)
    if(WITH_PSCORE)
      set(PYBIND_DEPS ${PYBIND_DEPS} processgroup_heter)
145
    endif()
146
  endif()
147 148
  if(WITH_GLOO)
    set(PYBIND_DEPS ${PYBIND_DEPS} processgroup_gloo)
149
  endif()
150
  if(WITH_ASCEND_CL)
151 152 153
    set(PYBIND_DEPS ${PYBIND_DEPS} processgroup_hccl)
    if(WITH_PSCORE)
      set(PYBIND_DEPS ${PYBIND_DEPS} processgroup_heter)
154
    endif()
155
  endif()
156 157 158
  set(PYBIND_SRCS ${PYBIND_SRCS} distributed_py.cc)
endif()

159
if(WITH_ASCEND)
160 161
  set(PYBIND_DEPS ${PYBIND_DEPS} ascend_wrapper)
  set(PYBIND_SRCS ${PYBIND_SRCS} ascend_wrapper_py.cc)
162
endif()
163

164 165 166
if(WITH_GLOO)
  set(PYBIND_DEPS ${PYBIND_DEPS} gloo_context)
  set(PYBIND_SRCS ${PYBIND_SRCS} gloo_context_py.cc)
167 168
  set(PYBIND_DEPS ${PYBIND_DEPS} imperative_gloo_context)
  set(PYBIND_DEPS ${PYBIND_DEPS} reducer)
169
endif()
170

171
if(WITH_CRYPTO)
Y
Yanghello 已提交
172 173
  set(PYBIND_DEPS ${PYBIND_DEPS} paddle_crypto)
  set(PYBIND_SRCS ${PYBIND_SRCS} crypto.cc)
174
endif()
175 176 177 178 179 180 181

if(WITH_PSLIB)
  set(DISTRIBUTE_COMPILE_FLAGS
      "-Wno-non-virtual-dtor -Wno-error=non-virtual-dtor -Wno-error=delete-non-virtual-dtor -Wno-error=sign-compare -Wno-error=unused-variable -Wno-error=return-type -Wno-error=unused-but-set-variable -Wno-error=type-limits -Wno-error=unknown-pragmas -Wno-error=parentheses -Wno-error=unused-result"
  )
  if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
    set(DISTRIBUTE_COMPILE_FLAGS "${DISTRIBUTE_COMPILE_FLAGS} -faligned-new")
T
Thunderbrook 已提交
182
  endif()
183 184
  set_source_files_properties(
    heter_wrapper_py.cc PROPERTIES COMPILE_FLAGS ${DISTRIBUTE_COMPILE_FLAGS})
185
endif()
186 187 188 189 190
if(WITH_PSCORE)
  if(WITH_ARM_BRPC)
    set(DISTRIBUTE_COMPILE_FLAGS
        "-faligned-new -Wno-non-virtual-dtor -Wno-error=non-virtual-dtor -Wno-error=delete-non-virtual-dtor -Wno-error=sign-compare -Wno-error=unused-variable -Wno-error=return-type -Wno-error=unused-but-set-variable -Wno-error=unknown-pragmas -Wno-error=parentheses -Wno-error=unused-result"
    )
191
  else()
192 193 194
    set(DISTRIBUTE_COMPILE_FLAGS
        "-Wno-non-virtual-dtor -Wno-error=non-virtual-dtor -Wno-error=delete-non-virtual-dtor -Wno-error=sign-compare -Wno-error=unused-variable -Wno-error=return-type -Wno-error=unused-but-set-variable -Wno-error=unknown-pragmas -Wno-error=parentheses -Wno-error=unused-result"
    )
195
  endif()
196 197
  set_source_files_properties(
    fleet_py.cc PROPERTIES COMPILE_FLAGS ${DISTRIBUTE_COMPILE_FLAGS})
1
123malin 已提交
198
  list(APPEND PYBIND_DEPS fleet communicator index_wrapper index_sampler)
199 200
  list(APPEND PYBIND_SRCS)
  set(PYBIND_SRCS fleet_py.cc ${PYBIND_SRCS})
201
endif()
202

203
if(WITH_NCCL OR WITH_RCCL)
204 205 206
  list(APPEND PYBIND_SRCS nccl_wrapper_py.cc)
endif()

L
Leo Chen 已提交
207 208
if(WITH_PYTHON)
  # generate op pybind functions automatically for dygraph.
209 210 211 212 213 214 215 216 217 218 219
  if(WITH_ASCEND_CL)
    set(OP_FUNCTION_GENERETOR_DEPS
        pybind
        proto_desc
        executor
        layer
        tracer
        engine
        imperative_profiler
        imperative_flag
        ascend_wrapper)
220
  else()
221 222 223 224 225 226 227 228 229
    set(OP_FUNCTION_GENERETOR_DEPS
        pybind
        proto_desc
        executor
        layer
        tracer
        engine
        imperative_profiler
        imperative_flag)
230
  endif()
L
Leo Chen 已提交
231 232 233
  list(APPEND OP_FUNCTION_GENERETOR_DEPS ${GLOB_OP_LIB})
  list(APPEND OP_FUNCTION_GENERETOR_DEPS ${GLOB_OPERATOR_DEPS})

234
  if(WITH_NCCL OR WITH_RCCL)
L
Leo Chen 已提交
235
    list(APPEND OP_FUNCTION_GENERETOR_DEPS nccl_context)
236
  endif()
L
Leo Chen 已提交
237

238 239
  if(WITH_XPU_BKCL)
    list(APPEND OP_FUNCTION_GENERETOR_DEPS bkcl_context)
240
  endif()
241

242 243
  if(WITH_ASCEND_CL)
    list(APPEND OP_FUNCTION_GENERETOR_DEPS hccl_context)
244
  endif()
245

246 247
  if(WITH_CNCL)
    list(APPEND OP_FUNCTION_GENERETOR_DEPS cncl_context)
248
  endif()
249

L
Leo Chen 已提交
250
  add_executable(op_function_generator op_function_generator.cc)
251
  target_link_libraries(op_function_generator ${OP_FUNCTION_GENERETOR_DEPS})
252
  add_executable(eager_op_function_generator eager_op_function_generator.cc)
253 254
  target_link_libraries(eager_op_function_generator
                        ${OP_FUNCTION_GENERETOR_DEPS})
255 256
  if(NOT WIN32)
    add_executable(kernel_signature_generator kernel_signature_generator.cc)
257 258
    target_link_libraries(kernel_signature_generator
                          ${OP_FUNCTION_GENERETOR_DEPS})
259
  endif()
260

261
  get_property(os_dependency_modules GLOBAL PROPERTY OS_DEPENDENCY_MODULES)
L
Leo Chen 已提交
262
  target_link_libraries(op_function_generator ${os_dependency_modules})
263
  target_link_libraries(eager_op_function_generator ${os_dependency_modules})
264 265
  if(WITH_ROCM)
    target_link_libraries(op_function_generator ${ROCM_HIPRTC_LIB})
266
    target_link_libraries(eager_op_function_generator ${ROCM_HIPRTC_LIB})
267
    target_link_libraries(kernel_signature_generator ${ROCM_HIPRTC_LIB})
268
  endif()
L
Leo Chen 已提交
269

270
  set(impl_file ${CMAKE_SOURCE_DIR}/paddle/fluid/pybind/op_function.cc)
271
  set(tmp_impl_file ${impl_file}.tmp)
272
  set(eager_impl_file
273
      ${CMAKE_SOURCE_DIR}/paddle/fluid/pybind/eager_op_function.cc)
274
  set(tmp_eager_impl_file ${eager_impl_file}.tmp)
275

276
  set(OP_IMPL_DEPS op_function_generator)
277 278
  set(EAGER_OP_IMPL_DEPS eager_op_function_generator
                         eager_final_state_python_c_codegen)
279

280
  if(WIN32)
281
    if("${CMAKE_GENERATOR}" STREQUAL "Ninja")
282
      set(op_impl_path "${CMAKE_CURRENT_BINARY_DIR}")
283
    else()
284
      set(op_impl_path "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}")
285
    endif()
286

287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323
    file(
      WRITE
      ${CMAKE_BINARY_DIR}/paddle/fluid/pybind/op_function_generator_retry.bat
      ""
      "set build_times=1\n"
      ":retry\n"
      "ECHO op_function_generator run %build_times% time\n"
      "taskkill /f /im op_function_generator.exe 2>NUL\n"
      "${op_impl_path}/op_function_generator.exe ${tmp_impl_file}\n"
      "if %ERRORLEVEL% NEQ 0 (\n"
      "    set /a build_times=%build_times%+1\n"
      "    if %build_times% GEQ 10 (\n"
      "        exit /b 1\n"
      "    ) else (\n"
      "        goto :retry\n"
      "    )\n"
      ")\n"
      "exit /b 0")

    file(
      WRITE
      ${CMAKE_BINARY_DIR}/paddle/fluid/pybind/eager_op_function_generator_retry.bat
      ""
      "set build_times=1\n"
      ":retry\n"
      "ECHO eager_op_function_generator run %build_times% time\n"
      "taskkill /f /im eager_op_function_generator.exe 2>NUL\n"
      "${op_impl_path}/eager_op_function_generator.exe ${tmp_eager_impl_file}\n"
      "if %ERRORLEVEL% NEQ 0 (\n"
      "    set /a build_times=%build_times%+1\n"
      "    if %build_times% GEQ 10 (\n"
      "        exit /b 1\n"
      "    ) else (\n"
      "        goto :retry\n"
      "    )\n"
      ")\n"
      "exit /b 0")
324

325
    if(${CBLAS_PROVIDER} STREQUAL MKLML)
326 327 328 329
      add_custom_command(
        OUTPUT ${op_impl_path}/libiomp5md.dll
        COMMAND ${CMAKE_COMMAND} -E copy ${MKLML_SHARED_IOMP_LIB}
                ${op_impl_path}
330 331
        DEPENDS mklml)
      list(APPEND OP_IMPL_DEPS ${op_impl_path}/libiomp5md.dll)
332
      list(APPEND EAGER_OP_IMPL_DEPS ${op_impl_path}/libiomp5md.dll)
333
    else()
334 335
      add_custom_command(
        OUTPUT ${op_impl_path}/openblas.dll
336 337 338
        COMMAND ${CMAKE_COMMAND} -E copy ${OPENBLAS_SHARED_LIB} ${op_impl_path}
        DEPENDS extern_openblas)
      list(APPEND OP_IMPL_DEPS ${op_impl_path}/openblas.dll)
339
      list(APPEND EAGER_OP_IMPL_DEPS ${op_impl_path}/openblas.dll)
340
    endif()
L
Leo Chen 已提交
341
    if(WITH_MKLDNN)
342 343
      add_custom_command(
        OUTPUT ${op_impl_path}/mkldnn.dll
344 345
        COMMAND ${CMAKE_COMMAND} -E copy ${MKLDNN_SHARED_LIB} ${op_impl_path}
        DEPENDS mkldnn)
346 347
      list(APPEND OP_IMPL_DEPS ${op_impl_path}/mkldnn.dll)
      list(APPEND EAGER_OP_IMPL_DEPS ${op_impl_path}/mkldnn.dll)
348
    endif()
349
    if(WITH_ONNXRUNTIME)
350 351
      add_custom_command(
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/paddle2onnx.dll
352
        COMMAND ${CMAKE_COMMAND} -E copy ${PADDLE2ONNX_LIB}
353
                ${CMAKE_CURRENT_BINARY_DIR}
354 355
        DEPENDS paddle2onnx)
      list(APPEND OP_IMPL_DEPS ${CMAKE_CURRENT_BINARY_DIR}/paddle2onnx.dll)
356 357
      list(APPEND EAGER_OP_IMPL_DEPS
           ${CMAKE_CURRENT_BINARY_DIR}/paddle2onnx.dll)
358

359 360 361 362
      add_custom_command(
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/onnxruntime.dll
        COMMAND ${CMAKE_COMMAND} -E copy ${ONNXRUNTIME_SHARED_LIB}
                ${CMAKE_CURRENT_BINARY_DIR}
363 364
        DEPENDS onnxruntime)
      list(APPEND OP_IMPL_DEPS ${CMAKE_CURRENT_BINARY_DIR}/onnxruntime.dll)
365 366
      list(APPEND EAGER_OP_IMPL_DEPS
           ${CMAKE_CURRENT_BINARY_DIR}/onnxruntime.dll)
367
    endif()
368

369 370 371 372 373 374
    add_custom_command(
      OUTPUT ${impl_file}
      COMMAND
        ${CMAKE_BINARY_DIR}/paddle/fluid/pybind/op_function_generator_retry.bat
      COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_impl_file}
              ${impl_file}
375 376
      COMMENT "copy_if_different ${tmp_impl_file} to ${impl_file}"
      DEPENDS ${OP_IMPL_DEPS})
377
    if(NOT ((NOT WITH_PYTHON) AND ON_INFER))
378 379 380 381 382 383
      add_custom_command(
        OUTPUT ${eager_impl_file}
        COMMAND
          ${CMAKE_BINARY_DIR}/paddle/fluid/pybind/eager_op_function_generator_retry.bat
        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_eager_impl_file}
                ${eager_impl_file}
384 385 386
        COMMENT "copy_if_different ${tmp_eager_impl_file} to ${eager_impl_file}"
        DEPENDS ${EAGER_OP_IMPL_DEPS})
    endif()
387
  else()
388
    # If there are no *.so in /usr/lib or LD_LIBRARY_PATH,
L
Leo Chen 已提交
389
    # copy these *.so to current directory and append current directory to
390
    # LD_LIBRARY_PATH. This is different with Windows platformm, which search
L
Leo Chen 已提交
391
    # *.dll in current directory automatically.
392
    if(WITH_ONNXRUNTIME)
H
heliqi 已提交
393 394 395 396
      set(PADDLE2ONNX_PYBIND_OUT
          ${CMAKE_CURRENT_BINARY_DIR}/${PADDLE2ONNX_LIB_NAME})
      set(ONNXRUNTIME_PYBIND_OUT
          ${CMAKE_CURRENT_BINARY_DIR}/${ONNXRUNTIME_LIB_NAME})
397

398 399 400 401
      add_custom_command(
        OUTPUT ${PADDLE2ONNX_PYBIND_OUT}
        COMMAND ${CMAKE_COMMAND} -E copy ${PADDLE2ONNX_LIB}
                ${CMAKE_CURRENT_BINARY_DIR}
402 403 404 405
        DEPENDS paddle2onnx)
      list(APPEND OP_IMPL_DEPS ${PADDLE2ONNX_PYBIND_OUT})
      list(APPEND EAGER_OP_IMPL_DEPS ${PADDLE2ONNX_PYBIND_OUT})

406 407 408 409
      add_custom_command(
        OUTPUT ${ONNXRUNTIME_PYBIND_OUT}
        COMMAND ${CMAKE_COMMAND} -E copy ${ONNXRUNTIME_LIB}
                ${CMAKE_CURRENT_BINARY_DIR}
410 411 412 413 414
        DEPENDS onnxruntime)
      list(APPEND OP_IMPL_DEPS ${ONNXRUNTIME_PYBIND_OUT})
      list(APPEND EAGER_OP_IMPL_DEPS ${ONNXRUNTIME_PYBIND_OUT})
    endif()

415
    if(WITH_MKLML)
416 417 418 419
      add_custom_command(
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/libiomp5.so
        COMMAND ${CMAKE_COMMAND} -E copy ${MKLML_SHARED_IOMP_LIB}
                ${CMAKE_CURRENT_BINARY_DIR}
420 421
        DEPENDS mklml)
      list(APPEND OP_IMPL_DEPS ${CMAKE_CURRENT_BINARY_DIR}/libiomp5.so)
422
      list(APPEND EAGER_OP_IMPL_DEPS ${CMAKE_CURRENT_BINARY_DIR}/libiomp5.so)
423 424
    endif()
    if(WITH_MKLDNN)
425 426 427 428
      add_custom_command(
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/libdnnl.so.0
        COMMAND ${CMAKE_COMMAND} -E copy ${MKLDNN_SHARED_LIB}
                ${CMAKE_CURRENT_BINARY_DIR}
429 430
        DEPENDS mkldnn)
      list(APPEND OP_IMPL_DEPS ${CMAKE_CURRENT_BINARY_DIR}/libdnnl.so.0)
431
      list(APPEND EAGER_OP_IMPL_DEPS ${CMAKE_CURRENT_BINARY_DIR}/libdnnl.so.0)
432
    endif()
433 434 435 436 437 438 439 440 441 442
    add_custom_command(
      OUTPUT ${impl_file}
      COMMAND
        ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH}:."
        "${CMAKE_CURRENT_BINARY_DIR}/op_function_generator" "${tmp_impl_file}"
      COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_impl_file}
              ${impl_file}
      COMMENT "copy_if_different ${tmp_impl_file} to ${impl_file}"
      DEPENDS ${OP_IMPL_DEPS}
      VERBATIM)
443
    if(NOT ((NOT WITH_PYTHON) AND ON_INFER))
444 445 446 447 448 449 450 451 452 453 454 455
      add_custom_command(
        OUTPUT ${eager_impl_file}
        COMMAND
          ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH}:."
          "${CMAKE_CURRENT_BINARY_DIR}/eager_op_function_generator"
          "${tmp_eager_impl_file}"
        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${tmp_eager_impl_file}
                ${eager_impl_file}
        COMMENT "copy_if_different ${tmp_eager_impl_file} to ${eager_impl_file}"
        DEPENDS ${EAGER_OP_IMPL_DEPS}
        VERBATIM)
    endif()
456
  endif()
457
  add_custom_target(op_function_generator_cmd ALL DEPENDS ${impl_file})
458
  if(NOT ((NOT WITH_PYTHON) AND ON_INFER))
459 460
    add_custom_target(eager_op_function_generator_cmd ALL
                      DEPENDS ${eager_impl_file})
461
  endif()
L
Leo Chen 已提交
462

463 464 465 466 467 468
  list(APPEND PYBIND_DEPS interpretercore standalone_executor
       staticgraph_executor_statistics)
  cc_library(
    op_function_common
    SRCS op_function_common.cc
    DEPS ${PYBIND_DEPS})
469
  list(APPEND PYBIND_DEPS op_function_common)
470

471
  if(NOT ((NOT WITH_PYTHON) AND ON_INFER))
472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496
    set(PYBIND_SRCS eager.cc ${PYBIND_SRCS})
    set(PYBIND_SRCS eager_functions.cc ${PYBIND_SRCS})
    set(PYBIND_SRCS eager_method.cc ${PYBIND_SRCS})
    set(PYBIND_SRCS eager_properties.cc ${PYBIND_SRCS})
    set(PYBIND_SRCS eager_utils.cc ${PYBIND_SRCS})
    set(PYBIND_SRCS eager_py_layer.cc ${PYBIND_SRCS})
    set(PYBIND_SRCS eager_op_function.cc ${PYBIND_SRCS})
    set(PYBIND_SRCS eager_final_state_op_function.cc ${PYBIND_SRCS})
    list(APPEND PYBIND_DEPS eager_api)
    list(APPEND PYBIND_DEPS autograd_meta)
    list(APPEND PYBIND_DEPS backward)
    list(APPEND PYBIND_DEPS grad_node_info)
    list(APPEND PYBIND_DEPS phi)
    list(APPEND PYBIND_DEPS op_function_common)
    list(APPEND PYBIND_DEPS final_dygraph_function)
    list(APPEND PYBIND_DEPS final_dygraph_node)
    list(APPEND PYBIND_DEPS dygraph_function)
    list(APPEND PYBIND_DEPS dygraph_node)
    list(APPEND PYBIND_DEPS accumulation_node)
    list(APPEND PYBIND_DEPS py_layer_node)
    list(APPEND PYBIND_DEPS global_utils)
    list(APPEND PYBIND_DEPS utils)
    list(APPEND PYBIND_DEPS python)
    list(APPEND PYBIND_DEPS custom_operator)
    list(APPEND PYBIND_DEPS custom_operator_node)
497
  endif()
498

499 500
  cc_library(
    paddle_pybind SHARED
501
    SRCS ${PYBIND_SRCS}
502
    DEPS ${PYBIND_DEPS} ${GLOB_OP_LIB} ${GLOB_OPERATOR_DEPS})
503

504 505 506 507 508
  if(NOT ((NOT WITH_PYTHON) AND ON_INFER))
    add_dependencies(paddle_pybind eager_codegen)
    add_dependencies(paddle_pybind eager_op_function_generator_cmd)
  endif()

509 510
  if(NOT APPLE AND NOT WIN32)
    target_link_libraries(paddle_pybind rt)
511
  endif()
512 513 514 515

  if(WITH_ROCM)
    target_link_libraries(paddle_pybind ${ROCM_HIPRTC_LIB})
  endif()
516

517
  get_property(os_dependency_modules GLOBAL PROPERTY OS_DEPENDENCY_MODULES)
P
peizhilin 已提交
518
  target_link_libraries(paddle_pybind ${os_dependency_modules})
519
  add_dependencies(paddle_pybind op_function_generator_cmd)
520
endif()