Support VS2026 in Windows Github workflow Build with Visual Studio 2026 instead of 2022 using CUDA 13 and the corresponding cuDSS and SuiteSparse releases. Cache the CUDA toolkit and cuDSS to avoid downloading them in every run. Change-Id: I529bd5f329b8641d947fa36718a21ec2617270ee
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 6f4eb0f..fbebd49 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml
@@ -99,42 +99,68 @@ build_type: - Release msvc: - - VS-17-2022 + - VS-18-2026 lib: - shared gpu: - cuda - no-cuda include: - - msvc: VS-17-2022 - os: windows-2022 - generator: 'Visual Studio 17 2022' - marker: vc17 + - msvc: VS-18-2026 + os: windows-2025-vs2026 + generator: 'Visual Studio 18 2026' + marker: vc18 steps: - uses: actions/checkout@v4 with: submodules: recursive + - name: Cache CUDA toolkit + if: matrix.gpu == 'cuda' + id: cache-cuda + uses: actions/cache@v4 + with: + path: | + C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v13.3 + C:/Program Files/Microsoft Visual Studio/18/Enterprise/MSBuild/Microsoft/VC/v180/BuildCustomizations + key: ${{runner.os}}-${{matrix.msvc}}-cuda-13.3.0-v1 + - name: Download and install CUDA toolkit + if: matrix.gpu == 'cuda' && steps.cache-cuda.outputs.cache-hit != 'true' + run: | + Invoke-WebRequest https://developer.download.nvidia.com/compute/cuda/13.3.0/network_installers/cuda_13.3.0_windows_network.exe -OutFile cuda_toolkit_windows.exe + Start-Process -Wait -FilePath .\cuda_toolkit_windows.exe -ArgumentList "-s crt_13.3 cusolver_dev_13.3 cusparse_dev_13.3 cublas_dev_13.3 thrust_13.3 nvcc_13.3 nvvm_13.3 cudart_13.3 nvrtc_dev_13.3 visual_studio_integration_13.3" + Remove-Item .\cuda_toolkit_windows.exe + + - name: Setup CUDA environment if: matrix.gpu == 'cuda' run: | - Invoke-WebRequest https://developer.download.nvidia.com/compute/cuda/12.5.1/network_installers/cuda_12.5.1_windows_network.exe -OutFile cuda_toolkit_windows.exe - Start-Process -Wait -FilePath .\cuda_toolkit_windows.exe -ArgumentList "-s cusolver_dev_12.5 cusparse_dev_12.5 cublas_dev_12.5 thrust_12.5 nvcc_12.5 cudart_12.5 nvrtc_dev_12.5 visual_studio_integration_12.5" - Remove-Item .\cuda_toolkit_windows.exe - $CUDA_PATH = "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.5" + $CUDA_PATH = "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v13.3" echo "CUDA_PATH=$CUDA_PATH" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - echo "CUDA_PATH_V12_5=$CUDA_PATH" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + echo "CUDA_PATH_V13_3=$CUDA_PATH" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append echo "$CUDA_PATH/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - name: Setup cuDSS + - name: Cache cuDSS + if: matrix.gpu == 'cuda' + id: cache-cudss + uses: actions/cache@v4 + with: + path: ${{github.workspace}}/libcudss-windows-x86_64-0.8.0.10_cuda13-archive + key: ${{runner.os}}-${{matrix.msvc}}-cudss-0.8.0.10-cuda13-v1 + + - name: Download and extract cuDSS + if: matrix.gpu == 'cuda' && steps.cache-cudss.outputs.cache-hit != 'true' + run: | + $CUDSS_ARCHIVE = "${{github.workspace}}/libcudss-windows-x86_64-0.8.0.10_cuda13-archive.zip" + Invoke-WebRequest https://developer.download.nvidia.com/compute/cudss/redist/libcudss/windows-x86_64/libcudss-windows-x86_64-0.8.0.10_cuda13-archive.zip -OutFile $CUDSS_ARCHIVE + Expand-Archive -Path $CUDSS_ARCHIVE -DestinationPath "${{github.workspace}}" + Remove-Item $CUDSS_ARCHIVE + + - name: Setup cuDSS environment if: matrix.gpu == 'cuda' run: | - Invoke-WebRequest https://developer.download.nvidia.com/compute/cudss/redist/libcudss/windows-x86_64/libcudss-windows-x86_64-0.3.0.9_cuda12-archive.zip -OutFile libcudss-windows-x86_64-0.3.0.9_cuda12-archive.zip - Expand-Archive -Path .\libcudss-windows-x86_64-0.3.0.9_cuda12-archive.zip -DestinationPath "C:/" - Remove-Item .\libcudss-windows-x86_64-0.3.0.9_cuda12-archive.zip - $CUDSS_PATH = "C:/libcudss-windows-x86_64-0.3.0.9_cuda12-archive/" - $CUDSS_CMAKE_CONFIG = "$CUDSS_PATH/lib/cmake/cudss/cudss-config.cmake" + $CUDSS_PATH = "${{github.workspace}}/libcudss-windows-x86_64-0.8.0.10_cuda13-archive/" echo "cudss_DIR=$CUDSS_PATH/lib/cmake/cudss" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append echo "$CUDSS_PATH/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append @@ -143,12 +169,12 @@ uses: actions/cache@v4 with: path: suitesparse/ - key: ${{matrix.msvc}}-suitesparse-5.13.0-cmake.3-${{matrix.arch}}-${{matrix.build_type}}-${{matrix.lib}} + key: ${{matrix.msvc}}-suitesparse-5.13.0-cmake.5-${{matrix.arch}}-${{matrix.build_type}}-${{matrix.lib}} - name: Download SuiteSparse if: steps.cache-suitesparse.outputs.cache-hit != 'true' run: | - (New-Object System.Net.WebClient).DownloadFile("https://github.com/sergiud/SuiteSparse/releases/download/5.13.0-cmake.3/SuiteSparse-5.13.0-cmake.3-${{matrix.marker}}-Win64-${{matrix.build_type}}-${{matrix.lib}}-gpl-metis.zip", "suitesparse.zip"); + (New-Object System.Net.WebClient).DownloadFile("https://github.com/sergiud/SuiteSparse/releases/download/5.13.0-cmake.5/SuiteSparse-5.13.0-cmake.5-${{matrix.marker}}-Win64-${{matrix.build_type}}-${{matrix.lib}}-gpl-metis.zip", "suitesparse.zip"); Expand-Archive -Path suitesparse.zip -DestinationPath ${{github.workspace}}/suitesparse; - name: Cache Eigen