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

add 9-deg ocean+ice file generation, specification of ATM resolutions via namelist #1013

Open
wants to merge 17 commits into
base: develop
Choose a base branch
from

Conversation

DeniseWorthen
Copy link
Contributor

@DeniseWorthen DeniseWorthen commented Jan 15, 2025

DESCRIPTION OF CHANGES:

Adds a 9deg ocean and ice resolution to the list of supported resolutions and updates the regression test to generate the mapped ocean maps via a list of desired resolutions in rt.conf.

A new BASELINE/900 directory is now added and the following new files will now be added in the BASELINE/500 directory:

C24.mx500.tile1.nc
C24.mx500.tile2.nc
C24.mx500.tile3.nc
C24.mx500.tile4.nc
C24.mx500.tile5.nc
C24.mx500.tile6.nc
Ct.mx500.to.C24.nc
rect.9p00_SCRIP.nc
tripole.mx500.Ct.to.rect.9p00.bilinear.nc
tripole.mx500.Ct.to.rect.9p00.conserve.nc

TESTS CONDUCTED:

If there are changes to the build or source code, the tests below must be conducted. Contact a repository manager if you need assistance.

  • Compile branch on all Tier 1 machines using Intel (Orion, Jet, Hera, Hercules and WCOSS2).
  • Compile branch on Hera using GNU.
  • Compile branch in 'Debug' mode on WCOSS2.
  • Run unit tests locally on any Tier 1 machine.
  • Run the cpld_gridgen test locally on all Tier 1 machines.

Describe any additional tests performed.

  1. Compiled and ran 900 | 24,12 case on Hercules in debug mode.
  2. Tested against the existing baseline on Hera after modifying the rt.conf to match what is currently produced (ie, C48->C1152). All baselines passed.
  3. ran build_all.sh w/ testing and docs ON

ISSUE:

Fixes #1004
Needed by ufs-community/ufs-weather-model#2508

* baseline successfully created on hera for all ocn/atm combinations
@DeniseWorthen
Copy link
Contributor Author

DeniseWorthen commented Jan 17, 2025

@GeorgeGayno-NOAA I've been able to use the fix file location on Hera to generate all the mapped ocean masks for C12 thru C3072. Generation of the C3072 extends the time of the RT to more than an hour though. This is because the RegridWeight call happens in serial (even if the code were modified to run on more than 1 PET).

One note: All the mapped ocean masks currently in the fix directory (ie, /scratch1/NCEPDEV/global/glopara/fix/orog/20240917/C1152/ocean_mask/025) were not generated by me. I believe they were generated by Sanath, using his locally modified version of the cpld-gridgen. This must be the case, because until #993, only "matched" combinations of atm and ocean resolutions were produced. I've checked what this PR is creating vs those ocean_mask files and there are B4B differences, but I do not believe them to be consequential (O~10-14).

@GeorgeGayno-NOAA
Copy link
Collaborator

To reduce the RT wall clock time, do we need to test every combination? Can we just do a subset? If I set up the test as follows:

# TEST_NAME | ATMRESLIST

  mx025 | 1152
  mx050 | 768
  mx100 | 192,384
  mx500 | 48,96
  mx900 | 12,24

Everything runs in about 24 minutes:

run_025.log:real        17m40.759s
run_050.log:real        5m27.939s
run_100.log:real        1m27.381s
run_500.log:real        0m7.415s
run_900.log:real        0m4.461s

@GeorgeGayno-NOAA
Copy link
Collaborator

Another way to speed things up? Could the mx??? tests be run in parallel? Most UFS_UTILS tests run that way. For example, see the chgres_cube driver scripts. All tests are submitted to the queue. Then, there is a job that waits for all tests to complete, then prints a summary.

@DeniseWorthen
Copy link
Contributor Author

@GeorgeGayno-NOA Regarding running in parallel, I'm still relying on the intial rt.sh functionality that Minsuk put in. I don't really have the time to better develop a RT testing framework for cpld-gridgen. Do you have someone on your side who could take that on?

In terms of what to generate, there are two really issues I think. One, is a generating a sufficient baseline to test PRs against---that doesn't have to be every combination. A second is the production of "things" needed to test various workflows (like the post-weights). Right now, we're populating the fix files w/ the results of the baseline RTs, which produces the cpld fix files required for any combination up to C1152. That gives workflows a simple place to grab anything they might need (eg post weights for C192mx025). I don't know if that is the right system though. Should GW be asked to generate what they need themselves?

The simplest solution is to leave C3072 off and maintain what we currently have--the RTs would run in the same time

mx025 | 48,96,192,384,768,1152 
(same for 050,100)
mx500 | 12,24
mx900 | 12,24

@GeorgeGayno-NOAA
Copy link
Collaborator

@GeorgeGayno-NOA Regarding running in parallel, I'm still relying on the intial rt.sh functionality that Minsuk put in. I don't really have the time to better develop a RT testing framework for cpld-gridgen. Do you have someone on your side who could take that on?

I was just curious it that is feasible. Maybe I can find time to work on it.

In terms of what to generate, there are two really issues I think. One, is a generating a sufficient baseline to test PRs against---that doesn't have to be every combination. A second is the production of "things" needed to test various workflows (like the post-weights). Right now, we're populating the fix files w/ the results of the baseline RTs, which produces the cpld fix files required for any combination up to C1152. That gives workflows a simple place to grab anything they might need (eg post weights for C192mx025). I don't know if that is the right system though. Should GW be asked to generate what they need themselves?

The simplest solution is to leave C3072 off and maintain what we currently have--the RTs would run in the same time

mx025 | 48,96,192,384,768,1152 
(same for 050,100)
mx500 | 12,24
mx900 | 12,24

I have no problem asking people to generate what they need. i.e., the rt.conf file would be setup for the regression testing and users can adjust it for their particular project. But let's just keep what we have for now. Can you baseline what you have above?

@DeniseWorthen
Copy link
Contributor Author

@GeorgeGayno-NOAA Sure, I will create baselines. Are the new C12 and C24 fix available everywhere (they weren't on hercules when I looked earlier today).

@DeniseWorthen
Copy link
Contributor Author

DeniseWorthen commented Jan 22, 2025

@GeorgeGayno-NOAA I found a bit of a hiccup and created an associated issue (NOAA-EMC/global-workflow#3247). I'll need to wait for that to get fixed before proceeding in my testing.

@DeniseWorthen
Copy link
Contributor Author

Baselines generated on the following platforms (jet will be done once maintenance is complete)

wcoss2: /lfs/h2/emc/nems/noscrub/denise.worthen/BASELINE
hera: /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/BASELINE
orion:  /work/noaa/stmp/dworthen/CPLD_GRIDGEN/BASELINE
hercules: /work2/noaa/stmp/dworthen/CPLD_GRIDGEN/BASELINE

@DeniseWorthen
Copy link
Contributor Author

@GeorgeGayno-NOAA FYI, I was able to build testing and docs on hera, but on hercules I got

CMake Error at /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/cmake-3.23.1-uqaeynr/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
Call Stack (most recent call first):
  /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/cmake-3.23.1-uqaeynr/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/cmake-3.23.1-uqaeynr/share/cmake-3.23/Modules/FindDoxygen.cmake:646 (find_package_handle_standard_args)
  CMakeLists.txt:132 (find_package)

@DeniseWorthen DeniseWorthen marked this pull request as ready for review February 5, 2025 19:05
@GeorgeGayno-NOAA
Copy link
Collaborator

@GeorgeGayno-NOAA FYI, I was able to build testing and docs on hera, but on hercules I got

CMake Error at /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/cmake-3.23.1-uqaeynr/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
Call Stack (most recent call first):
  /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/cmake-3.23.1-uqaeynr/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/cmake-3.23.1-uqaeynr/share/cmake-3.23/Modules/FindDoxygen.cmake:646 (find_package_handle_standard_args)
  CMakeLists.txt:132 (find_package)

I don't know if Doxygen is installed on Orion/Hercules. If the Doxygen built (without warnings) on Hera, that is fine.

@DeniseWorthen
Copy link
Contributor Author

All baselines are now generated

wcoss2: /lfs/h2/emc/nems/noscrub/denise.worthen/BASELINE
hera: /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/BASELINE
orion:  /work/noaa/stmp/dworthen/CPLD_GRIDGEN/BASELINE
hercules: /work2/noaa/stmp/dworthen/CPLD_GRIDGEN/BASELINE
jet: /lfs5/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/BASELINE

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.

Create a 9-deg ocean/ice domain for cpld_gridgen
2 participants