Skip to content

Enable Windows CUDA CI - #262

Merged
zfergus merged 7 commits into
mainfrom
fix/windows-cuda-ci
Oct 14, 2026
Merged

zfergus merged 7 commits into
mainfrom
fix/windows-cuda-ci

Conversation

@zfergus

@zfergus zfergus commented Sep 12, 2026 •

Copy link
Copy Markdown
Member

Description

This PR adds a Windows leg to the CUDA workflow and fixes CI issues that the new leg exposed in cuda.yml, continuous.yml, and the nvcc warning flags.

  • Per-OS CUDA install: On Linux, setup-pantheonsim (from CI: run the GPU unit tests on a simulated GPU #265) installs CUDA 12.8 with a simulated T4 and runs the GPU tests. On Windows, Jimver/cuda-toolkit@v0.2.35 installs CUDA 13.2, and the job only builds, since PantheonSim only supports Linux.
  • Windows toolchain: Ninja + MSVC (msvc-dev-cmd), with CMAKE_CUDA_COMPILER passed explicitly because check_language(CUDA) doesn't reliably find nvcc on the runner.
  • Matrix: Linux builds Debug and Release. Windows builds Debug only, because parallel Windows toolkit installs conflict.

Impact:

  • Windows builds of the CUDA code now run in CI, which catches MSVC-host nvcc errors that the Linux build never sees.
  • CI now builds against both CUDA 12 (CCCL 2) on Linux and CUDA 13 (CCCL 3) on Windows.
  • No library or API changes.

CI fixes

  • Build failures could pass the step: The Build step now runs under bash. Under the Windows default, pwsh, a failing cmake --build followed by ccache --show-stats reported success.
  • Linux-only steps on Windows: The x86-64-v3 CPU check and the GPU Tests step are now limited to Linux.
  • ccache on Windows: The Windows Debug configure drops MSVC's /Zi, which ccache can't cache, the same way Linux drops -g.
  • Deprecated action: Removed seanmiddleditch/gha-setup-ninja@master from both workflows. The action is deprecated, and Ninja ships on all GitHub-hosted runners.

Build change

  • With an MSVC host, nvcc's front end reports two warnings inside spdlog's bundled fmt: Kinetics and Static Friction pairwise for different materials #128 "loop is not reachable" and #2417 "constexpr constructor calls non-constexpr function". This happens despite the -isystem include, and -Werror all-warnings turns both into errors.
  • ipc_toolkit_warnings.cmake now passes -diag-suppress=128,2417 for MSVC hosts only. The Linux build still treats both as errors, so our own code is still checked.
  • -Werror all-warnings also turns MSVC's own host-pass warnings into errors, so #pragma GCC in lbvh.hpp failed on C4068. The MSVC /wd list is now shared and forwarded to nvcc's host pass with -Xcompiler, matching the C++ build.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • Enhancement (non-breaking change which improves existing functionality)

How Has This Been Tested?

  • CI only; Windows CUDA can't be built locally.
  • Linux CUDA (Debug) passed on CUDA 13.2 before the merge with CI: run the GPU unit tests on a simulated GPU #265.
  • Windows CUDA (Debug) previously failed on the fmt warnings, then on C4068. Both fixes are in f7e4c0779, and its run is pending.
  • macOS configure re-run locally to check that the non-MSVC warning setup is unchanged.

Test Configuration:

  • OS and Version: ubuntu-latest, windows-latest (GitHub-hosted)
  • Compiler and Version: nvcc 12.8 + GCC (Linux), nvcc 13.2 + MSVC (Windows)

Checklist

  • I have followed the project style guide
  • My code follows the clang-format style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules

@codecov

codecov Bot commented Sep 12, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.92%. Comparing base (bdabc2d) to head (f7e4c07).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #262   +/-   ##
=======================================
  Coverage   96.92%   96.92%           
=======================================
  Files         194      194           
  Lines       17349    17349           
  Branches      943      943           
=======================================
  Hits        16816    16816           
  Misses        533      533           
Flag Coverage Δ
unittests 96.92% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

zfergus and others added 6 commits October 14, 2026 15:57
- Run build and ccache steps under bash so failures aren't masked by pwsh
- Gate the x86-64-v3 check to Linux
- Drop /Zi from Windows Debug flags so ccache can cache compiles
- Remove the deprecated gha-setup-ninja action

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Run the simulator and GPU tests on Linux only, keep Jimver for the Windows build, and restore the Linux Release job.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@zfergus
zfergus merged commit 4e8173d into main Oct 14, 2026
13 checks passed
@zfergus
zfergus deleted the fix/windows-cuda-ci branch October 14, 2026 21:18
@zfergus zfergus added this to the v2.0.0 milestone Oct 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant