Skip to content
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

Update CM3 versions for MOM6, CMEPS, CDEPS, WW3, and share #281

Draft
wants to merge 7 commits into
base: cm3
Choose a base branch
from

Conversation

blimlim
Copy link

@blimlim blimlim commented Feb 19, 2025

This pull request updates versions for MOM6, CMEPS, CDEPS, WW3 and CESM_share on the CM3 branch to bring them into line with the versions on main. We originally hopped to update just one component at a time, but dependent changes between components, library versions, and the Cmake files meant that I've ended up updating all these components at once.

The CMEPS version will be updated once the following PRs on our CMEPs fork are merged: ACCESS-NRI/CMEPS#4 and ACCESS-NRI/CMEPS#6, and so I've set this as a draft. I suspect there might also be changes required around a lot of the Cmake changes, which I'm not too experienced with.

This PR updates to versions:

There have been several changes to the CmakeLists files in main since the cm3 branch split off. These include changes to the sources, and also changes to the way the libraries are named and organised. In each case, I tried to take the changes from main. For reviewers: the differences between these files and the versions in main are shown here

The main branch also updated several library and module versions:

  • esmf8.4.2 -> esmf/8.5.0
  • fms/2021.03.01 -> fms/2023.02
  • parallelio/2.5.10 -> parallelio/2.6.2
  • intel-compiler/2021.6.0 -> intel-compiler/2021.10.0
  • openmpi/4.1.4 -> openmpi/4.1.5
  • Fortranxml is no longer built here, and loaded via fortranxml/4.1.2

These new versions will need to be added to the cm3-suite.

These changes break CM3 bit reproducibility. I'll include a comparison on flux conservation and water balance before and after the changes.

@blimlim
Copy link
Author

blimlim commented Feb 20, 2025

The gcc compilation fails due to character arrays with different entries in esmFldsExchange_access_mod.F90, e.g:

      S_flds = (/'Sa_pslv', & ! inst_zonal_wind_height10m
                  'So_duu10n' /) ! inst_temp_height_surface

Apparently intel compilers let this through, but gfortran doesn't allow it, which is why building manually on Gadi has worked so far.

@blimlim blimlim force-pushed the cm3-update-mom6-cmeps-cdeps-ww3-share branch from 9fe64af to 919529a Compare February 20, 2025 01:39
@anton-seaice
Copy link
Contributor

anton-seaice commented Feb 20, 2025

Hi @blimlim

I think it might be easier to manage this by making a new branch from rebasing the cm3 branch onto main (or an equivalent approach would be to start with a fresh branch of main, and then cherry-picking each commit from the cm3 branch).

And then build using spack (use the CI) with +install_libraries turned on. This means all your versions will be up to date and divorced of any cosima spack stuff. Then we can just point to the modules deployed in 'vk83' in the build script until there is a spack package for CM3. You might need to update your CICE version at the same time, depending on how dependencies have changed.

@blimlim
Copy link
Author

blimlim commented Feb 20, 2025

Thanks @anton. The approach was to do the updates step wise, starting with just MOM, and then updating CICE in a separate PR, checking what has changed in the simulations at each step. Once the versions were in line with main, we'd then merge in from main.

Would it still be possible to do this starting from main? One reason we wanted to do it this way is that we have much more changes in the CICE code, and so that step may be much more involved

@blimlim
Copy link
Author

blimlim commented Feb 20, 2025

Oh, I guess I could do that but just not update CICE. I'll try it out

@anton-seaice
Copy link
Contributor

I don't really think doing it piecewise is worth the effort - e.g. there's no way to know which result is correct after making the change. And in general there are too many changes where versions are not cross compatible to be confident in this approach.

Either way - start from the latest deps in ACCESS-NRI/ACCESS-OM3 and build up from there. I've kicked off a build with new deps and old code (see ACCESS-NRI/ACCESS-OM3#50) to see if it works.

Would it still be possible to do this starting from main? One reason we wanted to do it this way is that we have much more changes in the CICE code, and so that step may be much more involved

I think just drop the commit which updates CICE in the new cm3 branch and see !

@anton-seaice
Copy link
Contributor

This looks like a promising start - ACCESS-NRI/ACCESS-OM3#50 (comment) :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants