From 70e64feda7d60fbb370127942cc01e5390e79039 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Mon, 13 Sep 2021 09:50:50 -0700 Subject: [PATCH] Reland .circleci: Skip cuda /cudnn install if existing (#64880) Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/64880 This reverts commit 5836a116d0de214d6d759e70671f23150a5deaba. Signed-off-by: Eli Uriegas Test Plan: Imported from OSS Reviewed By: malfet Differential Revision: D30885675 Pulled By: seemethere fbshipit-source-id: 8c96584d5a632170e29f91c5daf0206680a78661 --- .circleci/scripts/windows_cuda_install.sh | 75 ++++++++++++++++-------------- .circleci/scripts/windows_cudnn_install.sh | 23 +++++---- 2 files changed, 54 insertions(+), 44 deletions(-) diff --git a/.circleci/scripts/windows_cuda_install.sh b/.circleci/scripts/windows_cuda_install.sh index c16a11a..3d4fbf4 100644 --- a/.circleci/scripts/windows_cuda_install.sh +++ b/.circleci/scripts/windows_cuda_install.sh @@ -1,27 +1,21 @@ #!/bin/bash set -eux -o pipefail -cuda_major_version=${CUDA_VERSION%.*} - case ${CUDA_VERSION} in 10.1) cuda_installer_name="cuda_10.1.243_426.00_win10" - msbuild_project_dir="CUDAVisualStudioIntegration/extras/visual_studio_integration/MSBuildExtensions" cuda_install_packages="nvcc_10.1 cuobjdump_10.1 nvprune_10.1 cupti_10.1 cublas_10.1 cublas_dev_10.1 cudart_10.1 cufft_10.1 cufft_dev_10.1 curand_10.1 curand_dev_10.1 cusolver_10.1 cusolver_dev_10.1 cusparse_10.1 cusparse_dev_10.1 nvgraph_10.1 nvgraph_dev_10.1 npp_10.1 npp_dev_10.1 nvrtc_10.1 nvrtc_dev_10.1 nvml_dev_10.1" ;; 10.2) cuda_installer_name="cuda_10.2.89_441.22_win10" - msbuild_project_dir="CUDAVisualStudioIntegration/extras/visual_studio_integration/MSBuildExtensions" cuda_install_packages="nvcc_10.2 cuobjdump_10.2 nvprune_10.2 cupti_10.2 cublas_10.2 cublas_dev_10.2 cudart_10.2 cufft_10.2 cufft_dev_10.2 curand_10.2 curand_dev_10.2 cusolver_10.2 cusolver_dev_10.2 cusparse_10.2 cusparse_dev_10.2 nvgraph_10.2 nvgraph_dev_10.2 npp_10.2 npp_dev_10.2 nvrtc_10.2 nvrtc_dev_10.2 nvml_dev_10.2" ;; 11.1) cuda_installer_name="cuda_11.1.0_456.43_win10" - msbuild_project_dir="visual_studio_integration/CUDAVisualStudioIntegration/extras/visual_studio_integration/MSBuildExtensions" cuda_install_packages="nvcc_11.1 cuobjdump_11.1 nvprune_11.1 nvprof_11.1 cupti_11.1 cublas_11.1 cublas_dev_11.1 cudart_11.1 cufft_11.1 cufft_dev_11.1 curand_11.1 curand_dev_11.1 cusolver_11.1 cusolver_dev_11.1 cusparse_11.1 cusparse_dev_11.1 npp_11.1 npp_dev_11.1 nvrtc_11.1 nvrtc_dev_11.1 nvml_dev_11.1" ;; 11.3) cuda_installer_name="cuda_11.3.0_465.89_win10" - msbuild_project_dir="visual_studio_integration/CUDAVisualStudioIntegration/extras/visual_studio_integration/MSBuildExtensions" cuda_install_packages="thrust_11.3 nvcc_11.3 cuobjdump_11.3 nvprune_11.3 nvprof_11.3 cupti_11.3 cublas_11.3 cublas_dev_11.3 cudart_11.3 cufft_11.3 cufft_dev_11.3 curand_11.3 curand_dev_11.3 cusolver_11.3 cusolver_dev_11.3 cusparse_11.3 cusparse_dev_11.3 npp_11.3 npp_dev_11.3 nvrtc_11.3 nvrtc_dev_11.3 nvml_dev_11.3" ;; *) @@ -30,42 +24,51 @@ case ${CUDA_VERSION} in ;; esac -cuda_installer_link="https://ossci-windows.s3.amazonaws.com/${cuda_installer_name}.exe" -curl --retry 3 -kLO $cuda_installer_link -7z x ${cuda_installer_name}.exe -o${cuda_installer_name} -cd ${cuda_installer_name} -mkdir cuda_install_logs +if [[ -f "/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v${CUDA_VERSION}/bin/nvcc.exe" ]]; then + echo "Existing CUDA v${CUDA_VERSION} installation found, skipping install" +else + tmp_dir=$(mktemp -d) + ( + # no need to popd after, the subshell shouldn't affect the parent shell + pushd "${tmp_dir}" + cuda_installer_link="https://ossci-windows.s3.amazonaws.com/${cuda_installer_name}.exe" -set +e + curl --retry 3 -kLO $cuda_installer_link + 7z x ${cuda_installer_name}.exe -o${cuda_installer_name} + pushd ${cuda_installer_name} + mkdir cuda_install_logs -./setup.exe -s ${cuda_install_packages} -loglevel:6 -log:"$(pwd -W)/cuda_install_logs" + set +e -set -e + # This breaks for some reason if you quote cuda_install_packages + # shellcheck disable=SC2086 + ./setup.exe -s ${cuda_install_packages} -loglevel:6 -log:"$(pwd -W)/cuda_install_logs" -if [[ "${VC_YEAR}" == "2017" ]]; then - cp -r ${msbuild_project_dir}/* "C:/Program Files (x86)/Microsoft Visual Studio/2017/${VC_PRODUCT}/Common7/IDE/VC/VCTargets/BuildCustomizations/" -else - cp -r ${msbuild_project_dir}/* "C:/Program Files (x86)/Microsoft Visual Studio/2019/${VC_PRODUCT}/MSBuild/Microsoft/VC/v160/BuildCustomizations/" -fi + set -e -if ! ls "/c/Program Files/NVIDIA Corporation/NvToolsExt/bin/x64/nvToolsExt64_1.dll" -then - curl --retry 3 -kLO https://ossci-windows.s3.amazonaws.com/NvToolsExt.7z - 7z x NvToolsExt.7z -oNvToolsExt - mkdir -p "C:/Program Files/NVIDIA Corporation/NvToolsExt" - cp -r NvToolsExt/* "C:/Program Files/NVIDIA Corporation/NvToolsExt/" - export NVTOOLSEXT_PATH="C:\\Program Files\\NVIDIA Corporation\\NvToolsExt\\" + if [[ ! -f "/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v${CUDA_VERSION}/bin/nvcc.exe" ]]; then + echo "CUDA installation failed" + mkdir -p /c/w/build-results + 7z a "c:\\w\\build-results\\cuda_install_logs.7z" cuda_install_logs + exit 1 + fi + ) + rm -rf "${tmp_dir}" fi -if ! ls "/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v${CUDA_VERSION}/bin/nvcc.exe" -then - echo "CUDA installation failed" - mkdir -p /c/w/build-results - 7z a "c:\\w\\build-results\\cuda_install_logs.7z" cuda_install_logs - exit 1 +if [[ -f "/c/Program Files/NVIDIA Corporation/NvToolsExt/bin/x64/nvToolsExt64_1.dll" ]]; then + echo "Existing nvtools installation found, skipping install" +else + # create tmp dir for download + tmp_dir=$(mktemp -d) + ( + # no need to popd after, the subshell shouldn't affect the parent shell + pushd "${tmp_dir}" + curl --retry 3 -kLO https://ossci-windows.s3.amazonaws.com/NvToolsExt.7z + 7z x NvToolsExt.7z -oNvToolsExt + mkdir -p "C:/Program Files/NVIDIA Corporation/NvToolsExt" + cp -r NvToolsExt/* "C:/Program Files/NVIDIA Corporation/NvToolsExt/" + ) + rm -rf "${tmp_dir}" fi - -cd .. -rm -rf ./${cuda_installer_name} -rm -f ./${cuda_installer_name}.exe diff --git a/.circleci/scripts/windows_cudnn_install.sh b/.circleci/scripts/windows_cudnn_install.sh index 224cb3a..2567be9 100644 --- a/.circleci/scripts/windows_cudnn_install.sh +++ b/.circleci/scripts/windows_cudnn_install.sh @@ -29,11 +29,18 @@ cudnn_installer_name="cudnn_installer.zip" cudnn_installer_link="https://ossci-windows.s3.amazonaws.com/cudnn-${CUDA_VERSION}-windows${windows_version_qualifier}-x64-${archive_version}.zip" cudnn_install_folder="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v${CUDA_VERSION}/" -curl --retry 3 -o "${cudnn_installer_name}" "$cudnn_installer_link" -7z x "${cudnn_installer_name}" -ocudnn -# shellcheck recommends to use '${var:?}/*' to avoid potentially expanding to '/*' -# Remove all of the directories before attempting to copy files -rm -rf "${cudnn_install_folder:?}/*" -cp -rf cudnn/cuda/* "${cudnn_install_folder}" -rm -rf cudnn -rm -f "${cudnn_installer_name}.zip" +if [[ -f "${cudnn_install_folder}/include/cudnn.h" ]]; then + echo "Existing cudnn installation found, skipping install..." +else + tmp_dir=$(mktemp -d) + ( + pushd "${tmp_dir}" + curl --retry 3 -o "${cudnn_installer_name}" "$cudnn_installer_link" + 7z x "${cudnn_installer_name}" -ocudnn + # Use '${var:?}/*' to avoid potentially expanding to '/*' + # Remove all of the directories before attempting to copy files + rm -rf "${cudnn_install_folder:?}/*" + cp -rf cudnn/cuda/* "${cudnn_install_folder}" + ) + rm -rf "${tmp_dir}" +fi -- 2.7.4