CMakeLists.txt 4.3 KB
Newer Older
H
hutuxian 已提交
1
set(PYBIND_DEPS pybind python proto_desc memory executor fleet_wrapper box_wrapper nccl_wrapper prune
J
Jiabin Yang 已提交
2
  feed_fetch_method pass_builder parallel_executor profiler layer tracer engine scope_pool
3 4 5 6 7
  analysis_predictor imperative_profiler imperative_flag save_load_util dlpack_tensor device_context)

if(NOT WIN32)
  set(PYBIND_DEPS ${PYBIND_DEPS} nccl_context)
endif(NOT WIN32)
F
flame 已提交
8

S
sneaxiy 已提交
9 10 11
if(WITH_PYTHON)
  list(APPEND PYBIND_DEPS py_func_op)
endif()
12 13 14 15 16 17 18 19 20 21

if (WITH_DISTRIBUTE)
  list(APPEND PYBIND_DEPS communicator)
endif()

set(PYBIND_SRCS
  pybind.cc
  exception.cc
  protobuf.cc
  const_value.cc
22
  global_value_getter_setter.cc
23 24
  reader_py.cc
  fleet_wrapper_py.cc
H
hutuxian 已提交
25
  box_helper_py.cc
26 27 28 29 30 31 32 33 34
  nccl_wrapper_py.cc
  data_set_py.cc
  imperative.cc
  ir.cc
  inference_api.cc)

if (WITH_DISTRIBUTE)
  list(APPEND PYBIND_SRCS communicator_py.cc)
endif()
35

L
Leo Chen 已提交
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
if(WITH_PYTHON)

  # generate op pybind functions automatically for dygraph.
  set(OP_FUNCTION_GENERETOR_DEPS pybind proto_desc executor layer tracer engine imperative_profiler imperative_flag)
  list(APPEND OP_FUNCTION_GENERETOR_DEPS ${GLOB_OP_LIB})
  list(APPEND OP_FUNCTION_GENERETOR_DEPS ${GLOB_OPERATOR_DEPS})

  if(NOT WIN32)
    list(APPEND OP_FUNCTION_GENERETOR_DEPS nccl_context)
  endif(NOT WIN32)

  add_executable(op_function_generator op_function_generator.cc)
  target_link_libraries(op_function_generator ${OP_FUNCTION_GENERETOR_DEPS} )
  get_property (os_dependency_modules GLOBAL PROPERTY OS_DEPENDENCY_MODULES)
  target_link_libraries(op_function_generator ${os_dependency_modules})

  if (WIN32)
    add_custom_target(op_function_cmd 
      COMMAND "${CMAKE_BINARY_DIR}/paddle/fluid/pybind/${CMAKE_BUILD_TYPE}/op_function_generator" 
      "${CMAKE_SOURCE_DIR}/paddle/fluid/pybind/op_function_impl.h") 
      add_dependencies(op_function_cmd op_function_generator)
    if(WITH_MKL)
    add_custom_target(copy_mkl 
          COMMAND ${CMAKE_COMMAND} -E copy ${MKLML_SHARED_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}
          COMMAND ${CMAKE_COMMAND} -E copy ${MKLML_SHARED_LIB_DEPS} ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}
          COMMAND ${CMAKE_COMMAND} -E copy ${MKLML_SHARED_IOMP_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}
          )
    endif(WITH_MKL)
    if(WITH_MKLDNN)
      add_custom_target(copy_mkldnn
          COMMAND ${CMAKE_COMMAND} -E copy ${MKLDNN_SHARED_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}
          )
    endif(WITH_MKLDNN)
  else(WIN32)
    # If there are no *.so in /usr/lib or LD_LIBRARY_PATH, 
    # copy these *.so to current directory and append current directory to
    # LD_LIBRARY_PATH. This is different with Windows platformm, which search 
    # *.dll in current directory automatically.
    add_custom_target(op_function_cmd 
      COMMAND ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH}:."
      "${CMAKE_CURRENT_BINARY_DIR}/op_function_generator"
      "${CMAKE_SOURCE_DIR}/paddle/fluid/pybind/op_function_impl.h") 
      add_dependencies(op_function_cmd op_function_generator)
    if(WITH_MKL)
    add_custom_target(copy_mkl
          COMMAND ${CMAKE_COMMAND} -E copy ${MKLML_SHARED_LIB} ${CMAKE_CURRENT_BINARY_DIR}
          COMMAND ${CMAKE_COMMAND} -E copy ${MKLML_SHARED_IOMP_LIB} ${CMAKE_CURRENT_BINARY_DIR}
          )
    endif(WITH_MKL)
    if(WITH_MKLDNN)
      add_custom_target(copy_mkldnn
          COMMAND ${CMAKE_COMMAND} -E copy ${MKLDNN_SHARED_LIB} ${CMAKE_CURRENT_BINARY_DIR}
          )
    endif(WITH_MKLDNN)
  endif(WIN32)

92
  if(WITH_MKL)
L
Leo Chen 已提交
93 94
  add_dependencies(copy_mkl op_function_generator)
  add_dependencies(op_function_cmd copy_mkl)
95
  endif(WITH_MKL)
L
Leo Chen 已提交
96 97 98 99 100

  if(WITH_MKLDNN)
  add_dependencies(copy_mkldnn op_function_generator)
  add_dependencies(op_function_cmd copy_mkldnn)  
  endif(WITH_MKLDNN)
101 102


103 104
  if(WITH_AMD_GPU)
    hip_library(paddle_pybind SHARED
D
dzhwinter 已提交
105
      SRCS ${PYBIND_SRCS}
S
sabreshao 已提交
106 107
      DEPS ARCHIVE_START ${PYBIND_DEPS}
      ${GLOB_OP_LIB} ${GLOB_OPERATOR_DEPS} ARCHIVE_END)
108 109
  else()
    cc_library(paddle_pybind SHARED
D
dzhwinter 已提交
110
      SRCS ${PYBIND_SRCS}
D
dzhwinter 已提交
111
      DEPS ${PYBIND_DEPS}
W
Wu Yi 已提交
112
      ${GLOB_OP_LIB} ${GLOB_OPERATOR_DEPS})
T
Tao Luo 已提交
113
    if(NOT APPLE AND NOT WIN32)
114
      target_link_libraries(paddle_pybind rt)
T
Tao Luo 已提交
115
    endif(NOT APPLE AND NOT WIN32)
116
  endif(WITH_AMD_GPU)
117

P
peizhilin 已提交
118 119
  get_property (os_dependency_modules GLOBAL PROPERTY OS_DEPENDENCY_MODULES)
  target_link_libraries(paddle_pybind ${os_dependency_modules})
120
  add_dependencies(paddle_pybind op_function_cmd) 
P
peizhilin 已提交
121

122
endif(WITH_PYTHON)