Clean up compiler flag specification#297
Conversation
|
Approving but we need to check the failures here. |
svahl991
left a comment
There was a problem hiding this comment.
Are the test failures here understood?
|
I'm not sure why this change in CRTM could cause so many failures in IODA. The CDash output is missing, which makes it hard to diagnose... and I haven't seen it in local testing. |
I've restarted the tests which should hopefully resolve issues 2 and 3. With luck, the third issue fixes the ioda test failures, but at least we should get cdash uploads this time. |
|
Just getting back from PTO -- just so I'm clear, the aforementioned IODA test failures occur with this proposed PR, but not with the current |
|
@fmahebert is this still something that needs to be done (i.e., is it working correctly for IODA, etc.)? |
|
Figured out the problem! The fix here isn't applying and the test run starting with the config from develop Inside the start-jedi-ci action here's the logs. Note both test_dependencies and test_strategy are incorrect. I'll need to fix this with a separate pull request, then we can merge it here and the tests should pass. |
Necessary for #297 to pass tests. Changes to this config must be submitted in order for CI actions to use them. This is because we use the pull_request_target event type which is necessary to maintain safety in a public repository.
|
Something still amiss here @eap, I wonder if the just-updated CI strategy is not correctly identifying CRTM's tests as tests to run during the "unit tests" check? |
|
I don't think we updated crtm to match what we did for all the other repos during the sprint, did we? |
|
Well this PR keeps delivering! New error building the bundle for integration CI: And note that the log includes So the jedi-bundle PR 140, merged two days ago, that updated the MPAS-Model tag is not being picked up? |
|
@fmahebert @eap I'm not sure what exactly is trying to be accomplished here. CRTM is not a "JEDI-only" component -- the requested changes appear to be overly specific toward supporting JEDI while (possibly) removing support for other stakeholders. I'm happy to make flag / compilers support modifications to resolve compatibility issues, but I also have to support other users / stakeholders across multiple compilers & versions / platforms -- most of whom operate outside of JEDI/UFO. Please set up a meeting with me at your convenience to discuss what the needs are. |
|
@BenjaminTJohnson — your position makes sense, and if this PR is too jedi-specific I'm ok with considering a different solution. The issues with develop compiler flags are,
Note nearly all JEDI repos had these issues as well, because CRTM develop is already following JEDI patterns for setting compiler flags. Making progress on these issues (across all of JEDI) was the goal of this set of PRs. However I don't believe anything is JEDI-specific, except perhaps the use of "jedi" in the name of one file in my PR. If that name or some other specific aspect of the PR is problematic for CRTM, I'm happy to iterate. Can you clarify why you say "the requested changes appear to be overly specific toward supporting JEDI"? I'll email you to set up a meeting to keep discussing this. |
fmahebert
left a comment
There was a problem hiding this comment.
Can't change-request on myself, but this PR needs changes:
| message( STATUS "Fortran compiler with ID ${CMAKE_Fortran_COMPILER_ID} will be used with CMake default options") | ||
| # Set CRTM-specific compiler flags | ||
| if(CMAKE_Fortran_COMPILER_ID STREQUAL GNU) | ||
| ecbuild_add_fortran_flags("-ffree-line-length-none") |
There was a problem hiding this comment.
Spoke with @BenjaminTJohnson — CRTM has the requirement of being buildable outside of the JEDI environment, in particular of being buildable as a standalone repo with a CMake (not ecbuild) build system.
Thus, these ecbuild functions shouldn't be used to specify flags.
I'll go back and rethink this PR to see if I can improve the consistency of CRTM flags with the rest of JEDI, while still falling within CRTM's constraints.
Description
As a first step towards cleaning JEDI's specification of compilers flags, this PR reorganizes and changes flags as follows:
cmake/build_type_compiler_flags.cmakeprovides default build-type compiler flags for compilers not in ecbuild; this could eventually be contributed upstream. This file should be identical in all JEDI repos.cmake/jedi_common_compiler_flags.cmakeprovides JEDI specific compiler flags; for example warning levels, floating-point behavior, etc. This file should be identical in all JEDI repos.This has been tested with gcc13, IntelLLVM 2025.3, Intel mixing
icxwith legacyifort; and also with Cray by David Davies at UKMO. In general, for these compilers, the cleaned up flags have fewer runtime floating-point issues, and more compile-time warnings.Issue(s) addressed
This is work towards https://github.com/JCSDA-internal/CI/issues/173
Dependencies
Part of a large family of PRs, see the CI issue for a complete list. These do not strictly depend on each other.
Impact
Impact on users:
Checklist
jedi-ci-test-select=intel