-
Notifications
You must be signed in to change notification settings - Fork 10
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
GitHub Issue NOAA-EMC/GSI#112. A refactor of CMake build framework. #327
GitHub Issue NOAA-EMC/GSI#112. A refactor of CMake build framework. #327
Conversation
…3gfs_ncio with ncio module, replace bufr_4_DA with bufr_d
Actually, on second thought (and thinking further), we do load more modules that are not needed for compiling (e.g. |
@MichaelLueken-NOAA @RussTreadon-NOAA |
…ent with other applications
@aerorahul I am unable to build the GSI on WCOSS - the cmake module isn't being loaded. I was able to correct this issue by altering modulefiles/gsi_wcoss_dell_p3.lua. Since cmake/3.20.0 is only available through the stack, hpc, hpc-ips, and hpc-impi needs to be set before cmake can be set. My gsi_wcoss_dell_p3.lua file looks like:
After making this change, the code built and the regression tests successfully ran. The code fails to compile on WCOSS2 as well. In ush/detect_machine.sh, I had to add:
through clogin09 and:
through dlogin09. Finally, in ush/module_setup.sh, I had to add a section for WCOSS2:
With these changes, I was able to build the executables on WCOSS2 and a test was submitted, which successfully ran. There were no issues encountered while attempting to compile on Hera using both the GNU and Intel compilers. The global_T62 was submitted and passed without issue for the Intel compiler. A single global_T62 test was run using the GNU executable, and it ran through to completion without issue. While building ncdiag and util/NMC_Bkerror, there were several warning messages that should be addressed before this work is submitted to the review committee and merged into the authoritative develop branch. For src/ndiag:
Looking in
corrects the line 179 issue. For util/NMC_Bkerror:
and:
Replacing 1.E-60 and 1.D-60 with 1.E-37 and 1.D-37, respectively, corrected the issues on lines 823, 2963, and 3198. Replacing E11.5 with E12.5 corrected the remark for line 3667. |
update detect_machine.sh and module-setup.sh for wcoss2. be smart in auto-detection. fix warnings in source codes.
Thanks @MichaelLueken-NOAA for the review, noting the issues and solutions. I don't know where the I have tested the builds on WCOSS2, WCOSS Dell, Orion and Hera. On Hera, I built with Intel and GNU. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@aerorahul Thank you very much for making the changes to ensure that the code builds on WCOSS, WCOSS2, Hera, and Orion. I have found one last minor issue that needs to be addressed, then this work will go out to the review committee. On line 45 of src/enkf/gridinfo_fv3reg.f90, please explicitly declare the components used from mpi. I have noted the necessary components in this review.
src/enkf/gridinfo_fv3reg.f90
Outdated
@@ -42,7 +42,8 @@ module gridinfo | |||
! | |||
!$$$ | |||
|
|||
use mpisetup, only: nproc, mpi_integer, mpi_real4, mpi_comm_world | |||
use mpi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All modules need to explicitly declare the components used. Please replace:
use mpi
with
use mpi, only: mpi_real4,mpi_comm_world
@MichaelLueken-NOAA / @aerorahul - The location of hpc-stack on Cheyenne has moved (replaced by Spack-based one managed by EPIC) and I'd like to get the Cheyenne modulefiles updated to reflect that because other parts of the UFS are already making those updates. Cheyenne is down all this week for annual maintenance, so I've been unable to test there. If this PR goes off to the review committee, would there still be an opportunity to update |
@christopherwharrop-noaa Generally, once changes are submitted to the review committee, no additional changes should be made. However, since the modification would be to the path of the modulefiles for Cheyenne, an exception could be made to allow changes to these two files after they have been submitted. Would it be best to apply these changes now, before submitting the work to the review committee? It is easier to back out of changes rather than apply changes in the middle of the process. So long as I can get these changes out to the review committee today, this work should be merged to the authoritative repository by next Wednesday, May 18. |
@MichaelLueken-NOAA - I do not want to delay the merging of this PR as it represents a important update that a lot of downstream projects are waiting for. And I certainly understand the rule you explained. I would have already proposed the update were it not for the fact that Cheyenne is down for annual maintenance (for a week) and I can't verify the change I'd propose. I think* that all that will be needed is to replace:
with
I'd prefer not to make the change without testing it first because the old hpc-stack is still in place (and still works until they remove it), and I don't want to risk merging broken settings. Cheyenne can sometimes yield surprising behavior. |
@MichaelLueken-NOAA - If I were to submit a new PR (after this one is merged) that ONLY touches the modulefiles for Cheyenne and nothing else, what would be the estimated turnaround time for getting that merged? Would that be something we could fast-track? |
@christopherwharrop-noaa Non-source code changes don't go out for review, so the modification to the modulefiles would be able to be merged to the authoritative repository immediately (so long as nothing else has been submitted to the review committee before hand). |
@MichaelLueken-NOAA - In that case, I don't want to perturb this PR with the Cheyenne module stuff. Let's leave this one as is. Once Cheyenne comes back online, I'll test and submit a new PR with those small Cheyenne build updates. |
@aerorahul At your earliest convenience, please add |
done. |
The due date for feedback from the review committee has passed without comment, so I will now give final approval to these changes and merge them to the authoritative repository. |
@christopherwharrop-noaa This work has been merged to the authoritative repository. As discussed previously, should we move forward with changing the MODULEPATH for gsi_cheyenne.intel.lua and gsi_cheyenne.gnu.lua at this time? |
@MichaelLueken-NOAA - Thank you! I have the Cheyenne update working for Intel, but it looks like the the newer hpc-stack on Cheyenne is missing an w3nco package (a dependency for nemsio) for Gnu. It's not a GSI issue, it's a hpc-stack issue. Most likely we just need to submit a request to have the appropriate w3nco installed. They are usually pretty fast with those requests. |
@christopherwharrop-noaa Okay, sounds good. Please let me know when everything is ready, create a new issue for the work, then follow the guidance here: to create a new PR to bring in the updated modulefiles for Cheyenne. |
What does this PR do:
a. Leverage packaged dependencies e.g. NCEPLibs.
b. Provide mechanism to import built and installed
ncdiag
,gsi
,enkf
in external packages along with their transitive dependencies.c. Remove hard-wired platform specifics in the build framework
a. Fix codes that fail to build with GNU Fortran compilers
b. Fixes many non-standard practices that are uncovered when building with the GNU compiler set. E.g. use of
.eqv.
when comparing logicals instead of==
.c. Adds
modulefile.ProdGSI.hera.gnu
to build on Hera with GNU. All codes were successfully built. It is recommended that the GSI is now always build tested with GNU going forward. Several warnings are detected with GNU compilers due to the use of deprecated Fortran coding standards.GSI-libsrc
(See PRs GitHub Issue NOAA-EMC/GSI#302. Removal of libsrc from the authoritative repository #329 and GitHub Issue NOAA-EMC/GSI#320. Replaced fv3gfs_ncio with hpc-stack built ncio. #340)a. Remove options to build third-party libraries e.g. NCEPlibs
b. Modify codes that previously built NCEPLIBS-ncio internally in the GSI.
ncdiag
andGSDCloud
as separate projects. This functionality enables 1b. Monitoring utilities should be their own project, but that is not pursued in this PR.README.cmake
withINSTALL.md
that outlines the dependencies, build and installation as well as regression testing guidelines and removing references to specific machines.build_all_cmake.sh
is replaced bybuild.sh
. Minor updates to other build related scripts are provided.Tagging @MichaelLueken-NOAA @christopherwharrop-noaa @christinaholtNOAA @arunchawla-NOAA @JacobCarley-NOAA