Skip to content

Commit accf284

Browse files
authored
Fix ninja compilation bug and warning on windows (#32987)
* fix ninja compilation bug on windows * polish windows ci * polish windows ci
1 parent f91e0f4 commit accf284

File tree

10 files changed

+65
-58
lines changed

10 files changed

+65
-58
lines changed

CMakeLists.txt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ set(PADDLE_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
2020

2121
include(system)
2222

23+
# Note(zhouwei): Ninja Generator will set CMAKE_BUILD_TYPE to Debug
24+
if(NOT CMAKE_BUILD_TYPE)
25+
set(CMAKE_BUILD_TYPE "Release" CACHE STRING
26+
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel"
27+
FORCE)
28+
endif()
29+
2330
project(paddle CXX C)
2431

2532
# enable language CUDA
@@ -213,12 +220,6 @@ if(NOT PY_VERSION)
213220
endif()
214221
set(PYBIND11_PYTHON_VERSION ${PY_VERSION})
215222

216-
# CMAKE_BUILD_TYPE
217-
if(NOT CMAKE_BUILD_TYPE)
218-
set(CMAKE_BUILD_TYPE "Release" CACHE STRING
219-
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel"
220-
FORCE)
221-
endif()
222223

223224
# the type of sanitizer, options are: Address, Leak, Memory, Thread, Undefined. Default: OFF
224225
if(SANITIZER_TYPE AND NOT "${SANITIZER_TYPE}" MATCHES "^(Address|Leak|Memory|Thread|Undefined)$")

cmake/cuda.cmake

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -205,23 +205,16 @@ set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-extended-lambda")
205205
if(WIN32)
206206
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler \"/wd4244 /wd4267 /wd4819 \"")
207207
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler /bigobj")
208-
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
209-
# match the cl's _ITERATOR_DEBUG_LEVEL
210-
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler \"-g -G -D_DEBUG\"")
211-
if(MSVC_STATIC_CRT)
212-
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler /MTd")
213-
else()
214-
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler /MDd")
215-
endif()
216-
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
217-
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler \"-DNDEBUG\"")
218-
if(MSVC_STATIC_CRT)
219-
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler /MT")
220-
else()
221-
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler /MD")
222-
endif()
223-
else()
224-
message(FATAL "Windows only support Release or Debug build now. Please set visual studio build type to Release/Debug, x64 build.")
208+
if(MSVC_STATIC_CRT)
209+
set(CMAKE_CUDA_FLAGS_DEBUG "${CMAKE_CUDA_FLAGS_DEBUG} -Xcompiler /MTd")
210+
set(CMAKE_CUDA_FLAGS_RELEASE "${CMAKE_CUDA_FLAGS_RELEASE} -Xcompiler /MT")
211+
foreach(flag_var
212+
CMAKE_CUDA_FLAGS CMAKE_CUDA_FLAGS_DEBUG CMAKE_CUDA_FLAGS_RELEASE
213+
CMAKE_CUDA_FLAGS_MINSIZEREL CMAKE_CUDA_FLAGS_RELWITHDEBINFO)
214+
if(${flag_var} MATCHES "-MD")
215+
string(REGEX REPLACE "-MD" "-MT" ${flag_var} "${${flag_var}}")
216+
endif()
217+
endforeach(flag_var)
225218
endif()
226219
endif()
227220

cmake/external/mkldnn.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ ExternalProject_Add(
6060
DEPENDS ${MKLDNN_DEPENDS}
6161
PREFIX ${MKLDNN_PREFIX_DIR}
6262
SOURCE_DIR ${MKLDNN_SOURCE_DIR}
63-
BUILD_ALWAYS 1
64-
# UPDATE_COMMAND ""
63+
UPDATE_COMMAND ""
64+
#BUILD_ALWAYS 1
6565
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
6666
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
6767
-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}

cmake/external/warpctc.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ else()
100100
"${WARPCTC_DOWNLOAD_CMD}"
101101
PREFIX ${WARPCTC_PREFIX_DIR}
102102
SOURCE_DIR ${WARPCTC_SOURCE_DIR}
103-
#UPDATE_COMMAND ""
103+
UPDATE_COMMAND ""
104104
PATCH_COMMAND ""
105-
BUILD_ALWAYS 1
105+
#BUILD_ALWAYS 1
106106
CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
107107
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
108108
-DCMAKE_C_FLAGS=${WARPCTC_C_FLAGS}

cmake/flags.cmake

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,12 @@ function(CheckCompilerCXX14Flag)
2828
endfunction()
2929

3030
CheckCompilerCXX14Flag()
31-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
31+
if(NOT WIN32)
32+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
33+
else()
34+
set(CMAKE_CXX_STANDARD 14)
35+
endif()
36+
3237
# safe_set_flag
3338
#
3439
# Set a compile flag only if compiler is support

cmake/generic.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,15 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
9292
# including io directory for inference lib paddle_api.h
9393
include_directories("${PADDLE_SOURCE_DIR}/paddle/fluid/framework/io")
9494

95-
if(NOT APPLE)
95+
if(NOT APPLE AND NOT WIN32)
9696
find_package(Threads REQUIRED)
9797
link_libraries(${CMAKE_THREAD_LIBS_INIT})
9898
if(WITH_PSLIB OR WITH_DISTRIBUTE)
9999
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -pthread -ldl -lrt -lz -lssl")
100100
else()
101101
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -pthread -ldl -lrt")
102102
endif()
103-
endif(NOT APPLE)
103+
endif()
104104

105105
set_property(GLOBAL PROPERTY FLUID_MODULES "")
106106
# find all fluid modules is used for paddle fluid static library

cmake/init.cmake

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,34 @@ if(NOT WIN32)
1717
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
1818
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG")
1919
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
20+
21+
if(WITH_GPU)
22+
set(CMAKE_CUDA_FLAGS_DEBUG "-g")
23+
set(CMAKE_CUDA_FLAGS_RELEASE "-O3 -DNDEBUG")
24+
set(CMAKE_CUDA_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG")
25+
set(CMAKE_CUDA_FLAGS_MINSIZEREL "-O1 -DNDEBUG")
26+
endif()
2027
else()
21-
set(CMAKE_C_FLAGS_DEBUG "/Zi /DEBUG")
22-
set(CMAKE_C_FLAGS_RELEASE "/O2 /DNDEBUG")
23-
set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /DNDEBUG")
24-
set(CMAKE_C_FLAGS_MINSIZEREL "/Os /DNDEBUG")
28+
set(CMAKE_C_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
29+
set(CMAKE_C_FLAGS_RELEASE "/MD /O2 /Ob2 /DNDEBUG")
30+
set(CMAKE_C_FLAGS_RELWITHDEBINFO "/MD /Zi /O2 /Ob1 /DNDEBUG")
31+
set(CMAKE_C_FLAGS_MINSIZEREL "/MD /O1 /Ob1 /DNDEBUG")
2532

26-
set(CMAKE_CXX_FLAGS_DEBUG "/Zi /DEBUG")
27-
set(CMAKE_CXX_FLAGS_RELEASE "/O2 /DNDEBUG")
28-
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /DNDEBUG")
29-
set(CMAKE_CXX_FLAGS_MINSIZEREL "/Os /DNDEBUG")
33+
set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
34+
set(CMAKE_CXX_FLAGS_RELEASE "/MD /O2 /Ob2 /DNDEBUG")
35+
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MD /Zi /O2 /Ob1 /DNDEBUG")
36+
set(CMAKE_CXX_FLAGS_MINSIZEREL "/MD /O1 /Ob1 /DNDEBUG")
37+
38+
if(WITH_GPU)
39+
set(CMAKE_CUDA_FLAGS_DEBUG "-Xcompiler=\"-MDd -Zi -Ob0 -Od /RTC1\"")
40+
set(CMAKE_CUDA_FLAGS_RELEASE "-Xcompiler=\"-MD -O2 -Ob2\" -DNDEBUG")
41+
set(CMAKE_CUDA_FLAGS_RELWITHDEBINFO "-Xcompiler=\"-MD -Zi -O2 -Ob1\" -DNDEBUG")
42+
set(CMAKE_CUDA_FLAGS_MINSIZEREL "-Xcompiler=\"-MD -O1 -Ob1\" -DNDEBUG")
43+
endif()
3044

3145
# It can specify CUDA compile flag manualy,
3246
# its use is to remvoe /Zi to reduce GPU static library size. But it's dangerous
3347
# because CUDA will update by nvidia, then error will occur.
3448
# Now, it's only used in VS2015 + CUDA:[10.0, 10.2]
3549
set(WIN_PROPS ${CMAKE_SOURCE_DIR}/cmake/paddle_win.props)
3650
endif()
37-
38-
if(WITH_GPU)
39-
set(CMAKE_CUDA_FLAGS_DEBUG "-g")
40-
set(CMAKE_CUDA_FLAGS_RELEASE "-O3 -DNDEBUG")
41-
set(CMAKE_CUDA_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG")
42-
set(CMAKE_CUDA_FLAGS_MINSIZEREL "-O1 -DNDEBUG")
43-
endif()

paddle/scripts/paddle_build.bat

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ rem Paddle CI Task On Windows Platform
1818
rem =================================================
1919

2020
@ECHO ON
21-
setlocal
21+
setlocal enabledelayedexpansion
2222

2323
rem -------clean up environment-----------
2424
set work_dir=%cd%
@@ -63,7 +63,7 @@ if not defined WITH_PYTHON set WITH_PYTHON=ON
6363
if not defined ON_INFER set ON_INFER=ON
6464
if not defined WITH_INFERENCE_API_TEST set WITH_INFERENCE_API_TEST=ON
6565
if not defined WITH_STATIC_LIB set WITH_STATIC_LIB=ON
66-
if not defined WITH_TPCACHE set WITH_TPCACHE=ON
66+
if not defined WITH_TPCACHE set WITH_TPCACHE=OFF
6767
if not defined WITH_CLCACHE set WITH_CLCACHE=OFF
6868
if not defined WITH_CACHE set WITH_CACHE=OFF
6969
if not defined WITH_UNITY_BUILD set WITH_UNITY_BUILD=OFF
@@ -236,6 +236,8 @@ call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary
236236
set DISTUTILS_USE_SDK=1
237237
rem Windows 10 Kit bin dir
238238
set PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64;%PATH%
239+
rem Use 64-bit ToolSet to compile
240+
set PreferredToolArchitecture=x64
239241

240242
for /F %%# in ('wmic os get localdatetime^|findstr 20') do set start=%%#
241243
set start=%start:~4,10%
@@ -263,12 +265,12 @@ rem ------initialize the python environment------
263265
@ECHO ON
264266
set PYTHON_EXECUTABLE=%PYTHON_ROOT%\python.exe
265267
set PATH=%PYTHON_ROOT%;%PYTHON_ROOT%\Scripts;%PATH%
266-
if %WITH_PYTHON% == "ON" (
268+
if "%WITH_PYTHON%" == "ON" (
267269
where python
268270
where pip
269271
pip install wheel --user
270272
pip install -r %work_dir%\python\requirements.txt --user
271-
if %ERRORLEVEL% NEQ 0 (
273+
if !ERRORLEVEL! NEQ 0 (
272274
echo pip install requirements.txt failed!
273275
exit /b 7
274276
)
@@ -329,14 +331,14 @@ if "%WITH_GPU%"=="ON" (
329331
)
330332

331333
:cmake_impl
332-
echo cmake .. -G %GENERATOR% -T host=x64 -DCMAKE_BUILD_TYPE=Release -DWITH_AVX=%WITH_AVX% -DWITH_GPU=%WITH_GPU% -DWITH_MKL=%WITH_MKL% ^
334+
echo cmake .. -G %GENERATOR% -DCMAKE_BUILD_TYPE=Release -DWITH_AVX=%WITH_AVX% -DWITH_GPU=%WITH_GPU% -DWITH_MKL=%WITH_MKL% ^
333335
-DWITH_TESTING=%WITH_TESTING% -DWITH_PYTHON=%WITH_PYTHON% -DPYTHON_EXECUTABLE=%PYTHON_EXECUTABLE% -DON_INFER=%ON_INFER% ^
334336
-DWITH_INFERENCE_API_TEST=%WITH_INFERENCE_API_TEST% -DTHIRD_PARTY_PATH=%THIRD_PARTY_PATH% ^
335337
-DINFERENCE_DEMO_INSTALL_DIR=%INFERENCE_DEMO_INSTALL_DIR% -DWITH_STATIC_LIB=%WITH_STATIC_LIB% ^
336338
-DWITH_TENSORRT=%WITH_TENSORRT% -DTENSORRT_ROOT="%TENSORRT_ROOT%" -DMSVC_STATIC_CRT=%MSVC_STATIC_CRT% ^
337339
-DWITH_UNITY_BUILD=%WITH_UNITY_BUILD% -DCUDA_ARCH_NAME=%CUDA_ARCH_NAME%
338340

339-
cmake .. -G %GENERATOR% -DCMAKE_BUILD_TYPE=Release -T host=x64 -DWITH_AVX=%WITH_AVX% -DWITH_GPU=%WITH_GPU% -DWITH_MKL=%WITH_MKL% ^
341+
cmake .. -G %GENERATOR% -DCMAKE_BUILD_TYPE=Release -DWITH_AVX=%WITH_AVX% -DWITH_GPU=%WITH_GPU% -DWITH_MKL=%WITH_MKL% ^
340342
-DWITH_TESTING=%WITH_TESTING% -DWITH_PYTHON=%WITH_PYTHON% -DPYTHON_EXECUTABLE=%PYTHON_EXECUTABLE% -DON_INFER=%ON_INFER% ^
341343
-DWITH_INFERENCE_API_TEST=%WITH_INFERENCE_API_TEST% -DTHIRD_PARTY_PATH=%THIRD_PARTY_PATH% ^
342344
-DINFERENCE_DEMO_INSTALL_DIR=%INFERENCE_DEMO_INSTALL_DIR% -DWITH_STATIC_LIB=%WITH_STATIC_LIB% ^
@@ -366,7 +368,7 @@ echo Build third_party the %build_times% time:
366368
if %GENERATOR% == "Ninja" (
367369
ninja third_party
368370
) else (
369-
MSBuild /m /p:PreferredToolArchitecture=x64 /p:Configuration=Release /verbosity:quiet third_party.vcxproj
371+
MSBuild /m /p:PreferredToolArchitecture=x64 /p:Configuration=Release /verbosity:%LOG_LEVEL% third_party.vcxproj
370372
)
371373
if %ERRORLEVEL% NEQ 0 (
372374
set /a build_times=%build_times%+1
@@ -412,10 +414,10 @@ if "%WITH_TESTING%"=="ON" (
412414

413415
echo Build Paddle the %build_times% time:
414416
if %GENERATOR% == "Ninja" (
415-
ninja -j %PARALLEL_PROJECT_COUNT%
417+
ninja all
416418
) else (
417419
if "%WITH_CLCACHE%"=="OFF" (
418-
MSBuild /m:%PARALLEL_PROJECT_COUNT% /p:PreferredToolArchitecture=x64 /p:TrackFileAccess=false /p:Configuration=Release /verbosity:%LOG_LEVEL% ALL_BUILD.vcxproj
420+
MSBuild /m:%PARALLEL_PROJECT_COUNT% /p:PreferredToolArchitecture=x64 /p:Configuration=Release /verbosity:%LOG_LEVEL% ALL_BUILD.vcxproj
419421
) else (
420422
MSBuild /m:%PARALLEL_PROJECT_COUNT% /p:PreferredToolArchitecture=x64 /p:TrackFileAccess=false /p:CLToolExe=clcache.exe /p:CLToolPath=%PYTHON_ROOT%\Scripts /p:Configuration=Release /verbosity:%LOG_LEVEL% ALL_BUILD.vcxproj
421423
)
@@ -644,7 +646,7 @@ echo git fetch upstream $BRANCH # develop is not fetched>> check_change_of_
644646
echo fi>> check_change_of_unittest.sh
645647
echo git checkout -b origin_pr >> check_change_of_unittest.sh
646648
echo git checkout -f $BRANCH >> check_change_of_unittest.sh
647-
echo cmake .. -G %GENERATOR% -T host=x64 -DWITH_AVX=%WITH_AVX% -DWITH_GPU=%WITH_GPU% -DWITH_MKL=%WITH_MKL% ^
649+
echo cmake .. -G %GENERATOR% -DWITH_AVX=%WITH_AVX% -DWITH_GPU=%WITH_GPU% -DWITH_MKL=%WITH_MKL% ^
648650
-DWITH_TESTING=%WITH_TESTING% -DWITH_PYTHON=%WITH_PYTHON% -DPYTHON_EXECUTABLE=%PYTHON_EXECUTABLE% -DON_INFER=%ON_INFER% ^
649651
-DWITH_INFERENCE_API_TEST=%WITH_INFERENCE_API_TEST% -DTHIRD_PARTY_PATH=%THIRD_PARTY_PATH% ^
650652
-DINFERENCE_DEMO_INSTALL_DIR=%INFERENCE_DEMO_INSTALL_DIR% -DWITH_STATIC_LIB=%WITH_STATIC_LIB% ^

tools/parallel_UT_rule.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,6 @@
650650
'test_collective_wait',
651651
'test_collective_split_row_linear',
652652
'test_collective_split_embedding',
653-
'test_custom_attrs_jit',
654653
'float16_gpu_test',
655654
'test_leaky_relu_grad_grad_functor',
656655
'test_complex_simplenet',

tools/windows/build_compile_environment.bat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ goto :eof
132132
:vs
133133
echo ">>>>>>>> step [4/7]: Visual Studio 2017 "
134134
cmd /C "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" > nul 2> nul || call :install_visual_studio
135-
goto :cuda10
135+
goto :cuda
136136

137137
:install_visual_studio
138138
echo There is not Visual Studio in this PC, will install VS2017.
@@ -153,7 +153,7 @@ goto :eof
153153
:: ===== end step 4: Visual Studio 2017 =====
154154

155155
:: ===== start step 5: CUDA 11 =====
156-
:cuda10
156+
:cuda
157157
echo ">>>>>>>> step [5/7]: CUDA 11.2"
158158
cmd /C nvcc --version 2> nul | findstr /C:"11.2" > nul 2> nul || call :install_cuda
159159
goto java-jre

0 commit comments

Comments
 (0)