CMakeLists.txt 20.5 KB
Newer Older
D
dongdaxiang 已提交
1

H
heqiaozhi 已提交
2 3
#windows treat symbolic file as a real file, which is different with unix
#We create a hidden file and compile it instead of origin source file.
D
dzhwinter 已提交
4 5
function(windows_symbolic TARGET)
  set(oneValueArgs "")
P
peizhilin 已提交
6
  set(multiValueArgs SRCS PATH)
D
dzhwinter 已提交
7
  cmake_parse_arguments(windows_symbolic "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
P
peizhilin 已提交
8
  set(final_path ${CMAKE_CURRENT_SOURCE_DIR}/${windows_symbolic_PATH})
D
dzhwinter 已提交
9
  foreach(src ${windows_symbolic_SRCS})
P
peizhilin 已提交
10 11 12 13
    get_filename_component(src ${src} NAME_WE)
    if (NOT EXISTS ${final_path}/${src}.cc OR NOT EXISTS ${final_path}/${src}.cu)
        message(FATAL " ${src}.cc and ${src}.cu must exsits, and ${src}.cu must be symbolic file.")
    endif()
D
dzhwinter 已提交
14

P
peizhilin 已提交
15 16 17 18 19 20
    file(GENERATE OUTPUT ${final_path}/.${src}.cu INPUT ${final_path}/${src}.cc)

    add_custom_command(OUTPUT ${final_path}/.${src}.cu
            COMMAND ${CMAKE_COMMAND} -E copy_if_different "${final_path}/${src}.cc" "${final_path}/.${src}.cu"
            COMMENT "create hidden file of ${src}.cu")
    add_custom_target(${TARGET} ALL DEPENDS .${src}.cu)
D
dzhwinter 已提交
21 22 23
  endforeach()
endfunction()

X
start  
Xin Pan 已提交
24
add_subdirectory(ir)
D
dzhwinter 已提交
25
add_subdirectory(details)
D
dongdaxiang 已提交
26
add_subdirectory(fleet)
27
add_subdirectory(io)
H
heqiaozhi 已提交
28
#ddim lib
29
proto_library(framework_proto SRCS framework.proto)
T
Thunderbrook 已提交
30
proto_library(heter_service_proto SRCS heter_service.proto)
D
dongdaxiang 已提交
31
proto_library(data_feed_proto SRCS data_feed.proto)
H
hutuxian 已提交
32 33
proto_library(trainer_desc_proto SRCS trainer_desc.proto DEPS framework_proto
  data_feed_proto)
34

S
sneaxiy 已提交
35
cc_library(ddim SRCS ddim.cc DEPS eigen3 boost enforce)
36 37
cc_test(ddim_test SRCS ddim_test.cc DEPS ddim)
nv_test(dim_test SRCS dim_test.cu DEPS ddim)
S
sneaxiy 已提交
38
cc_test(unroll_array_ops_test SRCS unroll_array_ops_test.cc)
Y
yuyang18 已提交
39
cc_library(data_type SRCS data_type.cc DEPS framework_proto ddim device_context)
D
dzhwinter 已提交
40
cc_test(data_type_test SRCS data_type_test.cc DEPS data_type place tensor)
41
if(WITH_GPU)
D
dzhwinter 已提交
42 43 44 45 46
  if (WIN32)
    windows_symbolic(tensor_util SRCS tensor_util.cu)
    nv_library(tensor SRCS tensor.cc .tensor_util.cu DEPS place memory data_type device_context)
    add_dependencies(tensor tensor_util)
  else()
47
    nv_library(tensor SRCS tensor.cc tensor_util.cu DEPS place memory data_type device_context profiler)
D
dzhwinter 已提交
48
  endif(WIN32)
Y
Yang Yu 已提交
49
else()
50
  cc_library(tensor SRCS tensor.cc tensor_util.cc DEPS place memory data_type device_context profiler)
51
endif()
D
dzhwinter 已提交
52

Y
Yu Yang 已提交
53
cc_test(tensor_test SRCS tensor_test.cc DEPS tensor)
54
if(WITH_GPU)
6
633WHU 已提交
55
  nv_test(tensor_util_test SRCS tensor_util_test.cc tensor_util_test.cu DEPS tensor dlpack_tensor)
Y
Yang Yu 已提交
56
else()
6
633WHU 已提交
57
  cc_test(tensor_util_test SRCS tensor_util_test.cc DEPS tensor dlpack_tensor)
Y
Yang Yu 已提交
58
endif()
D
dzhwinter 已提交
59

60 61
cc_test(copy_same_tensor_test SRCS copy_same_tensor_test.cc DEPS tensor)

Y
Update  
Yi Wang 已提交
62
cc_test(eigen_test SRCS eigen_test.cc DEPS tensor)
L
liaogang 已提交
63

64
if(WITH_GPU)
Q
qiaolongfei 已提交
65
  nv_test(mixed_vector_test SRCS mixed_vector_test.cc mixed_vector_test.cu DEPS place memory device_context tensor)
66 67 68
else()
  cc_test(mixed_vector_test SRCS mixed_vector_test.cc DEPS place memory device_context tensor)
endif()
69
cc_library(lod_tensor SRCS lod_tensor.cc DEPS ddim place tensor framework_proto version)
D
dzhwinter 已提交
70

Y
Yi Wang 已提交
71
cc_test(lod_tensor_test SRCS lod_tensor_test.cc DEPS lod_tensor memory)
72
nv_test(lod_tensor_gpu_test SRCS lod_tensor_test.cu DEPS lod_tensor)
73

S
sneaxiy 已提交
74
cc_library(garbage_collector SRCS garbage_collector.cc DEPS device_context memory gflags glog)
S
sneaxiy 已提交
75

F
fengjiayi 已提交
76
cc_library(reader SRCS reader.cc DEPS lod_tensor ddim)
Y
yuyang18 已提交
77
cc_test(reader_test SRCS reader_test.cc DEPS reader)
F
fengjiayi 已提交
78

Y
Yi Wang 已提交
79
cc_library(threadpool SRCS threadpool.cc DEPS enforce)
Y
Yang Yu 已提交
80 81
cc_test(threadpool_test SRCS threadpool_test.cc DEPS threadpool)

82
cc_library(var_type_traits SRCS var_type_traits DEPS lod_tensor selected_rows framework_proto)
S
sneaxiy 已提交
83
if (WITH_GPU)
S
sneaxiy 已提交
84
  target_link_libraries(var_type_traits dynload_cuda)
S
sneaxiy 已提交
85 86 87
endif()
cc_test(var_type_traits_test SRCS var_type_traits_test.cc DEPS var_type_traits)

88
cc_library(scope SRCS scope.cc DEPS glog threadpool xxhash var_type_traits)
H
hutuxian 已提交
89 90
cc_library(device_worker SRCS device_worker.cc DEPS trainer_desc_proto lod_tensor scope)
cc_test(device_worker_test SRCS device_worker_test.cc DEPS device_worker)
91

S
sneaxiy 已提交
92
cc_library(scope_pool SRCS scope_pool.cc DEPS scope)
Y
Yi Wang 已提交
93
cc_test(scope_test SRCS scope_test.cc DEPS scope)
S
sneaxiy 已提交
94
cc_test(variable_test SRCS variable_test.cc DEPS tensor var_type_traits)
L
liaogang 已提交
95

96
cc_library(data_device_transform SRCS data_device_transform.cc DEPS tensor)
97
nv_test(data_device_transform_test SRCS data_device_transform_test.cu
S
sneaxiy 已提交
98
        DEPS operator op_registry device_context math_function scope)
99

100
if(WITH_GPU)
D
dzhwinter 已提交
101
  if (WIN32)
H
heqiaozhi 已提交
102 103
#windows treat symbolic file as a real file, which is different with unix
#We create a hidden file and compile it instead of origin source file.
D
dzhwinter 已提交
104 105 106 107 108 109
      windows_symbolic(hidden_file SRCS data_type_transform.cu)
      nv_library(data_type_transform SRCS .data_type_transform.cu DEPS tensor)
      add_dependencies(data_type_transform hidden_file)
  else()
      nv_library(data_type_transform SRCS data_type_transform.cu DEPS tensor)
  endif(WIN32)
110 111 112 113 114
  nv_test(data_type_transform_test SRCS data_type_transform_test.cc data_type_transform_test.cu DEPS data_type_transform)
else()
  cc_library(data_type_transform SRCS data_type_transform.cc DEPS tensor)
  cc_test(data_type_transform_test SRCS data_type_transform_test.cc DEPS data_type_transform)
endif()
115

116
cc_library(data_layout_transform SRCS data_layout_transform.cc DEPS tensor math_function)
117
cc_test(data_layout_transform_test SRCS data_layout_transform_test.cc DEPS data_layout_transform)
118

119 120
cc_library(data_transform SRCS data_transform.cc DEPS math_function tensor
        framework_proto selected_rows data_device_transform data_type_transform data_layout_transform)
Q
Qiao Longfei 已提交
121

122
cc_library(attribute SRCS attribute.cc DEPS framework_proto boost enforce)
123 124
cc_test(program_desc_test SRCS program_desc_test.cc DEPS proto_desc
device_context)
125

126 127 128
cc_library(op_version_proto SRCS op_version_proto.cc DEPS framework_proto boost)

cc_library(op_version_registry SRCS op_version_registry.cc DEPS op_version_proto framework_proto boost)
129 130
cc_test(op_version_registry_test SRCS op_version_registry_test.cc DEPS op_version_registry)

R
reyoung 已提交
131
cc_library(op_proto_maker SRCS op_proto_maker.cc DEPS framework_proto attribute glog)
132
cc_test(op_proto_maker_test SRCS op_proto_maker_test.cc DEPS op_proto_maker)
133
cc_library(no_need_buffer_vars_inference SRCS no_need_buffer_vars_inference.cc DEPS attribute device_context)
134
cc_library(op_info SRCS op_info.cc DEPS attribute framework_proto no_need_buffer_vars_inference)
T
tensor-tang 已提交
135
cc_library(shape_inference SRCS shape_inference.cc DEPS ddim attribute device_context)
D
dzhwinter 已提交
136

137 138
cc_test(no_need_buffer_vars_inference_test SRCS no_need_buffer_vars_inference_test.cc DEPS no_need_buffer_vars_inference layer)

S
superjomn 已提交
139
cc_library(transfer_scope_cache SRCS transfer_scope_cache.cc DEPS scope framework_proto device_context)
X
Xin Pan 已提交
140
cc_library(op_kernel_type SRCS op_kernel_type.cc DEPS device_context place)
141 142 143

cc_library(unused_var_check SRCS unused_var_check.cc DEPS glog no_need_buffer_vars_inference)

144
cc_library(operator SRCS operator.cc DEPS op_info device_context tensor scope glog trainer_desc_proto data_feed_proto
W
WangXi 已提交
145
    shape_inference data_transform lod_tensor profiler transfer_scope_cache op_kernel_type op_call_stack unused_var_check nan_inf_utils)
D
dzhwinter 已提交
146

147
cc_test(operator_test SRCS operator_test.cc DEPS operator op_registry device_context)
148
cc_test(operator_exception_test SRCS operator_exception_test.cc DEPS operator op_registry device_context)
X
version  
Xin Pan 已提交
149 150

cc_library(version SRCS version.cc)
X
Xin Pan 已提交
151 152
cc_test(version_test SRCS version_test.cc DEPS version)

X
version  
Xin Pan 已提交
153
cc_library(proto_desc SRCS var_desc.cc op_desc.cc block_desc.cc program_desc.cc DEPS shape_inference op_info operator glog version)
B
baojun-nervana 已提交
154

155
cc_library(op_registry SRCS op_registry.cc DEPS op_proto_maker op_info operator glog proto_desc)
D
dongdaxiang 已提交
156

157
cc_library(op_call_stack SRCS op_call_stack.cc DEPS op_proto_maker enforce)
158
cc_test(op_call_stack_test SRCS op_call_stack_test.cc DEPS op_call_stack)
159

D
dzhwinter 已提交
160
nv_test(op_registry_test SRCS op_registry_test.cc DEPS op_registry)
161

162 163 164
if(WITH_PYTHON)
  py_proto_compile(framework_py_proto SRCS framework.proto data_feed.proto)
  py_proto_compile(trainer_py_proto SRCS trainer_desc.proto data_feed.proto)
165
  py_proto_compile(distributed_strategy_py_proto SRCS distributed_strategy.proto)
H
heqiaozhi 已提交
166
#Generate an empty \
H
heqiaozhi 已提交
167
    #__init__.py to make framework_py_proto as a valid python module.
168
  add_custom_target(framework_py_proto_init ALL COMMAND ${CMAKE_COMMAND} -E touch __init__.py)
169
  add_dependencies(framework_py_proto framework_py_proto_init trainer_py_proto distributed_strategy_py_proto)
170 171
  if (NOT WIN32)
    add_custom_command(TARGET framework_py_proto POST_BUILD
P
peizhilin 已提交
172
      COMMAND ${CMAKE_COMMAND} -E make_directory ${PADDLE_BINARY_DIR}/python/paddle/fluid/proto
173 174
      COMMAND ${CMAKE_COMMAND} -E make_directory ${PADDLE_BINARY_DIR}/python/paddle/distributed/fleet/proto
      COMMAND ${CMAKE_COMMAND} -E touch ${PADDLE_BINARY_DIR}/python/paddle/distributed/fleet/proto/__init__.py
P
peizhilin 已提交
175
      COMMAND cp *.py ${PADDLE_BINARY_DIR}/python/paddle/fluid/proto/
176
      COMMAND cp distributed_strategy_*.py ${PADDLE_BINARY_DIR}/python/paddle/distributed/fleet/proto
P
peizhilin 已提交
177 178
      COMMENT "Copy generated python proto into directory paddle/fluid/proto."
      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
179 180
  else(NOT WIN32)
    string(REPLACE "/" "\\" proto_dstpath "${PADDLE_BINARY_DIR}/python/paddle/fluid/proto/")
181
    string(REPLACE "/" "\\" fleet_proto_dstpath "${PADDLE_BINARY_DIR}/python/paddle/distributed/fleet/proto/")
182
    add_custom_command(TARGET framework_py_proto POST_BUILD
P
peizhilin 已提交
183
          COMMAND ${CMAKE_COMMAND} -E make_directory ${PADDLE_BINARY_DIR}/python/paddle/fluid/proto
184 185
	  COMMAND ${CMAKE_COMMAND} -E make_directory ${PADDLE_BINARY_DIR}/python/paddle/distributed/fleet/proto
	  COMMAND ${CMAKE_COMMAND} -E touch ${PADDLE_BINARY_DIR}/python/paddle/distributed/fleet/proto/__init__.py
P
peizhilin 已提交
186
          COMMAND copy /Y *.py ${proto_dstpath}
187
	  COMMAND copy /Y distributed_strategy_*.py ${fleet_proto_dstpath}
P
peizhilin 已提交
188
          COMMENT "Copy generated python proto into directory paddle/fluid/proto."
189
	  COMMENT "Copy generated python proto into directory paddle/distributed/fleet/proto."
P
peizhilin 已提交
190
          WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
191 192
  endif(NOT WIN32)
endif()
193

Y
Yu Yang 已提交
194
cc_library(lod_rank_table SRCS lod_rank_table.cc DEPS lod_tensor)
Y
Yan Chunwei 已提交
195

196
cc_library(feed_fetch_method SRCS feed_fetch_method.cc DEPS lod_tensor scope glog)
W
Wang Guibao 已提交
197
cc_library(variable_helper SRCS variable_helper.cc DEPS lod_tensor)
198

199
cc_library(naive_executor SRCS naive_executor.cc DEPS op_registry denormal device_context scope framework_proto glog lod_rank_table feed_fetch_method graph_to_program_pass variable_helper)
200

S
sneaxiy 已提交
201
cc_library(executor_gc_helper SRCS executor_gc_helper.cc DEPS scope proto_desc operator garbage_collector)
202
if(WITH_DISTRIBUTE)
T
Thunderbrook 已提交
203 204 205 206
  if(WITH_PSLIB)
    cc_library(executor SRCS executor.cc multi_trainer.cc pipeline_trainer.cc dataset_factory.cc
    dist_multi_trainer.cc trainer_factory.cc trainer.cc data_feed_factory.cc
    heterxpu_trainer.cc
T
Thunderbrook 已提交
207 208
    data_feed.cc device_worker.cc hogwild_worker.cc hetercpu_worker.cc ps_gpu_worker.cc
    heterbox_worker.cc heterbox_trainer.cc ps_gpu_trainer.cc downpour_worker.cc downpour_worker_opt.cc
T
Thunderbrook 已提交
209 210
    pull_dense_worker.cc section_worker.cc device_worker_factory.cc data_set.cc DEPS op_registry
    device_context scope framework_proto trainer_desc_proto glog fs shell
T
Thunderbrook 已提交
211
    fleet_wrapper heter_wrapper ps_gpu_wrapper box_wrapper lodtensor_printer
T
tangwei12 已提交
212
    lod_rank_table feed_fetch_method collective_helper ${GLOB_DISTRIBUTE_DEPS}
T
Thunderbrook 已提交
213 214 215 216
    graph_to_program_pass variable_helper data_feed_proto timer monitor
    heter_service_proto pslib_brpc)
    set(DISTRIBUTE_COMPILE_FLAGS "-Wno-non-virtual-dtor -Wno-error=non-virtual-dtor -Wno-error=delete-non-virtual-dtor")
    set_source_files_properties(executor.cc PROPERTIES COMPILE_FLAGS ${DISTRIBUTE_COMPILE_FLAGS})
T
tangwei12 已提交
217
  elseif(WITH_PSCORE)
T
Thunderbrook 已提交
218
    cc_library(executor SRCS executor.cc multi_trainer.cc pipeline_trainer.cc dataset_factory.cc
T
tangwei12 已提交
219 220 221 222 223 224 225 226
            dist_multi_trainer.cc trainer_factory.cc trainer.cc data_feed_factory.cc
            heterxpu_trainer.cc
            data_feed.cc device_worker.cc hogwild_worker.cc hetercpu_worker.cc
            heterbox_worker.cc heterbox_trainer.cc downpour_worker.cc downpour_worker_opt.cc
            pull_dense_worker.cc section_worker.cc device_worker_factory.cc data_set.cc DEPS op_registry
            device_context scope framework_proto data_feed_proto heter_service_proto trainer_desc_proto glog
            lod_rank_table fs shell fleet_wrapper heter_wrapper box_wrapper lodtensor_printer feed_fetch_method
            graph_to_program_pass variable_helper timer monitor heter_service_proto fleet)
T
Thunderbrook 已提交
227 228
    set(DISTRIBUTE_COMPILE_FLAGS "-Wno-non-virtual-dtor -Wno-error=non-virtual-dtor -Wno-error=delete-non-virtual-dtor")
    set_source_files_properties(executor.cc PROPERTIES COMPILE_FLAGS ${DISTRIBUTE_COMPILE_FLAGS})
T
tangwei12 已提交
229 230
    set_source_files_properties(multi_trainer.cc PROPERTIES COMPILE_FLAGS ${DISTRIBUTE_COMPILE_FLAGS})
    set_source_files_properties(hogwild_worker.cc PROPERTIES COMPILE_FLAGS ${DISTRIBUTE_COMPILE_FLAGS})
T
tangwei12 已提交
231 232 233 234 235 236 237 238 239 240
  else()
    cc_library(executor SRCS executor.cc multi_trainer.cc pipeline_trainer.cc dataset_factory.cc
            dist_multi_trainer.cc trainer_factory.cc trainer.cc data_feed_factory.cc
            heterxpu_trainer.cc
            data_feed.cc device_worker.cc hogwild_worker.cc hetercpu_worker.cc ps_gpu_worker.cc
            heterbox_worker.cc heterbox_trainer.cc ps_gpu_trainer.cc downpour_worker.cc downpour_worker_opt.cc
            pull_dense_worker.cc section_worker.cc device_worker_factory.cc data_set.cc DEPS op_registry
            device_context scope framework_proto data_feed_proto heter_service_proto trainer_desc_proto glog
            lod_rank_table fs shell fleet_wrapper heter_wrapper ps_gpu_wrapper box_wrapper lodtensor_printer feed_fetch_method
            graph_to_program_pass variable_helper timer monitor)
T
Thunderbrook 已提交
241
  endif()
T
Thunderbrook 已提交
242 243 244 245
elseif(WITH_PSLIB)
  cc_library(executor SRCS executor.cc multi_trainer.cc pipeline_trainer.cc dataset_factory.cc
  dist_multi_trainer.cc trainer_factory.cc trainer.cc data_feed_factory.cc
  heterxpu_trainer.cc
T
Thunderbrook 已提交
246 247
  data_feed.cc device_worker.cc hogwild_worker.cc hetercpu_worker.cc ps_gpu_worker.cc
  heterbox_worker.cc heterbox_trainer.cc ps_gpu_trainer.cc downpour_worker.cc downpour_worker_opt.cc
T
Thunderbrook 已提交
248 249
  pull_dense_worker.cc section_worker.cc device_worker_factory.cc data_set.cc DEPS op_registry
  device_context scope framework_proto data_feed_proto heter_service_proto trainer_desc_proto glog
T
Thunderbrook 已提交
250
  lod_rank_table fs shell fleet_wrapper heter_wrapper ps_gpu_wrapper box_wrapper lodtensor_printer feed_fetch_method
T
Thunderbrook 已提交
251
  graph_to_program_pass variable_helper timer monitor pslib_brpc )
W
Wu Yi 已提交
252
else()
H
hutuxian 已提交
253
  cc_library(executor SRCS executor.cc multi_trainer.cc pipeline_trainer.cc dataset_factory.cc
254
  dist_multi_trainer.cc trainer_factory.cc trainer.cc data_feed_factory.cc
T
Thunderbrook 已提交
255
  heterxpu_trainer.cc
T
Thunderbrook 已提交
256 257
  data_feed.cc device_worker.cc hogwild_worker.cc hetercpu_worker.cc ps_gpu_worker.cc
  heterbox_worker.cc heterbox_trainer.cc ps_gpu_trainer.cc downpour_worker.cc downpour_worker_opt.cc
H
hutuxian 已提交
258
  pull_dense_worker.cc section_worker.cc device_worker_factory.cc data_set.cc DEPS op_registry
T
Thunderbrook 已提交
259
  device_context scope framework_proto data_feed_proto heter_service_proto trainer_desc_proto glog
T
Thunderbrook 已提交
260
  lod_rank_table fs shell fleet_wrapper heter_wrapper ps_gpu_wrapper box_wrapper lodtensor_printer feed_fetch_method
H
hutuxian 已提交
261
  graph_to_program_pass variable_helper timer monitor)
W
Wu Yi 已提交
262
endif()
B
baojun-nervana 已提交
263

Z
Zeng Jinle 已提交
264
target_link_libraries(executor while_op_helper executor_gc_helper recurrent_op_helper conditional_block_op_helper)
S
sneaxiy 已提交
265

266
cc_library(parallel_executor SRCS parallel_executor.cc DEPS
Q
can run  
Qiao Longfei 已提交
267
        threaded_ssa_graph_executor scope_buffered_ssa_graph_executor parallel_ssa_graph_executor async_ssa_graph_executor
268
        graph build_strategy bind_threaded_ssa_graph_executor collective_helper
W
Wang Guibao 已提交
269
        fast_threaded_ssa_graph_executor variable_helper)
Q
qijun 已提交
270

271
cc_library(executor_cache SRCS executor_cache.cc DEPS executor)
Z
zhang wenhui 已提交
272 273
cc_test(dist_multi_trainer_test SRCS dist_multi_trainer_test.cc DEPS
    conditional_block_op executor)
H
Huihuang Zheng 已提交
274
cc_library(prune SRCS prune.cc DEPS framework_proto boost)
Y
Yang Yang 已提交
275
cc_test(prune_test SRCS prune_test.cc DEPS op_info prune recurrent_op device_context)
Y
Yu Yang 已提交
276 277
cc_test(var_type_inference_test SRCS var_type_inference_test.cc DEPS op_registry
        proto_desc)
Q
qijun 已提交
278 279
cc_library(selected_rows SRCS selected_rows.cc DEPS tensor)
cc_test(selected_rows_test SRCS selected_rows_test.cc DEPS selected_rows)
D
dzhwinter 已提交
280

X
Xin Pan 已提交
281
cc_test(op_kernel_type_test SRCS op_kernel_type_test.cc DEPS place device_context framework_proto op_kernel_type)
Y
Yang Yu 已提交
282
cc_test(cow_ptr_tests SRCS details/cow_ptr_test.cc)
M
minqiyang 已提交
283

C
chengduo 已提交
284
cc_test(tuple_test SRCS tuple_test.cc )
285

Z
Zeng Jinle 已提交
286 287
cc_test(inlined_vector_test SRCS inlined_vector_test.cc)

D
dzhwinter 已提交
288
if (NOT WIN32)
Q
Qiao Longfei 已提交
289
cc_test(rw_lock_test SRCS rw_lock_test.cc)
D
dzhwinter 已提交
290
endif (NOT WIN32)
S
sneaxiy 已提交
291 292 293

cc_library(dlpack_tensor SRCS dlpack_tensor.cc DEPS tensor dlpack)
cc_test(dlpack_tensor_test SRCS dlpack_tensor_test.cc DEPS dlpack_tensor glog)
Y
Yan Chunwei 已提交
294

295
cc_library(op_compatible_info SRCS op_compatible_info DEPS string_helper proto_desc)
296
cc_test(op_compatible_info_test SRCS op_compatible_info_test.cc DEPS op_compatible_info proto_desc string_helper glog)
H
hong 已提交
297

H
hong 已提交
298 299
cc_library(save_load_util SRCS save_load_util DEPS tensor scope layer)
cc_test(save_load_util_test SRCS save_load_util_test.cc DEPS save_load_util tensor scope layer)
Y
yaoxuefeng 已提交
300
cc_library(generator SRCS generator.cc DEPS enforce place)
H
hong 已提交
301

Y
Yan Chunwei 已提交
302 303 304
# Get the current working branch
execute_process(
  COMMAND git rev-parse --abbrev-ref HEAD
D
dongdaxiang 已提交
305 306 307 308
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
      OUTPUT_VARIABLE PADDLE_BRANCH
        OUTPUT_STRIP_TRAILING_WHITESPACE
	)
Y
Yan Chunwei 已提交
309 310 311 312

# Get the latest abbreviated commit hash of the working branch
execute_process(
  COMMAND git log -1 --format=%h
D
dongdaxiang 已提交
313 314 315 316
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
      OUTPUT_VARIABLE PADDLE_COMMIT
        OUTPUT_STRIP_TRAILING_WHITESPACE
	)
Y
Yan Chunwei 已提交
317 318 319 320 321

message(STATUS "commit: ${PADDLE_COMMIT}")
message(STATUS "branch: ${PADDLE_BRANCH}")

configure_file(commit.h.in commit.h)
322

323
cc_library(custom_tensor SRCS ../extension/src/tensor.cc DEPS lod_tensor memory enforce)
324
cc_library(op_meta_info SRCS ../extension/src/op_meta_info.cc DEPS custom_tensor)
325
cc_library(custom_operator SRCS custom_operator.cc DEPS tensor attribute framework_proto op_registry operator dynamic_loader string_helper custom_tensor op_meta_info)
326 327 328
cc_test(custom_tensor_test SRCS custom_tensor_test.cc DEPS custom_tensor glog)

set(FLUID_FRAMEWORK_MODULES proto_desc memory lod_tensor executor data_feed_proto layer dynamic_loader custom_operator)
329

330
cc_library(paddle_framework DEPS ${FLUID_FRAMEWORK_MODULES})
331
cc_library(paddle_framework_shared
332 333
    SHARED SRCS executor.cc operator.cc custom_operator.cc ../extension/src/tensor.cc
    ../extension/src/op_meta_info.cc
334 335
    ${CMAKE_CURRENT_SOURCE_DIR}/c/c_api.cc
    ${CMAKE_SOURCE_DIR}/paddle/fluid/imperative/layer.cc
336 337 338 339 340 341 342 343 344 345 346 347
    DEPS ${FLUID_FRAMEWORK_MODULES})
get_property(os_dependency_modules GLOBAL PROPERTY OS_DEPENDENCY_MODULES)
set_target_properties(paddle_framework_shared PROPERTIES OUTPUT_NAME paddle_framework)
target_link_libraries(paddle_framework_shared ${os_dependency_modules})

if (LINUX)
  set(FLUID_FRAMEWORK_SHARED_LIB
      ${PADDLE_BINARY_DIR}/paddle/fluid/framework/libpaddle_framework.so
      CACHE INTERNAL "Fluid framework lib")
endif()

if (WIN32)
348 349 350
  set(FLUID_FRAMEWORK_IMPORT_LIB
    ${PADDLE_BINARY_DIR}/paddle/fluid/framework/${CMAKE_BUILD_TYPE}/paddle_framework.lib
    CACHE INTERNAL "Fluid framework lib")
351
  set(FLUID_FRAMEWORK_SHARED_LIB
352 353
      ${PADDLE_BINARY_DIR}/paddle/fluid/framework/${CMAKE_BUILD_TYPE}/paddle_framework.dll
      CACHE INTERNAL "Fluid framework dll")
354 355 356 357 358 359 360
endif()

if(APPLE)
  set(FLUID_FRAMEWORK_SHARED_LIB
      ${PADDLE_BINARY_DIR}/paddle/fluid/framework/libpaddle_framework.dylib
      CACHE INTERNAL "Fluid framework lib")
endif()
361 362
if(WITH_TESTING AND TEST selected_rows_test)
  set_tests_properties(selected_rows_test PROPERTIES TIMEOUT 120)
Y
YUNSHEN XIE 已提交
363
endif()
364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397

# New custom op extension mechanism related

# if not deps `layer`, will cause: undefined symbol: _ZN6paddle10imperative7VarBase9name_set_
set(PADDLE_CUSTOM_OP_MODULES custom_tensor op_meta_info custom_operator layer)

cc_library(paddle_custom_op_shared
    SHARED SRCS custom_operator.cc ../extension/src/tensor.cc ../extension/src/op_meta_info.cc
    ${CMAKE_SOURCE_DIR}/paddle/fluid/imperative/layer.cc
    DEPS ${PADDLE_CUSTOM_OP_MODULES})
get_property(os_dependency_modules GLOBAL PROPERTY OS_DEPENDENCY_MODULES)
set_target_properties(paddle_custom_op_shared PROPERTIES OUTPUT_NAME paddle_custom_op)
target_link_libraries(paddle_custom_op_shared ${os_dependency_modules})

if (LINUX)
  set(PADDLE_CUSTOM_OP_SHARED_LIB
      ${PADDLE_BINARY_DIR}/paddle/fluid/framework/libpaddle_custom_op.so
      CACHE INTERNAL "Paddle custom op lib")
endif()

if (WIN32)
  set(PADDLE_CUSTOM_OP_SHARED_LIB
      ${PADDLE_BINARY_DIR}/paddle/fluid/framework/${CMAKE_BUILD_TYPE}/paddle_custom_op.lib
      CACHE INTERNAL "Paddle custom op lib")
  set(PADDLE_CUSTOM_OP_SHARED_LIB
      ${PADDLE_BINARY_DIR}/paddle/fluid/framework/${CMAKE_BUILD_TYPE}/paddle_custom_op.dll
      CACHE INTERNAL "Paddle custom op dll")
endif()

if(APPLE)
  set(PADDLE_CUSTOM_OP_SHARED_LIB
      ${PADDLE_BINARY_DIR}/paddle/fluid/framework/paddle_custom_op.dylib
      CACHE INTERNAL "Paddle custom op lib")
endif()