Skip to content

Merge rrfs.v1.0.0 to develop#982

Merged
ShunLiu-NOAA merged 27 commits into
NOAA-EMC:developfrom
ShunLiu-NOAA:test
Feb 25, 2026
Merged

Merge rrfs.v1.0.0 to develop#982
ShunLiu-NOAA merged 27 commits into
NOAA-EMC:developfrom
ShunLiu-NOAA:test

Conversation

@ShunLiu-NOAA
Copy link
Copy Markdown
Contributor

@ShunLiu-NOAA ShunLiu-NOAA commented Feb 19, 2026

Description

The rrfsv1.0.0 branch was created in March 2024 when the RRFS code was frozen for pre-implementation testing. Since then, several updates have been applied to this branch:

Fixed a bug in read_radar. (#744)
Integrated GDIT's performance optimizations for RRFS. (#841)
Initialized variables in observer_fv3_reg.f90.
Resolved issues with CTest when running in debug [mode.] (#862)
Updated bufr_d to bufr_4 for compatibility with BUFR v12.1.0. (#963)

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How Has This Been Tested?
These changes were tested in Realtime RRFS workflow by EMC and NCO.

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • New and existing tests pass with my changes
  • Any dependent changes have been merged and published

hu5970 and others added 18 commits May 7, 2024 11:25
This PR is to bring read_radar bug fix (NOAA-EMC#738) committed in the develop branch to RRFS release branch.
NOAA-EMC#841)

add GDIT's performance optimization for RRFS to release branch
initialize variables in observer_fv3reg.f90 to avoid the warning message when compiling
…OAA-EMC#862)

This is a draft PR to show fix for problems when running ctests using
debug mode built GSI at rrfs.1.0.0.
This makes small changes needed for this branch to work with BUFR/12.2,
which is the version being used for the RRFS implementation.
Add the GOES-19 satellite ID to the read-in list so that RRFSv1 can
properly use abi_g19 data.
merge EMC repo/Release/rrfs.v1.0.0 to my fork
merging rrfs.v1.0.0 into test
@ShunLiu-NOAA
Copy link
Copy Markdown
Contributor Author

ctest on wcoss2
Test project /lfs/h2/emc/lam/noscrub/emc.lam/Shun.Liu/gsi_regression/GSI/build
Start 1: global_4denvar
Start 2: rtma
Start 3: rrfs_3denvar_rdasens
Start 4: hafs_4denvar_glbens
Start 5: hafs_3denvar_hybens
Start 6: global_enkf
1/6 Test #3: rrfs_3denvar_rdasens ............. Passed 735.48 sec
2/6 Test #6: global_enkf ...................... Passed 979.93 sec
3/6 Test #2: rtma ............................. Passed 1156.43 sec
4/6 Test #5: hafs_3denvar_hybens .............. Passed 1223.76 sec
5/6 Test #4: hafs_4denvar_glbens .............. Passed 1404.88 sec
6/6 Test #1: global_4denvar ................... Passed 1925.21 sec

100% tests passed, 0 tests failed out of 6

Total Test time (real) = 1925.22 sec

@ShunLiu-NOAA
Copy link
Copy Markdown
Contributor Author

ctest on ursa:
Test project /scratch4/NCEPDEV/fv3-cam/Shun.Liu/GSI/build
Start 1: global_4denvar
Start 2: rtma
Start 3: rrfs_3denvar_rdasens
Start 4: hafs_4denvar_glbens
Start 5: hafs_3denvar_hybens
Start 6: global_enkf
1/6 Test #3: rrfs_3denvar_rdasens ............. Passed 487.77 sec
2/6 Test #2: rtma ............................. Passed 728.79 sec
3/6 Test #6: global_enkf ...................... Passed 740.77 sec
4/6 Test #5: hafs_3denvar_hybens .............. Passed 793.08 sec
5/6 Test #4: hafs_4denvar_glbens .............. Passed 852.80 sec
6/6 Test #1: global_4denvar ................... Passed 1230.19 sec

100% tests passed, 0 tests failed out of 6

@ShunLiu-NOAA ShunLiu-NOAA marked this pull request as ready for review February 20, 2026 18:07
@RussTreadon-NOAA RussTreadon-NOAA self-requested a review February 20, 2026 18:09
Copy link
Copy Markdown

@HuiLiu-NOAA HuiLiu-NOAA left a comment

Choose a reason for hiding this comment

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

Thanks.
I tested these modifications to the GSI develop/ branch in a retro DA test of conventional + AMV data, and the obs space diagnostics are identical to the RRFS release version/.

Comment thread modulefiles/gsi_wcoss2.intel.lua
Comment thread modulefiles/gsi_wcoss2.intel.lua Outdated
Comment thread src/enkf/loadbal.f90 Outdated
Comment thread src/enkf/enkf.f90
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR merges the RRFS v1.0.0 release branch into develop, incorporating bug fixes, performance optimizations, and compatibility updates accumulated since the branch was frozen in March 2024. The changes include GDIT's performance optimizations using OpenMP parallelization and file-based caching, variable initialization fixes for debug mode, radar observation bug fix, and BUFR v12.1.0 compatibility updates.

Changes:

  • Performance optimizations with OpenMP parallelization and node-local file caching for grid coefficient computation
  • Variable initialization fixes to resolve debug mode CTest issues
  • Integration of BUFR v12.1.0 compatibility changes
  • Addition of timing diagnostics for ensemble member reading
  • New CRC32 module for portable node identification

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
src/gsi/read_iasi.f90 Initializes data_all array to zero
src/gsi/mod_fv3_lola.f90 Major performance optimization with OpenMP, file caching, and MPI node-aware broadcasting
src/gsi/hybrid_ensemble_isotropic.F90 OpenMP parallelization and file caching optimization for normalization factors
src/gsi/gsi_files.cmake Adds crc32 source files to build
src/gsi/get_gefs_for_regional.f90 Adds MPI timing diagnostics
src/gsi/crc32_c.c New C implementation of CRC32 using zlib
src/gsi/crc32.F90 New Fortran module wrapping CRC32 for node identification
src/gsi/cplr_get_fv3_regional_ensperts.f90 Adds timing diagnostics and OpenMP parallelization
src/gsi/combine_radobs.f90 Initializes data_all_in array to zero
src/gsi/anisofilter.f90 Moves operations inside mype==0 conditional to avoid unnecessary computation
src/gsi/CMakeLists.txt Adds ZLIB dependency
src/enkf/loadbal.f90 Initializes arrays to zero with commented debugging MPI barrier
src/enkf/enkf.f90 Improves OpenMP thread safety using firstprivate to avoid false sharing
modulefiles/gsi_wcoss2.intel.lua Updates module versions including BUFR and adds zlib

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/gsi/crc32.F90 Outdated
Comment thread src/gsi/hybrid_ensemble_isotropic.F90 Outdated
Comment thread src/gsi/mod_fv3_lola.f90
Comment thread src/gsi/mod_fv3_lola.f90
Comment thread src/gsi/mod_fv3_lola.f90
Comment thread modulefiles/gsi_wcoss2.intel.lua Outdated
Comment thread src/gsi/hybrid_ensemble_isotropic.F90 Outdated
Comment thread src/gsi/mod_fv3_lola.f90 Outdated
Comment thread src/gsi/hybrid_ensemble_isotropic.F90
Comment thread src/gsi/hybrid_ensemble_isotropic.F90 Outdated
Comment thread src/gsi/hybrid_ensemble_isotropic.F90 Outdated
@ShunLiu-NOAA
Copy link
Copy Markdown
Contributor Author

Reran CTest with the above modifications on wcoss2.
Test project /lfs/h2/emc/lam/noscrub/emc.lam/Shun.Liu/gsi_regression/GSI/build
Start 1: global_4denvar
Start 2: rtma
Start 3: rrfs_3denvar_rdasens
Start 4: hafs_4denvar_glbens
Start 5: hafs_3denvar_hybens
Start 6: global_enkf
1/6 Test #3: rrfs_3denvar_rdasens ............. Passed 733.71 sec
2/6 Test #6: global_enkf ...................... Passed 920.30 sec
3/6 Test #2: rtma ............................. Passed 1158.91 sec
4/6 Test #5: hafs_3denvar_hybens .............. Passed 1284.53 sec
5/6 Test #4: hafs_4denvar_glbens .............. Passed 1405.24 sec
6/6 Test #1: global_4denvar ................... Passed 1926.22 sec

100% tests passed, 0 tests failed out of 6

Total Test time (real) = 1926.24 sec

@ShunLiu-NOAA
Copy link
Copy Markdown
Contributor Author

(base) [Shun.Liu@ufe01 build] ctest -j 6
Test project /scratch4/NCEPDEV/fv3-cam/Shun.Liu/GSI/build
Start 1: global_4denvar
Start 4: hafs_4denvar_glbens
Start 5: hafs_3denvar_hybens
Start 6: global_enkf
Start 2: rtma
Start 3: rrfs_3denvar_rdasens
1/6 Test #3: rrfs_3denvar_rdasens ............. Passed 726.02 sec
2/6 Test #2: rtma ............................. Passed 793.51 sec
3/6 Test #5: hafs_3denvar_hybens .............. Passed 1031.38 sec
4/6 Test #6: global_enkf ...................... Passed 1042.00 sec
5/6 Test #4: hafs_4denvar_glbens .............. Passed 1096.35 sec
6/6 Test #1: global_4denvar ................... Passed 1288.11 sec

100% tests passed, 0 tests failed out of 6

@RussTreadon-NOAA
Copy link
Copy Markdown
Contributor

It seems the Copilot review caught some real issues which should be addressed. Other suggestions are for improving the robustness of the code - a good thing for operational codes. We need approvals from two reviewers not including members of the GSI Handling Review Committee, to move this PR forward. Hui approved. @TingLei-NOAA would you please review the changes in this PR?

@TingLei-NOAA
Copy link
Copy Markdown
Contributor

I think @daniel.kokron (the developers of this important optimization session) could give us a quick clarification/explanation on this issue .
@daniel.kokron, would you please review those issues raised by Copilot and let us know what your opinions are? especially about this one #982 (comment). Thanks.

@ShunLiu-NOAA
Copy link
Copy Markdown
Contributor Author

Test project /lfs/h2/emc/lam/noscrub/emc.lam/Shun.Liu/gsi_regression/GSI/build
Start 1: global_4denvar
Start 2: rtma
Start 3: rrfs_3denvar_rdasens
Start 4: hafs_4denvar_glbens
Start 5: hafs_3denvar_hybens
Start 6: global_enkf
1/6 Test #3: rrfs_3denvar_rdasens ............. Passed 740.43 sec
2/6 Test #6: global_enkf ...................... Passed 918.74 sec
3/6 Test #2: rtma ............................. Passed 1155.83 sec
4/6 Test #5: hafs_3denvar_hybens .............. Passed 1223.00 sec
5/6 Test #4: hafs_4denvar_glbens .............. Passed 1402.62 sec
6/6 Test #1: global_4denvar ................... Passed 1925.52 sec

100% tests passed, 0 tests failed out of 6

Total Test time (real) = 1925.61 sec

@RussTreadon-NOAA
Copy link
Copy Markdown
Contributor

Thank you @ShunLiu-NOAA for rerunning ctests. To save you time, ctests can wait until all conversations are resolved.

@ShunLiu-NOAA
Copy link
Copy Markdown
Contributor Author

Thank you @ShunLiu-NOAA for rerunning ctests. To save you time, ctests can wait until all conversations are resolved.

Thank you @ShunLiu-NOAA for rerunning ctests. To save you time, ctests can wait until all conversations are resolved.

Thank you, Russ. I just wanted to ensure that these minor changes I made have no impact on the results.

@RussTreadon-NOAA
Copy link
Copy Markdown
Contributor

@ShunLiu-NOAA : We can move this PR forward once we get feedback from Dan regarding the two remaining open conversations. Would you please follow up with Dan?

@RussTreadon-NOAA RussTreadon-NOAA self-requested a review February 24, 2026 16:00
Comment thread src/enkf/loadbal.f90 Outdated
! assume work load proportional to number of 'nearby' obs
call estimate_work_enkf1(numobs) ! fill numobs array with number of obs per horiz point
! distribute the results of estimate_work to all processors.
! added mpi_barrier for debug mode, on wcoss2.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@ShunLiu-NOAA Is this comment line still relevant? seems it should be removed to avoid confusing.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

removed.

Copy link
Copy Markdown
Contributor

@TingLei-NOAA TingLei-NOAA left a comment

Choose a reason for hiding this comment

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

Now looks good to me!

Copy link
Copy Markdown
Contributor

@RussTreadon-NOAA RussTreadon-NOAA left a comment

Choose a reason for hiding this comment

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

Two peer reviews and approvals plus input from Dan Kokron.

Approve so @ShunLiu-NOAA can merge.

@ShunLiu-NOAA
Copy link
Copy Markdown
Contributor Author

HERA ctest:
(base) [Shun.Liu@ufe01 build] ctest -j 6
Test project /scratch4/NCEPDEV/fv3-cam/Shun.Liu/GSI/build
Start 1: global_4denvar
Start 2: rtma
Start 3: rrfs_3denvar_rdasens
Start 4: hafs_4denvar_glbens
Start 5: hafs_3denvar_hybens
Start 6: global_enkf
1/6 Test #3: rrfs_3denvar_rdasens ............. Passed 487.56 sec
2/6 Test #2: rtma ............................. Passed 728.71 sec
3/6 Test #6: global_enkf ...................... Passed 741.85 sec
4/6 Test #5: hafs_3denvar_hybens .............. Passed 792.25 sec
5/6 Test #4: hafs_4denvar_glbens .............. Passed 911.57 sec
6/6 Test #1: global_4denvar ................... Passed 1290.51 sec

100% tests passed, 0 tests failed out of 6

Total Test time (real) = 1290.52 sec

WCOSS2 ctest:
Test project /lfs/h2/emc/lam/noscrub/emc.lam/Shun.Liu/gsi_regression/GSI/build
Start 4: hafs_4denvar_glbens
Start 1: global_4denvar
Start 5: hafs_3denvar_hybens
Start 2: rtma
Start 6: global_enkf
Start 3: rrfs_3denvar_rdasens
1/6 Test #3: rrfs_3denvar_rdasens ............. Passed 732.93 sec
2/6 Test #6: global_enkf ...................... Passed 857.42 sec
3/6 Test #2: rtma ............................. Passed 1095.93 sec
4/6 Test #5: hafs_3denvar_hybens .............. Passed 1286.59 sec
5/6 Test #4: hafs_4denvar_glbens .............. Passed 1462.09 sec
6/6 Test #1: global_4denvar ................... Passed 1926.72 sec

100% tests passed, 0 tests failed out of 6

Total Test time (real) = 1926.91 sec

@RussTreadon-NOAA
Copy link
Copy Markdown
Contributor

@ShunLiu-NOAA : I think this PR closes some GSI issues.

I will close #981.

What about #860. Does this PR also close this issue?

Any other GSI issues we can close now that this PR has been merged?

@ShunLiu-NOAA
Copy link
Copy Markdown
Contributor Author

@RussTreadon-NOAA We can also close issue #860 (#860), as it should be resolved by the rrfs release branch.

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.

9 participants