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

Introduction of new post phases for performance updates #146

Merged
merged 29 commits into from
Dec 8, 2020

Conversation

mvertens
Copy link
Collaborator

@mvertens mvertens commented Dec 7, 2020

Description of changes

Introduction of new post phases for performance updates

Specific notes

This PR introduces new post phases for each component in order to remove duplicate mappings that were done in the prep phases.
Code Changes:

  • mapping has been moved from prep phases and put into the relevant post phases - EXCEPT for cases where updated ice fraction is needed in the mapping
  • med_merge_mod.F90 has been modified to zero out fields in the appropriate place (this should have been done this way in the initial implementation)
  • med_fraction_set is now a method that is called from med_phases_post_ice
  • med_phases_prep_ocn_map is no longer needed, med_phases_prep_ocn_merge and med_phases_prep_accum_fast have been unified into med_phases_prep_ocn_accum

Run Sequence Changes:

  • the auto generated runsequences in CIME have been modified to account for this
  • the following should be the new run sequence for UFS CMEPS warm run sequence
runSeq::
@3600
   MED med_phases_prep_ocn_avg
   MED -> OCN :remapMethod=redist
   OCN
   @900
     MED med_phases_prep_atm
     MED med_phases_prep_ice
     MED -> ATM :remapMethod=redist
     MED -> ICE :remapMethod=redist
     ATM
     ICE
     ATM -> MED :remapMethod=redist
     MED med_phases_post_atm
     ICE -> MED :remapMethod=redist
     MED med_phases_post_ice
     MED med_phases_prep_ocn_accum
   @
   OCN -> MED :remapMethod=redist
   MED med_phases_post_ocn
   MED med_phases_restart_write
   MED med_phases_profile
@
::

Contributors other than yourself, if any: None

CMEPS Issues Fixes: #145, #141

Are changes expected to change answers?

  • bit for bit
    The results are bfb EXCEPT for the following mediator history differences due to the introduction of post phases:
  • AtmImp_ocn_xxx
  • lndExp_Sg_ice_covered_elevN and lndExp_Sg_topo_elevN in ERS_Vnuopc_Ld5.T31_g37_gl20.I1850Clm50SpG
  • different at roundoff level
  • more substantial

Any User Interface Changes (namelist or namelist defaults changes)?

  • Yes - the run sequence is different
  • No

Testing performed if application target is CESM:(either UFS-S2S or CESM testing is required):

  • (recommended) CIME_DRIVER=nuopc scripts_regression_tests.py
    • machines:
    • details (e.g. failed tests):
  • (required) CESM testlist_drv.xml
    • machines and compilers: cheyenne/intel
    • details (e.g. failed tests): compared to baseline nov28newrunseq/ and generated new baselines dec06
  • (optional) CESM prealpha test
    • machines and compilers
    • details (e.g. failed tests):

Testing performed if application target is UFS-S2S:

  • (required) UFS-S2S testing
    • description:
    • details (e.g. failed tests):

Hashes used for testing:

  • CESM:
    • repository to check out: https://github.com/ESCOMP/CESM.git
    • branch: nuopc_dev
    • hash: dffd1e7
      This has contains branches for CDEPS and CIME (in addition to CMEPS) that need to have PRs to master.
  • UFS-S2S, then umbrella repostiory to check out and associated hash:
    • repository to check out:
    • branch:
    • hash:

Mariana Vertenstein and others added 22 commits November 28, 2020 12:57
…lc->lnd for now - but also upcoming glc->ocn and glc->ice but only after a receive from glc
…tent with other phases and fixed bugs in run sequence for D and TG compsets
@mvertens mvertens mentioned this pull request Dec 7, 2020
7 tasks

Testing performed if application target is UFS-S2S:
- [ ] (required) UFS-S2S testing
- [ ] (recommended) UFS-S2S testing
- description:
- details (e.g. failed tests):

Copy link
Collaborator

Choose a reason for hiding this comment

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

Is it possible to add UFS-HAFS to the list?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@uturuncoglu - good point. I just added it.

call ESMF_AttributeGet(gcomp, name="Profiling", value=cvalue, &
convention="NUOPC", purpose="Instance", rc=rc)
! Obtain profiling level
call NUOPC_CompAttributeGet(gcomp, name="Profiling", value=cvalue, isPresent=isPresent, isSet=isSet, rc=rc)
Copy link
Collaborator

Choose a reason for hiding this comment

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

We had a problem before related with setting verbosity and profiling. Does this fix it? Providing string such as low, high and max were not working and also there was some restriction in CIME side to set default value for the integer XML entiries.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

What it does fix is that I can set the profiling to the maximum number (65535) and it will work. I am printing this out to the mediator log file now.


logical :: glc2lnd_coupling = .false.
logical :: cism_evolve = .false.
real(r8), pointer :: dataptr_scalar_lnd(:,:)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Do we need to assign them NULL?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

good idea - thanks for pointing this out.

Mariana Vertenstein and others added 2 commits December 7, 2020 12:51
@DeniseWorthen
Copy link
Collaborator

In the current ufs run sequence, we have after ice->med, these 4 phases:

 MED med_fraction_set
 MED med_phases_prep_ocn_map
 MED med_phases_prep_ocn_merge
 MED med_phases_prep_ocn_accum_fast
 MED med_phases_profile

So med_phases_post_ice and prep_ocn_accum take care of the fraction_set, the ocn_map and the ocn_merge ?

@mvertens
Copy link
Collaborator Author

mvertens commented Dec 7, 2020 via email


! local variables
type(InternalState) :: is_local
character(len=*),parameter :: subname='(med_phases_prep_ice)'
Copy link
Collaborator

@DeniseWorthen DeniseWorthen Dec 7, 2020

Choose a reason for hiding this comment

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

This should be med_phases_post_ocn

@@ -260,7 +131,7 @@ subroutine med_phases_prep_ocn_accum_avg(gcomp, rc)
! local variables
type(InternalState) :: is_local
integer :: ncnt
character(len=*),parameter :: subname='(med_phases_prep_ocn_accum_avg)'
character(len=*),parameter :: subname='(med_phases_prep_ocn)'
Copy link
Collaborator

Choose a reason for hiding this comment

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

here: med_phases_prep_ocn_avg

@mvertens
Copy link
Collaborator Author

mvertens commented Dec 7, 2020 via email

@DeniseWorthen
Copy link
Collaborator

I've tested this in my fork of ufs-weather (#4b1f313).

All cpld and datm RTs passed after making all the correct changes to the run sequences.

@jedwards4b jedwards4b merged commit 0ccc872 into master Dec 8, 2020
@mvertens mvertens deleted the mvertens/postphases branch December 8, 2020 16:34
DeniseWorthen added a commit to NOAA-EMC/CMEPS that referenced this pull request Jan 11, 2021
* adds multiple ice sheet functionality (ESCOMP#140)
* adds post phases for performance enhancement (ESCOMP#146)
* adds ocn->glc (land ice) coupling at multiple levels (ESCOMP#148)
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.

misleading message in initialization
4 participants