Use sccache for Windows build (#7331)
diff --git a/.jenkins/pytorch/win-build.sh b/.jenkins/pytorch/win-build.sh
index 6de6f53..9a773c3 100755
--- a/.jenkins/pytorch/win-build.sh
+++ b/.jenkins/pytorch/win-build.sh
@@ -40,8 +40,9 @@
aws s3 cp s3://ossci-windows/magma_cuda90_release_mkl_2018.2.185.7z magma_cuda90_release_mkl_2018.2.185.7z --quiet && 7z x -aoa magma_cuda90_release_mkl_2018.2.185.7z -omagma
set MAGMA_HOME=%cd%\\magma
-:: Install clcache
-aws s3 cp s3://ossci-windows/clcache.7z clcache.7z --quiet && 7z x -aoa clcache.7z -oclcache
+:: Install sccache
+mkdir %CD%\\tmp_bin
+aws s3 cp s3://ossci-windows/sccache.exe %CD%\\tmp_bin\\sccache.exe --quiet
:: Install Miniconda3
IF EXIST C:\\Jenkins\\Miniconda3 ( rd /s /q C:\\Jenkins\\Miniconda3 )
@@ -57,7 +58,7 @@
git submodule update --init --recursive
-set PATH=C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v9.0\\bin;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v9.0\\libnvvp;%PATH%
+set PATH=%CD%\\tmp_bin;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v9.0\\bin;C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v9.0\\libnvvp;%PATH%
set CUDA_PATH=C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v9.0
set CUDA_PATH_V9_0=C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v9.0
set NVTOOLSEXT_PATH=C:\\Program Files\\NVIDIA Corporation\\NvToolsExt
@@ -67,10 +68,11 @@
set TORCH_CUDA_ARCH_LIST=5.2
-set USE_CLCACHE=1
-set CLCACHE_DIR=%cd%\\clcache_tmp
-set CC=%cd%\\clcache\\clcache_main.exe
-set CXX=%cd%\\clcache\\clcache_main.exe
+sccache --stop-server || set ERRORLEVEL=0
+sccache --start-server
+sccache --zero-stats
+set CC=sccache cl
+set CXX=sccache cl
set DISTUTILS_USE_SDK=1
@@ -82,11 +84,18 @@
if %errorlevel% neq 0 exit /b %errorlevel%
+sccache --show-stats
+
+sccache --zero-stats
+
rd /s /q C:\\Jenkins\\Miniconda3\\Lib\\site-packages\\torch
+copy %CD%\\tmp_bin\\sccache.exe tmp_bin\\nvcc.exe
+set CUDA_NVCC_EXECUTABLE=%CD%\\tmp_bin\\nvcc
+
set NO_CUDA=
-python setup.py install && 7z a %IMAGE_COMMIT_TAG%.7z C:\\Jenkins\\Miniconda3\\Lib\\site-packages\\torch && python ci_scripts\\upload_image.py %IMAGE_COMMIT_TAG%.7z
+python setup.py install && sccache --show-stats && 7z a %IMAGE_COMMIT_TAG%.7z C:\\Jenkins\\Miniconda3\\Lib\\site-packages\\torch && python ci_scripts\\upload_image.py %IMAGE_COMMIT_TAG%.7z
EOL
diff --git a/cmake/Modules_CUDA_fix/FindCUDA.cmake b/cmake/Modules_CUDA_fix/FindCUDA.cmake
index d4f2962..fd22b46 100644
--- a/cmake/Modules_CUDA_fix/FindCUDA.cmake
+++ b/cmake/Modules_CUDA_fix/FindCUDA.cmake
@@ -557,7 +557,7 @@
set(c_compiler_realpath "")
endif()
set(CUDA_HOST_COMPILER "${c_compiler_realpath}" CACHE FILEPATH "Host side compiler used by NVCC")
- elseif(MSVC AND "${CMAKE_C_COMPILER}" MATCHES "clcache")
+ elseif(MSVC AND ("${CMAKE_C_COMPILER}" MATCHES "clcache" OR "${CMAKE_C_COMPILER}" MATCHES "sccache"))
# NVCC does not think it will work if it is passed clcache.exe as the host
# compiler, which means that builds with CC=cl.exe won't work. Best to just
# feed it whatever the actual cl.exe is as the host compiler.