Skip to content

Commit 47aaba5

Browse files
author
yi.wu
committed
Merge branch 'develop' of https://github.com/PaddlePaddle/Paddle into fix1678
2 parents cc82c27 + e9d839d commit 47aaba5

File tree

18 files changed

+126
-329
lines changed

18 files changed

+126
-329
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ build/
77
.project
88
.cproject
99
.pydevproject
10+
.settings/
1011
Makefile
1112
.test_env/
1213
third_party/

CMakeLists.txt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ option(WITH_RDMA "Compile PaddlePaddle with RDMA support" OFF)
4040
option(WITH_TIMER "Compile PaddlePaddle with stats timer" OFF)
4141
option(WITH_PROFILER "Compile PaddlePaddle with GPU profiler" OFF)
4242
option(WITH_DOC "Compile PaddlePaddle with documentation" OFF)
43-
option(ON_COVERALLS "Compile PaddlePaddle with code coverage" OFF)
43+
option(WITH_COVERAGE "Compile PaddlePaddle with code coverage" OFF)
4444
option(COVERALLS_UPLOAD "Package code coverage data to coveralls" OFF)
4545
option(ON_TRAVIS "Exclude special unit test on Travis CI" OFF)
4646

@@ -82,14 +82,21 @@ include_directories("${PROJ_ROOT}/paddle/cuda/include")
8282
include_directories("${CMAKE_CURRENT_BINARY_DIR}/proto")
8383

8484
set(EXTERNAL_LIBS
85-
# have not include gtest here.
8685
${GFLAGS_LIBRARIES}
8786
${GLOG_LIBRARIES}
8887
${CBLAS_LIBRARIES}
8988
${PROTOBUF_LIBRARY}
9089
${ZLIB_LIBRARIES}
90+
${PYTHON_LIBRARIES}
9191
)
9292

93+
if(WITH_GPU)
94+
list(APPEND EXTERNAL_LIB ${CUDA_LIBRARIES} ${CUDA_rt_LIBRARY})
95+
if(NOT WITH_DSO)
96+
list(APPEND EXTERNAL_LIB ${CUDNN_LIBRARY} ${CUDA_CUBLAS_LIBRARIES} ${CUDA_curand_LIBRARY})
97+
endif(NOT WITH_DSO)
98+
endif(WITH_GPU)
99+
93100
add_subdirectory(proto)
94101
add_subdirectory(paddle)
95102
add_subdirectory(python)

cmake/coveralls.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ function(code_coverage _COVERAGE_SRCS _COVERALLS_UPLOAD _CMAKE_SCRIPT_PATH)
6161
endif()
6262
endfunction()
6363

64-
if(ON_COVERALLS)
64+
if(WITH_COVERAGE)
6565
set(CMAKE_BUILD_TYPE "Debug")
6666
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
6767
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")

cmake/coverallsGcovJsons.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ foreach(GCDA ${GCDA_FILES})
134134
# If -p is not specified then the file is named only "the_file.c.gcov"
135135
#
136136
execute_process(
137-
COMMAND "${GCOV_EXECUTABLE} -p -o ${GCDA_DIR} ${GCDA}"
137+
COMMAND ${GCOV_EXECUTABLE} -p -o ${GCDA_DIR} ${GCDA} >/dev/null
138138
WORKING_DIRECTORY ${GCDA_DIR}
139139
)
140140
endforeach()

cmake/external/openblas.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ IF(NOT ${CBLAS_FOUND})
4545
PREFIX ${CBLAS_SOURCES_DIR}
4646
INSTALL_DIR ${CBLAS_INSTALL_DIR}
4747
BUILD_IN_SOURCE 1
48-
BUILD_COMMAND ${CMAKE_MAKE_PROGRAM} FC=${CMAKE_Fortran_COMPILER} CC=${CMAKE_C_COMPILER} HOSTCC=${CMAKE_C_COMPILER} NO_SHARED=1 libs netlib
48+
BUILD_COMMAND ${CMAKE_MAKE_PROGRAM} FC=${CMAKE_Fortran_COMPILER} CC=${CMAKE_C_COMPILER} HOSTCC=${CMAKE_C_COMPILER} DYNAMIC_ARCH=1 NO_SHARED=1 libs netlib
4949
INSTALL_COMMAND ${CMAKE_MAKE_PROGRAM} install NO_SHARED=1 PREFIX=<INSTALL_DIR>
5050
UPDATE_COMMAND ""
5151
CONFIGURE_COMMAND ""

cmake/external/protobuf.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
INCLUDE(ExternalProject)
1616

17-
FIND_PACKAGE(Protobuf 3.1)
17+
set(PROTOBUF_VERSION 3.1)
18+
FIND_PACKAGE(Protobuf ${PROTOBUF_VERSION})
1819

1920
IF(PROTOBUF_FOUND)
2021
EXEC_PROGRAM(${PROTOBUF_PROTOC_EXECUTABLE} ARGS --version OUTPUT_VARIABLE PROTOBUF_VERSION)

cmake/util.cmake

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -90,26 +90,6 @@ function(link_paddle_exe TARGET_NAME)
9090
${RDMA_LD_FLAGS}
9191
${RDMA_LIBS})
9292

93-
if(WITH_PYTHON)
94-
target_link_libraries(${TARGET_NAME}
95-
${PYTHON_LIBRARIES} util)
96-
endif()
97-
98-
if(WITH_GPU)
99-
target_link_libraries(${TARGET_NAME} ${CUDA_CUDART_LIBRARY})
100-
if(NOT WITH_DSO OR WITH_METRIC)
101-
target_link_libraries(${TARGET_NAME}
102-
${CUDNN_LIBRARY}
103-
${CUDA_curand_LIBRARY})
104-
CUDA_ADD_CUBLAS_TO_TARGET(${TARGET_NAME})
105-
endif()
106-
107-
check_library_exists(rt clock_gettime "time.h" HAVE_CLOCK_GETTIME )
108-
if(HAVE_CLOCK_GETTIME)
109-
target_link_libraries(${TARGET_NAME} rt)
110-
endif()
111-
endif()
112-
11393
add_dependencies(${TARGET_NAME} ${external_project_dependencies})
11494
endfunction()
11595

doc/getstarted/build_and_install/build_from_source_en.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ PaddlePaddle supports some build options.
5151
<tr><td class="left">WITH_TIMER</td><td class="left">Compile PaddlePaddle with stats timer</td></tr>
5252
<tr><td class="left">WITH_PROFILER</td><td class="left">Compile PaddlePaddle with GPU profiler</td></tr>
5353
<tr><td class="left">WITH_DOC</td><td class="left">Compile PaddlePaddle with documentation</td></tr>
54-
<tr><td class="left">ON_COVERALLS</td><td class="left">Compile PaddlePaddle with code coverage</td></tr>
54+
<tr><td class="left">WITH_COVERAGE</td><td class="left">Compile PaddlePaddle with code coverage</td></tr>
5555
<tr><td class="left">COVERALLS_UPLOAD</td><td class="left">Package code coverage data to coveralls</td></tr>
5656
<tr><td class="left">ON_TRAVIS</td><td class="left">Exclude special unit test on Travis CI</td></tr>
5757
</tbody>

paddle/api/CMakeLists.txt

Lines changed: 65 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,3 @@
1-
FUNCTION(generate_python_api target_name)
2-
ADD_CUSTOM_COMMAND(OUTPUT ${PROJ_ROOT}/paddle/py_paddle/swig_paddle.py
3-
${PROJ_ROOT}/paddle/Paddle_wrap.cxx
4-
${PROJ_ROOT}/paddle/Paddle_wrap.h
5-
COMMAND ${SWIG_EXECUTABLE} -python -c++ -outcurrentdir -I../ api/Paddle.swig
6-
&& mv ${PROJ_ROOT}/paddle/swig_paddle.py ${PROJ_ROOT}/paddle/py_paddle/swig_paddle.py
7-
DEPENDS ${PROJ_ROOT}/paddle/api/Paddle.swig
8-
${PROJ_ROOT}/paddle/api/PaddleAPI.h
9-
${external_project_dependencies}
10-
WORKING_DIRECTORY ${PROJ_ROOT}/paddle
11-
COMMENT "Generate Python API from swig")
12-
ADD_CUSTOM_TARGET(${target_name} ALL DEPENDS
13-
${PROJ_ROOT}/paddle/Paddle_wrap.cxx
14-
${PROJ_ROOT}/paddle/Paddle_wrap.h
15-
${PROJ_ROOT}/paddle/py_paddle/swig_paddle.py
16-
${external_project_dependencies})
17-
ENDFUNCTION(generate_python_api)
18-
191
set(API_SOURCES
202
Arguments.cpp
213
ConfigParser.cpp
@@ -33,65 +15,86 @@ set(API_HEADER
3315
PaddleAPI.h
3416
Internal.h)
3517

36-
add_library(paddle_api STATIC
37-
${API_SOURCES})
18+
add_library(paddle_api STATIC ${API_SOURCES})
3819
add_dependencies(paddle_api gen_proto_cpp)
3920

40-
list(LENGTH "${GFLAGS_LIBRARIES}" GFLAGS_LIBRARIES_LENGTH)
21+
INCLUDE(${SWIG_USE_FILE})
22+
INCLUDE_DIRECTORIES(${PROJ_ROOT}/paddle)
4123

42-
if(${GFLAGS_LIBRARIES_LENGTH} EQUAL 0 AND TARGET "${GFLAGS_LIBRARIES}")
43-
# Because gflags compiled by cmake, so it is imported by cmake target,
44-
# not a real library path. Get the real library path here.
45-
message(STATUS "GFLAGS Libraries is ${GFLAGS_LIBRARIES}")
46-
get_target_property(GFLAGS_LOCATION ${GFLAGS_LIBRARIES} LOCATION)
47-
message(STATUS "GFLAGS Target location is ${GFLAGS_LOCATION}")
48-
else()
49-
set(GFLAGS_LOCATION ${GFLAGS_LIBRARIES})
50-
endif()
24+
FILE(GLOB PY_PADDLE_PYTHON_FILES ${PROJ_ROOT}/paddle/py_paddle/*.py)
25+
26+
SET_SOURCE_FILES_PROPERTIES(Paddle.i PROPERTIES CPLUSPLUS ON)
27+
28+
SET(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR})
29+
SET(CMAKE_CXX_FLAGS "-std=c++11 -fPIC -Wall")
30+
IF(WITH_COVERAGE)
31+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
32+
ENDIF(WITH_COVERAGE)
5133

52-
configure_file(
53-
paddle_api_config.py.in
54-
${PROJ_ROOT}/paddle/api/paddle_api_config.py
34+
SET(SWIG_MODULE_swig_paddle_EXTRA_DEPS
35+
paddle_parameter
36+
paddle_function
37+
paddle_math
38+
paddle_utils
39+
paddle_gserver
40+
paddle_pserver
41+
paddle_api
42+
paddle_cuda
43+
paddle_trainer_lib
44+
paddle_network
45+
paddle_proto
46+
${external_project_dependencies}
5547
)
5648

57-
generate_python_api(python_swig_sources)
49+
IF(APPLE)
50+
SET(MACOS_LD_FLAGS "-undefined dynamic_lookup -Wl,-all_load")
51+
ELSE(APPLE)
52+
SET(START_GROUP "-Xlinker -start-group")
53+
SET(END_GROUP "-Xlinker -end-group")
54+
SET(ARCHIVE_START "-Wl,--whole-archive")
55+
SET(ARCHIVE_END "-Wl,--no-whole-archive")
56+
ENDIF(APPLE)
5857

59-
file(GLOB PY_PADDLE_PYTHON_FILES ${PROJ_ROOT}/paddle/py_paddle/*.py)
58+
SWIG_ADD_MODULE(swig_paddle python Paddle.i)
59+
SWIG_LINK_LIBRARIES(swig_paddle
60+
${MACOS_LD_FLAGS}
61+
${START_GROUP}
62+
${ARCHIVE_START}
63+
paddle_gserver
64+
paddle_function
65+
${METRIC_LIBS}
66+
${ARCHIVE_END}
67+
paddle_pserver
68+
paddle_trainer_lib
69+
paddle_network
70+
paddle_parameter
71+
paddle_math
72+
paddle_utils
73+
paddle_proto
74+
paddle_cuda
75+
paddle_api
76+
${CMAKE_DL_LIBS}
77+
${EXTERNAL_LIBS}
78+
${CMAKE_THREAD_LIBS_INIT}
79+
${RDMA_LD_FLAGS}
80+
${RDMA_LIBS}
81+
${START_END}
82+
)
6083

61-
# TODO(yuyang18) : make wheel name calculated by cmake
62-
add_custom_command(OUTPUT ${PROJ_ROOT}/paddle/dist/.timestamp
84+
add_custom_command(OUTPUT ${PROJ_ROOT}/paddle/py_paddle/_swig_paddle.so
85+
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/swig_paddle.py ${PROJ_ROOT}/paddle/py_paddle
86+
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/_swig_paddle.so ${PROJ_ROOT}/paddle/py_paddle
6387
COMMAND env ${py_env} ${PYTHON_EXECUTABLE} setup.py bdist_wheel
6488
COMMAND ${CMAKE_COMMAND} -E touch dist/.timestamp
6589
COMMAND rm -rf py_paddle.egg-info build
6690
WORKING_DIRECTORY ${PROJ_ROOT}/paddle
67-
DEPENDS python_swig_sources
68-
paddle_parameter
69-
paddle_function
70-
paddle_math
71-
paddle_utils
72-
paddle_gserver
73-
paddle_pserver
74-
paddle_trainer
75-
paddle_api
76-
paddle_cuda
77-
${PY_PADDLE_PYTHON_FILES}
91+
DEPENDS _swig_paddle
7892
)
7993

80-
install(DIRECTORY ${PROJ_ROOT}/paddle/dist/
81-
DESTINATION opt/paddle/share/wheels
82-
)
94+
# TODO(yuyang18) : make wheel name calculated by cmake
95+
add_custom_target(python_api_wheel ALL DEPENDS ${PROJ_ROOT}/paddle/py_paddle/_swig_paddle.so)
8396

84-
add_custom_target(python_api_wheel ALL DEPENDS
85-
${PROJ_ROOT}/paddle/dist/.timestamp)
86-
add_dependencies(python_api_wheel python_swig_sources
87-
paddle_parameter
88-
paddle_math
89-
paddle_utils
90-
paddle_gserver
91-
paddle_pserver
92-
paddle_trainer
93-
paddle_api
94-
paddle_cuda)
97+
install(DIRECTORY ${PROJ_ROOT}/paddle/dist/ DESTINATION opt/paddle/share/wheels)
9598

9699
if(WITH_TESTING)
97100
IF(NOT PY_PIP_FOUND)
File renamed without changes.

0 commit comments

Comments
 (0)