Skip to content

Commit 7e0c9f5

Browse files
committed
Merge branch 'develop' of https://github.com/PaddlePaddle/Paddle into dev_sequence_padding_op
2 parents 9cb455f + 599a326 commit 7e0c9f5

File tree

667 files changed

+14842
-2453
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

667 files changed

+14842
-2453
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ python/paddle/v2/fluid/tests/book/image_classification_resnet.inference.model/
55
python/paddle/v2/fluid/tests/book/image_classification_vgg.inference.model/
66
python/paddle/v2/fluid/tests/book/label_semantic_roles.inference.model/
77
*.DS_Store
8+
*.vs
89
build/
910
build_doc/
1011
*.user
@@ -15,6 +16,7 @@ build_doc/
1516
.cproject
1617
.pydevproject
1718
.settings/
19+
CMakeSettings.json
1820
Makefile
1921
.test_env/
2022
third_party/

CMakeLists.txt

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ message(STATUS "CXX compiler: ${CMAKE_CXX_COMPILER}, version: "
2424
"${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
2525
message(STATUS "C compiler: ${CMAKE_C_COMPILER}, version: "
2626
"${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}")
27+
if(WIN32)
28+
set(CMAKE_STATIC_LIBRARY_PREFIX lib)
29+
endif(WIN32)
2730

2831
if(NOT CMAKE_CROSSCOMPILING)
2932
find_package(CUDA QUIET)
@@ -138,12 +141,6 @@ else()
138141
set(THIRD_PARTY_BUILD_TYPE Release)
139142
endif()
140143

141-
if(WITH_MKL)
142-
option(MKL_SPLIT_GEMM "PaddlePaddle MKL gemm would split to small ones" OFF)
143-
if (MKL_SPLIT_GEMM)
144-
add_definitions(-DPADDLE_MKL_SPLIT_GEMM)
145-
endif()
146-
endif()
147144
set(WITH_MKLML ${WITH_MKL})
148145
if (NOT DEFINED WITH_MKLDNN)
149146
if (WITH_MKL AND AVX2_FOUND)
@@ -171,14 +168,21 @@ include(external/python) # download, build, install python
171168
include(external/openblas) # download, build, install openblas
172169
include(external/mkldnn) # download, build, install mkldnn
173170
include(external/swig) # download, build, install swig
174-
include(external/warpctc) # download, build, install warpctc
175171
include(external/boost) # download boost
176172
include(external/any) # download libn::any
177173
include(external/eigen) # download eigen3
178174
include(external/pybind11) # download pybind11
179175
include(external/cares)
180176
include(external/cub)
181177

178+
if (NOT WIN32)
179+
# there is no official support of snappystream, warpctc, nccl, cupti in windows
180+
include(external/snappy) # download snappy
181+
include(external/snappystream) # download snappystream
182+
include(external/warpctc) # download, build, install warpctc
183+
include(cupti)
184+
endif (NOT WIN32)
185+
182186
if(WITH_DISTRIBUTE)
183187
if(WITH_GRPC)
184188
include(external/grpc)
@@ -200,26 +204,25 @@ if(WITH_BRPC_RDMA)
200204
endif()
201205
endif()
202206

203-
include(external/snappy) # download snappy
204-
include(external/snappystream)
207+
205208
include(external/threadpool)
209+
include(flags) # set paddle compile flags
210+
include(cudnn) # set cudnn libraries, must before configure
211+
include(configure) # add paddle env configuration
206212

207-
set(WITH_ANAKIN OFF CACHE STRING "Disable Anakin first, will add it later." FORCE)
208213
if(WITH_GPU)
209214
include(cuda)
210215
include(tensorrt)
211216
include(external/anakin)
217+
elseif()
218+
set(WITH_ANAKIN OFF CACHE STRING "Anakin is used in GPU only now." FORCE)
212219
endif()
213220

214-
include(cudnn) # set cudnn libraries, must before configure
215-
include(cupti)
216-
include(configure) # add paddle env configuration
217221
include(generic) # simplify cmake module
218222
include(package) # set paddle packages
219223
include(ccache) # set ccache for compilation
220224
include(util) # set unittest and link libs
221225
include(rdma) # set rdma libraries
222-
include(flags) # set paddle compile flags
223226
include(version) # set PADDLE_VERSION
224227
include(coveralls) # set code coverage
225228
include(inference_lib) # add paddle fluid inference libraries

cmake/configure.cmake

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,22 @@ if(NOT WITH_PROFILER)
5050
endif(NOT WITH_PROFILER)
5151

5252
if(NOT CMAKE_CROSSCOMPILING)
53-
if(WITH_AVX AND AVX_FOUND)
53+
if(WITH_AVX AND AVX512F_FOUND)
54+
set(SIMD_FLAG ${AVX512F_FLAG})
55+
elseif(WITH_AVX AND AVX2_FOUND)
56+
set(SIMD_FLAG ${AVX2_FLAG})
57+
elseif(WITH_AVX AND AVX_FOUND)
5458
set(SIMD_FLAG ${AVX_FLAG})
5559
elseif(SSE3_FOUND)
5660
set(SIMD_FLAG ${SSE3_FLAG})
5761
endif()
5862
endif()
5963

64+
if(WIN32)
65+
# windows stupid compile option for all targets.
66+
add_definitions(-D_XKEYCHECK_H)
67+
endif(WIN32)
68+
6069
if(NOT WITH_GOLANG)
6170
add_definitions(-DPADDLE_WITHOUT_GOLANG)
6271
endif(NOT WITH_GOLANG)
@@ -99,12 +108,21 @@ if(WITH_GPU)
99108
endif()
100109
if(WITH_ANAKIN)
101110
if(${CUDA_VERSION_MAJOR} VERSION_LESS 8)
102-
message(FATAL_ERROR "Anakin needs CUDA >= 8.0 to compile")
111+
message(WARNING "Anakin needs CUDA >= 8.0 to compile. Force WITH_ANAKIN=OFF")
112+
set(WITH_ANAKIN OFF CACHE STRING "Anakin is valid only when CUDA >= 8.0." FORCE)
103113
endif()
104114
if(${CUDNN_MAJOR_VERSION} VERSION_LESS 7)
105-
message(FATAL_ERROR "Anakin needs CUDNN >= 7.0 to compile")
115+
message(WARNING "Anakin needs CUDNN >= 7.0 to compile. Force WITH_ANAKIN=OFF")
116+
set(WITH_ANAKIN OFF CACHE STRING "Anakin is valid only when CUDNN >= 7.0." FORCE)
106117
endif()
107118
endif()
119+
if(WITH_ANAKIN)
120+
# NOTICE(minqiyang): the end slash is important because $CUDNN_INCLUDE_DIR
121+
# is a softlink to real cudnn.h directory
122+
set(ENV{CUDNN_INCLUDE_DIR} "${CUDNN_INCLUDE_DIR}/")
123+
get_filename_component(CUDNN_LIBRARY_DIR ${CUDNN_LIBRARY} DIRECTORY)
124+
set(ENV{CUDNN_LIBRARY} ${CUDNN_LIBRARY_DIR})
125+
endif()
108126
elseif(WITH_AMD_GPU)
109127
add_definitions(-DPADDLE_WITH_HIP)
110128
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__HIP_PLATFORM_HCC__")

cmake/cudnn.cmake

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,25 @@ list(APPEND CUDNN_CHECK_LIBRARY_DIRS
2525
$ENV{CUDNN_ROOT}
2626
$ENV{CUDNN_ROOT}/lib64
2727
$ENV{CUDNN_ROOT}/lib
28-
/usr/lib)
29-
find_library(CUDNN_LIBRARY NAMES libcudnn.so libcudnn.dylib # libcudnn_static.a
28+
/usr/lib
29+
${CUDA_TOOLKIT_ROOT_DIR}
30+
${CUDA_TOOLKIT_ROOT_DIR}/lib/x64
31+
)
32+
set(CUDNN_LIB_NAME "")
33+
if (LINUX)
34+
set(CUDNN_LIB_NAME "libcudnn.so")
35+
endif(LINUX)
36+
37+
if(WIN32)
38+
# only support cudnn7
39+
set(CUDNN_LIB_NAME "cudnn.lib" "cudnn64_7.dll")
40+
endif(WIN32)
41+
42+
if(Apple)
43+
set(CUDNN_LIB_NAME "libcudnn.dylib" "libcudnn.so")
44+
endif(Apple)
45+
46+
find_library(CUDNN_LIBRARY NAMES ${CUDNN_LIB_NAME} # libcudnn_static.a
3047
PATHS ${CUDNN_CHECK_LIBRARY_DIRS} ${CUDNN_INCLUDE_DIR} ${__libpath_hist}
3148
NO_DEFAULT_PATH
3249
DOC "Path to cuDNN library.")

cmake/external/anakin.cmake

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ if (NOT WITH_ANAKIN)
22
return()
33
endif()
44

5+
option(ANAKIN_ENABLE_OP_TIMER "Get more detailed information with Anakin op time" OFF)
6+
if(ANAKIN_ENABLE_OP_TIMER)
7+
add_definitions(-DPADDLE_ANAKIN_ENABLE_OP_TIMER)
8+
endif()
9+
510
INCLUDE(ExternalProject)
611
set(ANAKIN_SOURCE_DIR ${THIRD_PARTY_PATH}/anakin)
712
# the anakin install dir is only default one now
@@ -11,33 +16,45 @@ set(ANAKIN_LIBRARY ${ANAKIN_INSTALL_DIR})
1116
set(ANAKIN_SHARED_LIB ${ANAKIN_LIBRARY}/libanakin.so)
1217
set(ANAKIN_SABER_LIB ${ANAKIN_LIBRARY}/libanakin_saber_common.so)
1318

14-
# TODO(luotao): ANAKIN_MODLE_URL will move to demo ci later.
15-
set(ANAKIN_MODLE_URL "http://paddle-inference-dist.bj.bcebos.com/mobilenet_v2.anakin.bin")
19+
# TODO(luotao): ANAKIN_MODLE_URL etc will move to demo ci later.
20+
set(INFERENCE_URL "http://paddle-inference-dist.bj.bcebos.com")
21+
set(ANAKIN_MODLE_URL "${INFERENCE_URL}/mobilenet_v2.anakin.bin")
22+
set(ANAKIN_RNN_MODLE_URL "${INFERENCE_URL}/anakin_test%2Fditu_rnn.anakin2.model.bin")
23+
set(ANAKIN_RNN_DATA_URL "${INFERENCE_URL}/anakin_test%2Fditu_rnn_data.txt")
1624
execute_process(COMMAND bash -c "mkdir -p ${ANAKIN_SOURCE_DIR}")
17-
execute_process(COMMAND bash -c "cd ${ANAKIN_SOURCE_DIR}; wget -q --no-check-certificate ${ANAKIN_MODLE_URL}")
25+
execute_process(COMMAND bash -c "cd ${ANAKIN_SOURCE_DIR}; wget -q --no-check-certificate ${ANAKIN_MODLE_URL} -N")
26+
execute_process(COMMAND bash -c "cd ${ANAKIN_SOURCE_DIR}; wget -q --no-check-certificate ${ANAKIN_RNN_MODLE_URL} -N")
27+
execute_process(COMMAND bash -c "cd ${ANAKIN_SOURCE_DIR}; wget -q --no-check-certificate ${ANAKIN_RNN_DATA_URL} -N")
1828

1929
include_directories(${ANAKIN_INCLUDE})
2030
include_directories(${ANAKIN_INCLUDE}/saber/)
31+
include_directories(${ANAKIN_INCLUDE}/saber/core/)
32+
include_directories(${ANAKIN_INCLUDE}/saber/funcs/impl/x86/)
33+
include_directories(${ANAKIN_INCLUDE}/saber/funcs/impl/cuda/base/cuda_c/)
2134

22-
set(ANAKIN_COMPILE_EXTRA_FLAGS
35+
set(ANAKIN_COMPILE_EXTRA_FLAGS
2336
-Wno-error=unused-but-set-variable -Wno-unused-but-set-variable
24-
-Wno-error=unused-variable -Wno-unused-variable
37+
-Wno-error=unused-variable -Wno-unused-variable
2538
-Wno-error=format-extra-args -Wno-format-extra-args
2639
-Wno-error=comment -Wno-comment
2740
-Wno-error=format -Wno-format
41+
-Wno-error=maybe-uninitialized -Wno-maybe-uninitialized
2842
-Wno-error=switch -Wno-switch
29-
-Wno-error=return-type -Wno-return-type
43+
-Wno-error=return-type -Wno-return-type
3044
-Wno-error=non-virtual-dtor -Wno-non-virtual-dtor
45+
-Wno-error=ignored-qualifiers
46+
-Wno-ignored-qualifiers
3147
-Wno-sign-compare
32-
-Wno-reorder
48+
-Wno-reorder
3349
-Wno-error=cpp)
3450

3551
ExternalProject_Add(
3652
extern_anakin
3753
${EXTERNAL_PROJECT_LOG_ARGS}
38-
# TODO(luotao): use PaddlePaddle/Anakin later
54+
DEPENDS ${MKLML_PROJECT}
55+
# Anakin codes error on Intel(R) Xeon(R) Gold 5117 CPU, temporary do not compile avx512 related code.
3956
GIT_REPOSITORY "https://github.com/luotao1/Anakin"
40-
GIT_TAG "3957ae9263eaa0b1986758dac60a88852afb09be"
57+
GIT_TAG "211d1fc5d813d70c0c14072f9083cf25f40940ea"
4158
PREFIX ${ANAKIN_SOURCE_DIR}
4259
UPDATE_COMMAND ""
4360
CMAKE_ARGS -DUSE_GPU_PLACE=YES
@@ -46,6 +63,8 @@ ExternalProject_Add(
4663
-DPROTOBUF_ROOT=${THIRD_PARTY_PATH}/install/protobuf
4764
-DMKLML_ROOT=${THIRD_PARTY_PATH}/install/mklml
4865
-DCUDNN_ROOT=${CUDNN_ROOT}
66+
-DCUDNN_INCLUDE_DIR=${CUDNN_INCLUDE_DIR}
67+
-DENABLE_OP_TIMER=${ANAKIN_ENABLE_OP_TIMER}
4968
${EXTERNAL_OPTIONAL_ARGS}
5069
CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${ANAKIN_INSTALL_DIR}
5170
)

cmake/external/boost.cmake

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,29 +28,36 @@ if((NOT DEFINED BOOST_TAR) OR (NOT DEFINED BOOST_URL))
2828
set(BOOST_TAR "boost_1_41_0" CACHE STRING "" FORCE)
2929
set(BOOST_URL "http://paddlepaddledeps.cdn.bcebos.com/${BOOST_TAR}.tar.gz" CACHE STRING "" FORCE)
3030
endif()
31-
MESSAGE(STATUS "BOOST_TAR: ${BOOST_TAR}, BOOST_URL: ${BOOST_URL}")
31+
IF (WIN32)
32+
MESSAGE(WARNING, "In windows, boost can not be downloaded automaticlly, please build it manually and put it at " ${THIRD_PARTY_PATH}install/boost)
33+
else()
34+
MESSAGE(STATUS "BOOST_TAR: ${BOOST_TAR}, BOOST_URL: ${BOOST_URL}")
35+
ENDIF(WIN32)
36+
3237
set(BOOST_SOURCES_DIR ${THIRD_PARTY_PATH}/boost)
3338
set(BOOST_DOWNLOAD_DIR "${BOOST_SOURCES_DIR}/src/${BOOST_PROJECT}")
3439
set(BOOST_INCLUDE_DIR "${BOOST_DOWNLOAD_DIR}/${BOOST_TAR}" CACHE PATH "boost include directory." FORCE)
3540
set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM 1)
3641

3742
include_directories(${BOOST_INCLUDE_DIR})
3843

44+
if (NOT WIN32)
3945
ExternalProject_Add(
4046
${BOOST_PROJECT}
4147
${EXTERNAL_PROJECT_LOG_ARGS}
4248
DOWNLOAD_DIR ${BOOST_DOWNLOAD_DIR}
4349
DOWNLOAD_COMMAND wget --no-check-certificate ${BOOST_URL} -c -q -O ${BOOST_TAR}.tar.gz
44-
&& tar zxf ${BOOST_TAR}.tar.gz
50+
&& tar zxf ${BOOST_TAR}.tar.gz
4551
DOWNLOAD_NO_PROGRESS 1
4652
PREFIX ${BOOST_SOURCES_DIR}
4753
CONFIGURE_COMMAND ""
4854
BUILD_COMMAND ""
4955
INSTALL_COMMAND ""
5056
UPDATE_COMMAND ""
5157
)
58+
endif(NOT WIN32)
5259

53-
if (${CMAKE_VERSION} VERSION_LESS "3.3.0")
60+
if (${CMAKE_VERSION} VERSION_LESS "3.3.0" OR NOT WIN32)
5461
set(dummyfile ${CMAKE_CURRENT_BINARY_DIR}/boost_dummy.c)
5562
file(WRITE ${dummyfile} "const char *dummy = \"${dummyfile}\";")
5663
add_library(boost STATIC ${dummyfile})

cmake/external/gflags.cmake

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ SET(GFLAGS_SOURCES_DIR ${THIRD_PARTY_PATH}/gflags)
1818
SET(GFLAGS_INSTALL_DIR ${THIRD_PARTY_PATH}/install/gflags)
1919
SET(GFLAGS_INCLUDE_DIR "${GFLAGS_INSTALL_DIR}/include" CACHE PATH "gflags include directory." FORCE)
2020
IF(WIN32)
21-
set(GFLAGS_LIBRARIES "${GFLAGS_INSTALL_DIR}/lib/gflags.lib" CACHE FILEPATH "GFLAGS_LIBRARIES" FORCE)
21+
set(GFLAGS_LIBRARIES "${GFLAGS_INSTALL_DIR}/lib/libgflags.lib" CACHE FILEPATH "GFLAGS_LIBRARIES" FORCE)
2222
ELSE(WIN32)
2323
set(GFLAGS_LIBRARIES "${GFLAGS_INSTALL_DIR}/lib/libgflags.a" CACHE FILEPATH "GFLAGS_LIBRARIES" FORCE)
2424
ENDIF(WIN32)
@@ -45,7 +45,13 @@ ExternalProject_Add(
4545
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
4646
-DCMAKE_BUILD_TYPE:STRING=${THIRD_PARTY_BUILD_TYPE}
4747
)
48-
48+
IF(WIN32)
49+
IF(NOT EXISTS "${GFLAGS_INSTALL_DIR}/lib/libgflags.lib")
50+
add_custom_command(TARGET extern_gflags POST_BUILD
51+
COMMAND cmake -E rename ${GFLAGS_INSTALL_DIR}/lib/gflags_static.lib ${GFLAGS_INSTALL_DIR}/lib/libgflags.lib
52+
)
53+
ENDIF()
54+
ENDIF(WIN32)
4955
ADD_LIBRARY(gflags STATIC IMPORTED GLOBAL)
5056
SET_PROPERTY(TARGET gflags PROPERTY IMPORTED_LOCATION ${GFLAGS_LIBRARIES})
5157
ADD_DEPENDENCIES(gflags extern_gflags)
@@ -60,3 +66,4 @@ IF(WITH_C_API)
6066
INSTALL(FILES ${GFLAGS_LIBRARIES} DESTINATION third_party/gflags/lib)
6167
ENDIF()
6268
ENDIF()
69+

cmake/external/glog.cmake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@ ExternalProject_Add(
6060
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
6161
-DCMAKE_BUILD_TYPE:STRING=${THIRD_PARTY_BUILD_TYPE}
6262
)
63+
IF(WIN32)
64+
IF(NOT EXISTS "${GLOG_INSTALL_DIR}/lib/libglog.lib")
65+
add_custom_command(TARGET extern_glog POST_BUILD
66+
COMMAND cmake -E rename ${GLOG_INSTALL_DIR}/lib/glog.lib ${GLOG_INSTALL_DIR}/lib/libglog.lib
67+
)
68+
ENDIF()
69+
ENDIF(WIN32)
6370

6471
ADD_LIBRARY(glog STATIC IMPORTED GLOBAL)
6572
SET_PROPERTY(TARGET glog PROPERTY IMPORTED_LOCATION ${GLOG_LIBRARIES})

cmake/external/mkldnn.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ ExternalProject_Add(
5454
${EXTERNAL_PROJECT_LOG_ARGS}
5555
DEPENDS ${MKLDNN_DEPENDS}
5656
GIT_REPOSITORY "https://github.com/01org/mkl-dnn.git"
57-
GIT_TAG "a29d8487a63afca3d5b8c5bbdbb473cf8ccc6e51"
57+
GIT_TAG "64e03a1939e0d526aa8e9f2e3f7dc0ad8d372944"
5858
PREFIX ${MKLDNN_SOURCES_DIR}
5959
UPDATE_COMMAND ""
6060
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}

0 commit comments

Comments
 (0)