Skip to content

Commit d9a1f3e

Browse files
wopeizldzhwinter
authored andcommitted
Windows/online (#14474)
* add recordio support * disable the openblas multi-thread on windows since no support adjust the python script * code style * code style test=develop * add create_recordio_file_reader back * fix code style test=develop * fix the gtest.cmake on windows * fix cc_test on windows * fix the win build test=develop * remove fused compile support on windows test=develop * add the jit support test=develop * add the jit support, test=develop * add the jit support, test=develop * add the jit back fix compile error on windows * rollback test=develop * test case fix * disable DSO by default on windows * exclude warpctc_op on windows * exclude the dynload_warpctc out on windows test=develop * fix the scripts error test=develop * disable avx on windows by default test=develop * re-organize the cmake file * disable mkl on windows by default * add warp_ctc back * fix the dependency * fix the dependency * fix the build issue on windows * remove unsupported flag on windows * code style * code style test=develop * fix issue * add profiler, parallel_executor back * clean up the pre-definitions on windows * fix build issue * test=develop
1 parent dc75cc9 commit d9a1f3e

Some content is hidden

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

44 files changed

+483
-554
lines changed

CMakeLists.txt

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,21 @@ if (APPLE OR WIN32)
130130
"Disable MKL for building on mac and windows" FORCE)
131131
endif()
132132

133+
if (WIN32)
134+
set(WITH_AVX OFF CACHE STRING
135+
"Disable AVX when compiling for Windows" FORCE)
136+
set(WITH_DSO OFF CACHE STRING
137+
"Disable DSO when compiling for Windows" FORCE)
138+
set(WITH_MKL OFF CACHE STRING
139+
"Disable MKL when compiling for Windows" FORCE)
140+
set(WITH_DISTRIBUTE OFF CACHE STRING
141+
"Disable DISTRIBUTE when compiling for Windows" FORCE)
142+
set(WITH_C_API OFF CACHE STRING
143+
"Disable C_API when compiling for Windows" FORCE)
144+
set(WITH_FLUID_ONLY ON CACHE STRING
145+
"Enable FLUID_ONLY when compiling for Windows" FORCE)
146+
endif()
147+
133148
set(THIRD_PARTY_PATH "${CMAKE_BINARY_DIR}/third_party" CACHE STRING
134149
"A path setting third party libraries download & build directories.")
135150

@@ -190,11 +205,11 @@ include(external/pybind11) # download pybind11
190205
include(external/cares)
191206
include(external/cub)
192207
include(external/xxhash) # download xxhash
193-
194-
if (NOT WIN32)
195-
# there is no official support of snappystream, warpctc, nccl, cupti in windows
196208
include(external/snappy) # download snappy
197209
include(external/snappystream) # download snappystream
210+
211+
if (NOT WIN32)
212+
# there is no official support of warpctc, nccl, cupti in windows
198213
include(external/warpctc) # download, build, install warpctc
199214
include(cupti)
200215
endif (NOT WIN32)

cmake/external/gtest.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,11 @@ IF(WITH_TESTING)
5050
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
5151
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
5252
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
53+
-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
54+
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
5355
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
56+
-DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
57+
-DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
5458
-DCMAKE_INSTALL_PREFIX=${GTEST_INSTALL_DIR}
5559
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
5660
-DBUILD_GMOCK=ON

cmake/external/snappy.cmake

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@ set(SNAPPY_SOURCES_DIR ${THIRD_PARTY_PATH}/snappy)
2424
set(SNAPPY_INSTALL_DIR ${THIRD_PARTY_PATH}/install/snappy)
2525
set(SNAPPY_INCLUDE_DIR "${SNAPPY_INSTALL_DIR}/include" CACHE PATH "snappy include directory." FORCE)
2626

27-
set(SNAPPY_LIBRARIES "${SNAPPY_INSTALL_DIR}/lib/libsnappy.a")
27+
if (WIN32)
28+
set(SNAPPY_LIBRARIES "${SNAPPY_INSTALL_DIR}/lib/snappy.lib")
29+
else(WIN32)
30+
set(SNAPPY_LIBRARIES "${SNAPPY_INSTALL_DIR}/lib/libsnappy.a")
31+
endif (WIN32)
2832

2933
ExternalProject_Add(
3034
extern_snappy
@@ -34,8 +38,12 @@ ExternalProject_Add(
3438
UPDATE_COMMAND ""
3539
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
3640
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
37-
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
3841
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
42+
-DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
43+
-DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
44+
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
45+
-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
46+
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
3947
-DCMAKE_INSTALL_PREFIX=${SNAPPY_INSTALL_DIR}
4048
-DCMAKE_INSTALL_LIBDIR=${SNAPPY_INSTALL_DIR}/lib
4149
-DCMAKE_POSITION_INDEPENDENT_CODE=ON

cmake/external/snappystream.cmake

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,36 +18,45 @@ ENDIF()
1818

1919
include (ExternalProject)
2020

21-
# NOTE: snappy is needed when linking with recordio
22-
2321
set(SNAPPYSTREAM_SOURCES_DIR ${THIRD_PARTY_PATH}/snappy_stream)
2422
set(SNAPPYSTREAM_INSTALL_DIR ${THIRD_PARTY_PATH}/install/snappy_stream)
2523
set(SNAPPYSTREAM_INCLUDE_DIR "${SNAPPYSTREAM_INSTALL_DIR}/include" CACHE PATH "snappy stream include directory." FORCE)
2624

27-
set(SNAPPYSTREAM_LIBRARIES "${SNAPPYSTREAM_INSTALL_DIR}/lib/libsnappystream.a")
28-
29-
ExternalProject_Add(
30-
extern_snappystream
31-
GIT_REPOSITORY "https://github.com/hoxnox/snappystream.git"
32-
GIT_TAG "0.2.8"
33-
PREFIX ${SNAPPYSTREAM_SOURCES_DIR}
34-
UPDATE_COMMAND ""
35-
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
36-
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
37-
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
38-
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
39-
-DCMAKE_INSTALL_PREFIX=${SNAPPY_INSTALL_DIR}
40-
-DCMAKE_INSTALL_LIBDIR=${SNAPPY_INSTALL_DIR}/lib
41-
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
42-
-DCMAKE_BUILD_TYPE=${THIRD_PARTY_BUILD_TYPE}
43-
-DSNAPPY_ROOT=${SNAPPY_INSTALL_DIR}
44-
${EXTERNAL_OPTIONAL_ARGS}
45-
CMAKE_CACHE_ARGS
46-
-DCMAKE_INSTALL_PREFIX:PATH=${SNAPPYSTREAM_INSTALL_DIR}
47-
-DCMAKE_INSTALL_LIBDIR:PATH=${SNAPPYSTREAM_INSTALL_DIR}/lib
48-
-DCMAKE_BUILD_TYPE:STRING=${THIRD_PARTY_BUILD_TYPE}
49-
DEPENDS snappy
50-
)
25+
if(WIN32)
26+
# Fix me, VS2015 come without VLA support
27+
set(SNAPPYSTREAM_LIBRARIES "${SNAPPYSTREAM_INSTALL_DIR}/lib/snappystream.lib")
28+
MESSAGE(WARNING, "In windows, snappystream has no compile support for windows,
29+
please build it manually and put it at " ${SNAPPYSTREAM_INSTALL_DIR})
30+
else(WIN32)
31+
set(SNAPPYSTREAM_LIBRARIES "${SNAPPYSTREAM_INSTALL_DIR}/lib/libsnappystream.a")
32+
33+
ExternalProject_Add(
34+
extern_snappystream
35+
GIT_REPOSITORY "https://github.com/hoxnox/snappystream.git"
36+
GIT_TAG "0.2.8"
37+
PREFIX ${SNAPPYSTREAM_SOURCES_DIR}
38+
UPDATE_COMMAND ""
39+
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
40+
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
41+
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
42+
-DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
43+
-DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
44+
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
45+
-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
46+
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
47+
-DCMAKE_INSTALL_PREFIX=${SNAPPY_INSTALL_DIR}
48+
-DCMAKE_INSTALL_LIBDIR=${SNAPPY_INSTALL_DIR}/lib
49+
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
50+
-DCMAKE_BUILD_TYPE=${THIRD_PARTY_BUILD_TYPE}
51+
-DSNAPPY_ROOT=${SNAPPY_INSTALL_DIR}
52+
${EXTERNAL_OPTIONAL_ARGS}
53+
CMAKE_CACHE_ARGS
54+
-DCMAKE_INSTALL_PREFIX:PATH=${SNAPPYSTREAM_INSTALL_DIR}
55+
-DCMAKE_INSTALL_LIBDIR:PATH=${SNAPPYSTREAM_INSTALL_DIR}/lib
56+
-DCMAKE_BUILD_TYPE:STRING=${THIRD_PARTY_BUILD_TYPE}
57+
DEPENDS snappy
58+
)
59+
endif(WIN32)
5160

5261
add_library(snappystream STATIC IMPORTED GLOBAL)
5362
set_property(TARGET snappystream PROPERTY IMPORTED_LOCATION ${SNAPPYSTREAM_LIBRARIES})

cmake/generic.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,9 @@ function(cc_test TARGET_NAME)
351351
cmake_parse_arguments(cc_test "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
352352
add_executable(${TARGET_NAME} ${cc_test_SRCS})
353353
target_link_libraries(${TARGET_NAME} ${cc_test_DEPS} paddle_gtest_main lod_tensor memory gtest gflags glog)
354+
if(WIN32)
355+
target_link_libraries(${TARGET_NAME} shlwapi)
356+
endif(WIN32)
354357
add_dependencies(${TARGET_NAME} ${cc_test_DEPS} paddle_gtest_main lod_tensor memory gtest gflags glog)
355358
add_test(NAME ${TARGET_NAME}
356359
COMMAND ${TARGET_NAME} ${cc_test_ARGS}

cmake/operators.cmake

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,7 @@ function(op_library TARGET)
8484
endif()
8585
if (WIN32)
8686
# remove windows unsupported op, because windows has no nccl, no warpctc such ops.
87-
foreach(windows_unsupport_op "nccl_op" "gen_nccl_id_op" "warpctc_op" "hierarchical_sigmoid_op"
88-
"crf_decoding_op" "select_op" "lstmp_op" "gru_op" "fusion_gru_op" "lstm_op" "fusion_lstm_op" "cumsum_op"
89-
"fusion_seqconv_eltadd_relu_op" "channel_send_op" "channel_create_op" "channel_close_op" "channel_recv_op")
87+
foreach(windows_unsupport_op "nccl_op" "gen_nccl_id_op" "warpctc_op")
9088
if ("${TARGET}" STREQUAL "${windows_unsupport_op}")
9189
return()
9290
endif()

cmake/simd.cmake

Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -57,43 +57,46 @@ int main()
5757
return 0;
5858
}" SSE3_FOUND)
5959

60-
# Check AVX
61-
set(CMAKE_REQUIRED_FLAGS ${AVX_FLAG})
62-
set(AVX_FOUND_EXITCODE 1 CACHE STRING "Result from TRY_RUN" FORCE)
63-
CHECK_CXX_SOURCE_RUNS("
64-
#include <immintrin.h>
65-
int main()
66-
{
67-
__m256 a = _mm256_set_ps (-1.0f, 2.0f, -3.0f, 4.0f, -1.0f, 2.0f, -3.0f, 4.0f);
68-
__m256 b = _mm256_set_ps (1.0f, 2.0f, 3.0f, 4.0f, 1.0f, 2.0f, 3.0f, 4.0f);
69-
__m256 result = _mm256_add_ps (a, b);
70-
return 0;
71-
}" AVX_FOUND)
60+
# disable AVX by default on windows
61+
if(NOT WIN32)
62+
# Check AVX
63+
set(CMAKE_REQUIRED_FLAGS ${AVX_FLAG})
64+
set(AVX_FOUND_EXITCODE 1 CACHE STRING "Result from TRY_RUN" FORCE)
65+
CHECK_CXX_SOURCE_RUNS("
66+
#include <immintrin.h>
67+
int main()
68+
{
69+
__m256 a = _mm256_set_ps (-1.0f, 2.0f, -3.0f, 4.0f, -1.0f, 2.0f, -3.0f, 4.0f);
70+
__m256 b = _mm256_set_ps (1.0f, 2.0f, 3.0f, 4.0f, 1.0f, 2.0f, 3.0f, 4.0f);
71+
__m256 result = _mm256_add_ps (a, b);
72+
return 0;
73+
}" AVX_FOUND)
7274

73-
# Check AVX 2
74-
set(CMAKE_REQUIRED_FLAGS ${AVX2_FLAG})
75-
set(AVX2_FOUND_EXITCODE 1 CACHE STRING "Result from TRY_RUN" FORCE)
76-
CHECK_CXX_SOURCE_RUNS("
77-
#include <immintrin.h>
78-
int main()
79-
{
80-
__m256i a = _mm256_set_epi32 (-1, 2, -3, 4, -1, 2, -3, 4);
81-
__m256i result = _mm256_abs_epi32 (a);
82-
return 0;
83-
}" AVX2_FOUND)
75+
# Check AVX 2
76+
set(CMAKE_REQUIRED_FLAGS ${AVX2_FLAG})
77+
set(AVX2_FOUND_EXITCODE 1 CACHE STRING "Result from TRY_RUN" FORCE)
78+
CHECK_CXX_SOURCE_RUNS("
79+
#include <immintrin.h>
80+
int main()
81+
{
82+
__m256i a = _mm256_set_epi32 (-1, 2, -3, 4, -1, 2, -3, 4);
83+
__m256i result = _mm256_abs_epi32 (a);
84+
return 0;
85+
}" AVX2_FOUND)
8486

85-
# Check AVX512F
86-
set(CMAKE_REQUIRED_FLAGS ${AVX512F_FLAG})
87-
set(AVX512F_FOUND_EXITCODE 1 CACHE STRING "Result from TRY_RUN" FORCE)
88-
CHECK_CXX_SOURCE_RUNS("
89-
#include <immintrin.h>
90-
int main()
91-
{
92-
__m512i a = _mm512_set_epi32 (-1, 2, -3, 4, -1, 2, -3, 4,
93-
13, -5, 6, -7, 9, 2, -6, 3);
94-
__m512i result = _mm512_abs_epi32 (a);
95-
return 0;
96-
}" AVX512F_FOUND)
87+
# Check AVX512F
88+
set(CMAKE_REQUIRED_FLAGS ${AVX512F_FLAG})
89+
set(AVX512F_FOUND_EXITCODE 1 CACHE STRING "Result from TRY_RUN" FORCE)
90+
CHECK_CXX_SOURCE_RUNS("
91+
#include <immintrin.h>
92+
int main()
93+
{
94+
__m512i a = _mm512_set_epi32 (-1, 2, -3, 4, -1, 2, -3, 4,
95+
13, -5, 6, -7, 9, 2, -6, 3);
96+
__m512i result = _mm512_abs_epi32 (a);
97+
return 0;
98+
}" AVX512F_FOUND)
99+
endif(NOT WIN32)
97100

98101
set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_RETAINED})
99102
mark_as_advanced(MMX_FOUND SSE2_FOUND SSE3_FOUND AVX_FOUND AVX2_FOUND AVX512F_FOUND)

paddle/fluid/CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,9 @@ add_subdirectory(platform)
33
add_subdirectory(framework)
44
add_subdirectory(operators)
55
add_subdirectory(string)
6-
7-
add_subdirectory(pybind)
8-
if (NOT WIN32)
96
add_subdirectory(recordio)
10-
endif(NOT WIN32)
7+
add_subdirectory(pybind)
118

129
# NOTE: please add subdirectory inference at last.
1310
add_subdirectory(inference)
14-
1511
add_subdirectory(train)

paddle/fluid/framework/CMakeLists.txt

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,7 @@ function(windows_symbolic TARGET)
3131
endfunction()
3232

3333
add_subdirectory(ir)
34-
if (NOT WIN32)
3534
add_subdirectory(details)
36-
endif (NOT WIN32)
3735
# ddim lib
3836
proto_library(framework_proto SRCS framework.proto)
3937

@@ -68,11 +66,7 @@ if(WITH_GPU)
6866
else()
6967
cc_test(mixed_vector_test SRCS mixed_vector_test.cc DEPS place memory device_context tensor)
7068
endif()
71-
if (NOT WIN32)
72-
cc_library(lod_tensor SRCS lod_tensor.cc DEPS ddim place tensor framework_proto recordio version)
73-
else()
74-
cc_library(lod_tensor SRCS lod_tensor.cc DEPS ddim place tensor framework_proto version)
75-
endif (NOT WIN32)
69+
cc_library(lod_tensor SRCS lod_tensor.cc DEPS ddim place tensor framework_proto recordio version)
7670

7771
cc_test(lod_tensor_test SRCS lod_tensor_test.cc DEPS lod_tensor memory)
7872
nv_test(lod_tensor_gpu_test SRCS lod_tensor_test.cu DEPS lod_tensor)
@@ -122,13 +116,8 @@ cc_test(op_proto_maker_test SRCS op_proto_maker_test.cc DEPS op_proto_maker)
122116
cc_library(op_info SRCS op_info.cc DEPS attribute framework_proto)
123117
cc_library(shape_inference SRCS shape_inference.cc DEPS ddim attribute device_context)
124118

125-
if (NOT WIN32)
126119
cc_library(operator SRCS operator.cc DEPS op_info device_context tensor scope glog
127120
shape_inference data_transform lod_tensor profiler)
128-
else()
129-
cc_library(operator SRCS operator.cc DEPS op_info device_context tensor scope glog
130-
shape_inference data_transform lod_tensor)
131-
endif(NOT WIN32)
132121

133122
cc_test(operator_test SRCS operator_test.cc DEPS operator op_registry device_context)
134123

@@ -183,12 +172,10 @@ else()
183172
cc_test(test_naive_executor SRCS naive_executor_test.cc DEPS naive_executor elementwise_add_op)
184173
endif()
185174

186-
if (NOT WIN32)
187175
cc_library(parallel_executor SRCS parallel_executor.cc DEPS
188176
threaded_ssa_graph_executor scope_buffered_ssa_graph_executor
189177
graph build_strategy
190178
fast_threaded_ssa_graph_executor)
191-
endif() # NOT WIN32
192179

193180
cc_library(prune SRCS prune.cc DEPS framework_proto)
194181
cc_test(prune_test SRCS prune_test.cc DEPS op_info prune recurrent_op device_context)

paddle/fluid/framework/details/fast_threaded_ssa_graph_executor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
// limitations under the License.
1414

1515
#pragma once
16+
#include <ThreadPool.h>
1617
#include <string>
1718
#include <vector>
18-
#include "ThreadPool.h"
1919
#include "paddle/fluid/framework/blocking_queue.h"
2020
#include "paddle/fluid/framework/details/exception_holder.h"
2121
#include "paddle/fluid/framework/details/execution_strategy.h"

0 commit comments

Comments
 (0)