Repository navigation
Conversation
bartgol
force-pushed
the
bartgol/homme/bfb-ci-testing
branch
from
October 27, 2026 17:50
515750e to
3e246c2
Compare
bartgol
marked this pull request as ready for review
October 27, 2026 17:50
bartgol
force-pushed
the
bartgol/homme/bfb-ci-testing
branch
from
October 28, 2026 21:22
3e246c2 to
52dac0f
Compare
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Test-launch failures can be hidden when baseline comparisons are disabled, while baseline-generation jobs fail, valid CMake boolean values are mishandled, and stdout diagnostics are lost.
4 open issues
What changed in this PR
Extend HOMME’s standalone CI with GNU and Intel bit-for-bit comparisons
between C++ and Fortran builds, without requiring blessed baselines.
Changes:
- Add optional baseline skipping across Python, CMake, and shell scripts.
- Add CPU BFB configurations and workflow jobs.
- Raise the CTest timeout to 1,800 seconds and replace log dumps with a
log-directory message while retaining artifact uploads.
| File | Description |
|---|---|
components/homme/utils/test_homme.py |
Add --no-baseline and simplify failure reporting. |
components/homme/test/reg_test/run_tests/testing-utils.sh |
Skip baseline comparisons and existence checks when requested. |
components/homme/test/reg_test/run_tests/cmake_variables.sh |
Expose the baseline-skip setting to shell scripts. |
components/homme/test_execs/CMakeLists.txt |
Declare the baseline-skip CMake option. |
components/homme/cmake/machineFiles/ghci-intel-bfb.cmake |
Add strict floating-point settings for Intel BFB testing. |
components/homme/cmake/machineFiles/ghci-gnu-bfb.cmake |
Add GNU BFB settings with optimizations and FMA disabled. |
components/homme/cmake/ctest_script.cmake |
Forward baseline skipping and reject incompatible generation. |
.github/workflows/homme-testing.yml |
Add BFB jobs, extend timeouts, and remove failure-log dumps. |
Review effort: Balanced
Add the HOMME_SKIP_BASELINE_COMPARE cmake option (OFF by default). If ON, the test scripts do not compare the output against baselines with cprnc, and do not check that the baseline files exist. Add --no-baseline to test_homme.py to set it. It is meant for runs that only care about comparisons within the same build (e.g., cxx vs f90 in bfb builds), and so do not need baselines. It cannot be used together with --generate. The option is normalized to ON/OFF in CMake, since it accepts many spellings of a boolean (1, YES, true, ...) that the test scripts would not recognize. Without baseline comparisons, a failure of an earlier launch of a test with several launches (e.g., hommetool) could go unnoticed, since a run script returns the status of its last command, and missing outputs are no longer caught when comparing against the baselines. So, in that case, make each launch stop the run script with its exit code if it fails. Nothing changes otherwise. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SaJsK9j78W8TBXGQqGLfDs
Add ghci-gnu-bfb and ghci-intel-bfb, which turn on HOMMEXX_BFB_TESTING with strict fp (and no fma) flags, and then include the regular file. They are used with test_homme.py --bfb. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SaJsK9j78W8TBXGQqGLfDs
Add bfb variants of the gnu and intel jobs, which build with HOMMEXX_BFB_TESTING=ON and strict fp flags, to compare the cxx and f90 builds against each other within the same build. They do not compare against baselines (--no-baseline), so they do not need to be blessed first. The bfb jobs cannot generate baselines (--no-baseline and -g are exclusive), so they are not part of the matrix when blessing. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SaJsK9j78W8TBXGQqGLfDs
…flow ctest kills a test after 10 minutes by default. The ghci runners' hosts are shared (e.g., other users running builds), and a gnu job was seen taking twice as long as usual for some tests (baro2b took 556s instead of 265s, and baro2d was killed at 600s). Use Homme's own per-test limit (HOMME_TESTING_TIMELIMIT, 1800s in ghci.cmake). The value must be separated from --timeout by a space, since ctest silently ignores --timeout=1800. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SaJsK9j78W8TBXGQqGLfDs
test_homme.py dumped the whole last ctest log when ctest failed, and the homme workflow had a step to print the stderr/stdout of failed tests. Now that ctest runs with -V --output-on-failure, the progress and the output of failing tests are already in the job log, and the logs (Testing/**) and the .err files are uploaded as an artifact, so the dumps are mostly redundant. The step also did not work in generate mode (no LastTestsFailed log, and the tests run in tests/baseline). When ctest fails, test_homme.py now just prints where the logs are. Also archive the .out files of the tests (stdout of the model, e.g., the message of an abort), which were only shown by the removed step. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SaJsK9j78W8TBXGQqGLfDs
bartgol
force-pushed
the
bartgol/homme/bfb-ci-testing
branch
from
October 28, 2026 22:56
4636de7 to
b59a77f
Compare
tcclevenger
reviewed
Oct 29, 2026
jgfouca
approved these changes
Oct 29, 2026
tcclevenger
approved these changes
Oct 29, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Add bfb variants of the gnu and intel jobs to the homme testing workflow (to compare the cxx and f90 builds against each other), raise the ctest timeout per test, and stop dumping the ctest logs on failure.
[BFB]
Summary
This PR has five commits (the first stacked PR, #8952, and the follow-up #8997 are already merged):
Homme: allow to skip the comparison against baselines: add theHOMME_SKIP_BASELINE_COMPAREcmake option (OFF by default). If ON, the test scripts do not compare the output against baselines withcprnc, and do not check that the baseline files exist. Add--no-baselinetotest_homme.pyto set it (viaNO_BASELINEinctest_script.cmake). It cannot be used together with--generate. Behavior is unchanged when the option is not used.Homme: add bfb machine files for the ghci CI runners: addghci-gnu-bfbandghci-intel-bfb, which turn onHOMMEXX_BFB_TESTINGwith strict fp (and no fma) flags, and then include the regular file.Workflows: add bfb jobs to the homme testing workflow: add thebfbaxis to the workflow matrix (gnu and intel; a cuda bfb job is left as a TODO, since it needs a baseline from the cpu bfb build). bfb jobs run with--bfb --no-baseline, so they do not need blessed baselines.Workflows: raise the ctest timeout per test in the homme testing workflow: pass--timeout 1800to ctest (Homme's own per-test limit,HOMME_TESTING_TIMELIMITinghci.cmake). ctest kills a test after 10 minutes by default, and the runners' hosts are shared (e.g., other users running builds): in onegnujobbaro2btook 556s instead of 265s andbaro2dwas killed at 600s. The value is passed as--ctest-arg="--timeout 1800", with a space, since ctest silently ignores--timeout=1800.Homme: stop dumping the ctest log files on failure: removedump_last_ctest_logfromtest_homme.pyand the "Show stderr/stdout of failed tests" step from the workflow. With-V --output-on-failurethe progress and the output of failing tests are already in the job log, and the logs (Testing/**) and.errfiles are uploaded as an artifact. The workflow step also did not work in generate mode. When ctest fails,test_homme.pynow prints the directory with the logs.Status / notes
intel-bfbpassed, including the*_cxx_vs_f90comparisons. In the latest full run,intel-bfbandintelpassed too.gnujob of that run failed only because of the timeout above (baro2dkilled at 600s);gnu-bfbandcudahad not run yet.-V, ctest prints progress dots for them); the error text is inTesting/Temporary/LastConfigure*.logandLastBuild*.login the uploaded artifact.Generated by Claude Code