Skip to content

Homme: add bfb jobs to the homme testing workflow, raise the ctest timeout, drop the log dumps - #8958

Open
bartgol wants to merge 5 commits into
masterfrom
bartgol/homme/bfb-ci-testing
Open

bartgol wants to merge 5 commits into
masterfrom
bartgol/homme/bfb-ci-testing

Conversation

@bartgol

@bartgol bartgol commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

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):

  1. Homme: allow to skip the comparison against baselines: 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 (via NO_BASELINE in ctest_script.cmake). It cannot be used together with --generate. Behavior is unchanged when the option is not used.
  2. Homme: add bfb machine files for the ghci CI runners: 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.
  3. Workflows: add bfb jobs to the homme testing workflow: add the bfb axis 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.
  4. Workflows: raise the ctest timeout per test in the homme testing workflow: pass --timeout 1800 to ctest (Homme's own per-test limit, HOMME_TESTING_TIMELIMIT in ghci.cmake). ctest kills a test after 10 minutes by default, and the runners' hosts are shared (e.g., other users running builds): in one gnu job baro2b took 556s instead of 265s and baro2d was killed at 600s. The value is passed as --ctest-arg="--timeout 1800", with a space, since ctest silently ignores --timeout=1800.
  5. Homme: stop dumping the ctest log files on failure: remove dump_last_ctest_log from test_homme.py and the "Show stderr/stdout of failed tests" step from the workflow. With -V --output-on-failure the progress and the output of failing tests are already in the job log, and the logs (Testing/**) and .err files are uploaded as an artifact. The workflow step also did not work in generate mode. When ctest fails, test_homme.py now prints the directory with the logs.

Status / notes

  • In an earlier run (when this was part of Workflows: add homme standalone testing on ghci runners #8952), intel-bfb passed, including the *_cxx_vs_f90 comparisons. In the latest full run, intel-bfb and intel passed too.
  • The gnu job of that run failed only because of the timeout above (baro2d killed at 600s); gnu-bfb and cuda had not run yet.
  • Configure and build failures now show only the exit code in the job log (with -V, ctest prints progress dots for them); the error text is in Testing/Temporary/LastConfigure*.log and LastBuild*.log in the uploaded artifact.

Generated by Claude Code

@bartgol bartgol added HOMME standalone issues with the standalone HOMME code that dont impact E3SM CI: workflow change approved Allow gh action PR testing on ghci-snl-* machines for PRs that alter a worfklow file labels Oct 23, 2026
@bartgol bartgol self-assigned this Oct 23, 2026
@bartgol
bartgol added this pull request to stack #8961 October 23, 2026 16:30
@bartgol
bartgol removed this pull request from stack #8961 October 23, 2026 16:30
@bartgol
bartgol added this pull request to stack #8962 October 23, 2026 17:23
Base automatically changed from claude/tender-albattani-n2zxdo to master October 27, 2026 17:50
@bartgol
bartgol force-pushed the bartgol/homme/bfb-ci-testing branch from 515750e to 3e246c2 Compare October 27, 2026 17:50
@bartgol
bartgol marked this pull request as ready for review October 27, 2026 17:50
@bartgol
bartgol force-pushed the bartgol/homme/bfb-ci-testing branch from 3e246c2 to 52dac0f Compare October 28, 2026 21:22
@bartgol bartgol changed the title Workflows: add bfb jobs to the homme testing workflow Homme: add bfb jobs to the homme testing workflow, raise the ctest timeout, drop the log dumps Oct 28, 2026
@bartgol
bartgol requested a balanced review from Copilot October 28, 2026 22:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 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

Comment thread .github/workflows/homme-testing.yml Resolved
Comment thread .github/workflows/homme-testing.yml Resolved
@bartgol bartgol added the BFB PR leaves answers BFB label Oct 28, 2026
bartgol and others added 5 commits October 28, 2026 22:55
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
bartgol force-pushed the bartgol/homme/bfb-ci-testing branch from 4636de7 to b59a77f Compare October 28, 2026 22:56

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BFB PR leaves answers BFB CI: workflow change approved Allow gh action PR testing on ghci-snl-* machines for PRs that alter a worfklow file HOMME standalone issues with the standalone HOMME code that dont impact E3SM

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants