-
Notifications
You must be signed in to change notification settings - Fork 434
EAMxx: update EKAT submodule and adapt EAMxx #7362
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great! I like the test data refactor.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree, there's lots of good stuff here. Nicely and carefully done, @bartgol .
1046507
to
cb4c11d
Compare
@tcclevenger @jeff-cohere @jgfouca The deprecation of
Maybe option 3 is best, even though it ends up updating ekat twice in a short time? |
1 seems easiest. |
I agree with Jim. 1 would really be "asap". :-) |
I agree, 1. |
8af2326
to
5d63a77
Compare
|
5d63a77
to
e302fb3
Compare
7c8b232
to
d6c364c
Compare
Mostly changing includes, to remove ekat/*/ from the filename path, and removing includes not needed
In particular, physics_test_data.hpp only belongs in testing. So add those sources to scream_test_support target and link the test support target against unit tests
Make sure we match settings of eamxx
d6c364c
to
878c029
Compare
Update the EKAT submodule and change EAMxx to conform to the new version of EKAT. [BFB]
Update the EKAT submodule and change EAMxx to conform to the new version of EKAT.
Update the EKAT submodule and change EAMxx to conform to the new version of EKAT.
A (very disruptive) PR in EKAT (not yet integrated) will break EKAT into sub-packages, to facilitate its use in other applications without the need to bring in every single ekat dependency.
This PR adapts to those changes, which can be summarized in the following points:
ekat
library, but a bunch ofekat::XYZ
libraries, including aekat::AllLibs
one (for convenience).ekat_kokkos_utils.hpp
broken in two:ekat_reduction_utils.hpp
andekat_team_policy_utils.hpp
ExeSpaceUtils
no longer persent. In its place, useTeamPolicyFactory
(fromekat_team_policy_utils.hpp
) for team policy creation, andReductionUtils
(fromekat_reduction_utils.hpp
) for reduction utilities; both are templated on exec space, just likeExeSpaceUtils
was.ScalarTraits
no longer providesinvalid()
andquiet_NaN()
, but only provides type info. The functionsquiet_NaN()
andfinite_max()
have been added inekat_math_utils.hpp
, but may disappear once we have C++20 (see comment inekat_pack.hpp
about "introspective" constepxr)ekat_file_utils.hpp
has been purged, and all tests now simply use the standard libraryifstream
/ofstream
capabilities.ekat::KokkosUtils
hasinitialize_kokkos_session
(and its finalize).EkatCreateUnitTestExec
no longer hasEXCLUDE_TEST_SESSION
, but instead hasUSER_DEFINED_TEST_SESSION
, for more expressivity.The biggest challenge was how to break ekat into N packages, since some utilities were "generic enough", but required knowledge about kokkos (e.g., printing the current arch configuration seems generic enough to be in ekat::Core, but the kokkos backend info requires kokkos to be compiled).
The current result seems to be the best compromise between flexibility (for new customers) and robustness (for existing customers).
I have NOT updated mam4xx/haero to use the new ekat, so all their tests may fail to build (or even configure). I am opening the PR anyways, in the hope to get a build of all the rest until mam4xx is update too.
IMPORTANT NOTE FOR REVIEWERS: I strongly recommend to review the commits individually. I tried to group changes by topic, so reviewing one commit may be simpler; ha couple of commits are quite large, but seeing the same pattern over and over may make it easier to review.