Skip to content

Compile the CUDA and HIP targets in CI - #525

Merged
jtravs merged 7 commits into
mainfrom
ci/device-compile
Nov 5, 2026
Merged

jtravs merged 7 commits into
mainfrom
ci/device-compile

Conversation

@jtravs

@jtravs jtravs commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

A draft, on main, independent of #520. Closes #151.

What changed

  • Two new CI lanes compile the device targets: the cuda preset under CUDA 12.8, the floor, and the hip preset under ROCm 7.2, tests included, with no device. They run on a change to native/ or to ci.yml, and sit under ci-passed, so a broken device build blocks a merge. They're skipped on any other change, which ci-passed accepts.
  • A build from source no longer stops on a compiler's warning. SOLPROP_NATIVE_WARNINGS_AS_ERRORS now follows BUILD_TESTING: on for every preset and for anything building the tests, off for a pip or uv build. CI's wheels and poe check-native's distribution wheel set it on explicitly, so nothing CI builds got less strict. This is the maintainer's decision.
  • It fixes a real break on main, the first thing the CUDA lane found: native/tests/native/test_aperture.cpp compiled under GCC, but nvcc couldn't deduce a list of pairs whose later members were bare braces, so a CUDA build with its tests stopped there. Wheel builds don't compile the tests, so hand-run device builds never showed it.

Why

Five device-build breakages were found in 13 days, by #151's table, and each was found only when someone next rented or queued a GPU.

What it costs

A hosted runner, with no cache, in a run that passed:

Toolkit install Whole job
HIP, ROCm 7.2 about 2.4 min 11 min alone, 19 min in a full CI run
CUDA 12.8 about 2 min 25 min alone, 26 min in a full CI run

So #151's limit of 30 minutes holds without a Kokkos cache, which I haven't added. These were general.cpp's first compiles there, and it didn't run out of memory. The disk isn't a concern, with 94 GB free after a toolkit's install.

How it was verified

  • Each job passes, in this PR's CI run on 4421d978, as lanes of ci.yml under ci-passed: HIP in 19 minutes and CUDA in 26, with the other lanes passing beside them.
  • HIP fails when it should: an unused variable in a device-only branch stopped it, -Werror,-Wunused-variable.
  • CUDA fails when it should, on the real test_aperture.cpp error above.
  • CI builds no CUDA or HIP target, so device builds break unnoticed #151's other test, by a different route than it asks: my planted capture passed the CUDA job, because I'd put if constexpr outside the lambda, which is legal. I then held both forms to nvcc 12.8.1 directly: inside the lambda it stops with "An extended host device lambda cannot first-capture variable in constexpr-if context", and outside it compiles. I didn't spend another CI run on putting the right form through the job.

Not done

Suggested labels: testing, area: native, area: gpu.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XGENPtq9Gp7VCh5QmcDdzQ

One job per vendor on a hosted runner, on a change to native/, with no device.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGENPtq9Gp7VCh5QmcDdzQ
@jtravs jtravs added testing Tests, test tiers and CI coverage area: native The native backend, threading and FFT planning area: gpu CUDA and HIP builds: qualification and performance labels Nov 4, 2026
jtravs and others added 3 commits November 4, 2026 21:18
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGENPtq9Gp7VCh5QmcDdzQ
A CUDA build with its tests stopped here: nvcc can't deduce a list whose later members are bare
braces. Found by the new compile job.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGENPtq9Gp7VCh5QmcDdzQ
jtravs and others added 3 commits November 4, 2026 22:18
Reverted in the next commit (#151's test).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGENPtq9Gp7VCh5QmcDdzQ
Under ci-passed, so that a broken device build blocks a merge, and only on a change to native/.
A build with its tests stays strict, and so do CI's wheels; a build from source doesn't stop on
a compiler's warning.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGENPtq9Gp7VCh5QmcDdzQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGENPtq9Gp7VCh5QmcDdzQ
@read-the-docs-community

Copy link
Copy Markdown

Documentation build overview

📚 solprop | 🛠️ Build #35656408 | 📁 Comparing 4421d97 against latest (8ed26dd)

  🔍 Preview build  

2 files changed
± dev/tooling.html
± guide/performance/building-native.html

@codecov

codecov Bot commented Nov 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@jtravs
jtravs marked this pull request as ready for review November 5, 2026 10:36
Copilot AI balanced review requested due to automatic review settings November 5, 2026 10:36

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-05T10:38:39.766695Z 4421d97 Draft marked ready
🔒 Security Review ✅ Completed 2026-11-05T10:38:53.122506Z 4421d97 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@jtravs
jtravs merged commit 69fa05d into main Nov 5, 2026
69 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: gpu CUDA and HIP builds: qualification and performance area: native The native backend, threading and FFT planning testing Tests, test tiers and CI coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CI builds no CUDA or HIP target, so device builds break unnoticed

2 participants