Add GSI and rrfs_utl optional RRFS components#269
Conversation
The GSI and rrfs_utl are added as optional components that can be built by adding "ENABLE_RRFS=on" to the cmake build command. Alternatively, the "--rrfs" option may be used with the devbuild.sh convenience script.
|
@JeffBeck-NOAA, @jwolff-ncar, @gsketefian, @christinaholtNOAA, @gspetro-NOAA: This PR is in draft status, but I'd like to request feedback about where/how to add documentation for the proposed option that turns on building of GSI and rrfs_utl. I have added the necessary verbiage to the |
|
@christopherwharrop-noaa I think this implementation looks very clean and straightforward. Thanks for the contribution. I'd definitely like to hear from others you listed above. |
|
@christopherwharrop-noaa, I think we don't have an option excluding GSI and rrfs_utl from External.cfg in case that we don't want to check them out. |
|
@chan-hoo - I agree it would be better to not check out components that are not going to be built. Because of the way |
|
@christopherwharrop-noaa, I am sorry if my comment was not clear enough. My point was not the build script but the '-e' flag option in |
|
@chan-hoo - Thank you for the clarification. I guess I would be ok with having another |
|
One approach I didn't mention because it's very disruptive to the established way UFS Apps currently manage their externals is to do away with |
@christopherwharrop-noaa I think line 162 of the BuildRunSRW.rst file could be a good place to add a note about the --rrfs option. If users want to build the optional GSI and rrfs_utl optional components, they can add the ./devbuild.sh --platform=hera --rrfs Then you can add info on the cmake build command option to line 284. After "...4 parallel threads to prevent overly long installation times," you could add: If users want to build the optional GSI and rrfs_utl optional components, they can add cmake .. -DCMAKE_INSTALL_PREFIX=.. ENABLE_RRFS=on (Not sure that's how where you'd add ENABLE_RRFS=on/--rrfs, so definitely change the commands I suggested so that they work, but I hope this gives you an idea of where to add the info in the docs!) |
|
@gspetro-NOAA - Thank you! That is very helpful. I am not familiar with the documentation part of the repo, so I appreciate you providing those hints for me. |
|
@christopherwharrop-noaa One thing that didn't render properly in my examples above is that any code appearing under a ".. code-block:: console" directive needs to be indented. (Also, fyi, an empty line between the directive and the code snippet is required and an empty line after the code snippet as well.) |
|
@gspetro-NOAA - Is there a good way to see the rendered view before pushing to Github? |
@christopherwharrop-noaa You can build the locally or create a readthedocs.org account, which you can connect to your GitHub fork (in My Projects, click on Import a Project. Then, in the Versions tab, you can activate docs for a specific branch of your fork). There are some instructions for building locally in the User's Guide README file, which allows you to view the docs before pushing. However, it's one of those things where if it goes smoothly, it's great, but if it doesn't go smoothly, you could be troubleshooting for a while, and it's easier just to view on RTD after your push and then make any required changes. |
| #branch = develop | ||
| hash = a90b632 | ||
| local_path = src/gsi | ||
| externals = None |
There was a problem hiding this comment.
I guess the externals = None flag causes manage_externals to not check out any submodules. But at some point when we want users to actually run gsi, I'm assuming this will have to be removed so that the submodules get recursively checked out, correct? Will it take a long time to clone then?
There was a problem hiding this comment.
We will never turn on the checking out of GSI submodules. The only submodule that is relevant is the one for the fix files, and those are currently handled in other ways by the RRFS team. We can definitely discuss strategies for that. But, in terms of submodules for GSI, they will never be checked out by manage_externals unless and until they are moved from VLab to some where that is accessible to the public at large. It's not just a question of how long the checkout takes, it's also a question of access to VLab. Currently, checking out the external submodules for GSI is a non-starter.
There was a problem hiding this comment.
Seems I'm missing something basic. Why clone the top-level GSI repo if you can't clone its submodules? Is it because those submodules (except possibly the one for fix files) are not necessary for running GSI?
There was a problem hiding this comment.
Correct. The submodules are not needed. One of them libsrc was removed some time ago because it has been superseded by use of hpc-stack libs. The only one that remains is fix, and there are other ways of managing that. The RRFS team's local GSL fork of GSI also does not include any git submodules and they are managing use of any required fix files in other ways. We may need to get more information about GSI fix file requirements from the RRFS team and discuss how to handle any potential issues with that. However, as far as the GSI repository is concerned, we absolutely cannot include checking out of VLab git submodules for the SRW App. That is an absolute show stopper. So, regarding this issue there are two options:
- Check out GSI without the
fixsubmodule - Don't add GSI to the SRW App and do not add RRFS capabilities to the SRW App.
There was a problem hiding this comment.
We may need to ask Ming Hu about how they deal with GSI fix files. We could also ask Mike Lueken about plans to move the GSI fix files off of VLab to something that is publicly accessible. Given what I've heard about transitions of GSI off of VLab, I am not remotely hopeful about the latter.
There was a problem hiding this comment.
Thanks for the clarification. Are you comfortable merging this PR without the fix file issue being resolved? I.e. are you hopeful it will be resolved say by staging the fix files on system disk? Or do you think it's better to wait until that's resolved so users don't have to clone gsi and rrfs_utils without being able to use gsi?
There was a problem hiding this comment.
That's a great question. I think I'll need to talk with the RRFS GSL folks to understand what they're doing before I can have a good answer to that. I wanted to tag Ming here, but he doesn't appear to be on this repo, so I'll have to ping him offline.
There was a problem hiding this comment.
@gsketefian - What do you think about addressing the fix file issue in conjunction with adding the first RRFS workflow capability? I think we've established that resolving handling of the fix files may take some time and involve some creative solutions. My current favorite is putting the fix files in a bucket on the cloud, and then using a workflow task to retrieve them. Or alternatively, copying the fix files from the cloud could become part of the RRFS-related documentation as an additional step. These fix files DO change (quarterly?) so they need to be refreshed from time to time.
There was a problem hiding this comment.
@christopherwharrop-noaa That is fine with me. As long as cloning of the new repos is not a significant burden for users (which you said isn't). I'll approve.
|
@gsketefian - I wanted to alert you that I did push a couple updates since your approval. One was an update to the version of ncio being used (only used for extra RRFS components) to get ncio bug fixes that were recently released. Another was an update to the |
|
Machine: hera |
@christopherwharrop-noaa Those new changes all look good to me. The only thing I wonder is if there should be a disclaimer somewhere (in the docs?) clearly stating that although users can build gsi and rrfs_utl, they can't actually use them because of the missing fix files (as well as the fact that there are no workflow tasks to run them, etc). |
|
Good idea. I can make a note in the User's Guide rst file about that. |
|
Machine: jet |
|
@gsketefian - I just added a little NOTE in the docs indicating that the RRFS components are not yet available at runtime. Let me know if this accomplishes what you were thinking. |
|
I am currently waiting for ncio-1.1.2 to be installed on Cheyenne as per my request in this hpc-stack issue. Once that is installed, this PR is ready to be merged. |
|
@christopherwharrop-noaa I will take a look on this on cheyenne. |
|
Machine: hera |
|
Machine: jet |
|
Machine: jet |
|
|
) Includes: * A change in the Rocoto YAMLS to use && to link commands together. * Added documentation to the default_config.yaml. * Updates to machine YAMLs so we might expect the same behavior on all machines. * An update for the latest uwtools UPP config (using control_file task). * Linted and applied black to the whole scripts directory (ignoring a couple of out-of-scope files with pylint disable tags) * Turned on GH actions for this branch to keep our files linted. * Removed files and default variables that are no longer used.
DESCRIPTION OF CHANGES:
This PR closes #239. The GSI and rrfs_utl authoritative repositories are added as optional components that can be built by adding
ENABLE_RRFS=onto the cmake build command. Alternatively, they can be compiled using the--rrfsoption with thedevbuild.shconvenience script.TESTS CONDUCTED:
Manual build tests have been conducted on:
Automated WE2E and build tests passed on Jet and Hera.
DEPENDENCIES:
None
DOCUMENTATION:
Usage documentation in
devbuild.shhas been added. The rst files for the User's Guide have been updated to include use of RRFS build option as well as a table that lists descriptions of the RRFS executables.ISSUE:
Closes #239
CONTRIBUTORS:
Rahul Mahajan's refactor of the GSI cmake build was instrumental for enabling this work.