-
Notifications
You must be signed in to change notification settings - Fork 108
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
Upgrade library suite to spack-stack on non-production machines #859
Comments
@DavidHuber-NOAA how do you load these new libraries? |
@GeorgeGayno-NOAA Two paths are needed:
Next, load Note also that some of the library names have changed from hpc-stack. Most notably, netCDF has been split into |
@GeorgeGayno-NOAA |
Is there a deadline for this upgrade? |
This is holding up the migration of global-workflow to spack-stack. |
I ran all regression and unit tests on Hera after building with spack-stack. All tests completed successfully. The UFS is currently going through an upgrade to use spack-stack/1.5.0 (ufs-community/ufs-weather-model#1920). I am going to start running tests on Hera and Orion against the same spack-stack builds. |
@GeorgeGayno-NOAA I completed unit tests on both Hera and Orion successfully as well as regression tests on Hera. RTs on Orion timed out yesterday and the system is down for maintenance today, so I will spin those up again tomorrow. I also updated the ci/spack.yaml file to use the updated versions of various libraries. However, I am encountering a GitHub CI build error in sorc/orog_mask_tools.fd/orog.fd/mtnlm7_oclsm.F:3826 when attempting to call @AlexanderRichert-NOAA Is there a special variant I need to compile ip with here? Or am I missing something in ci/spack.yaml? |
Routine
|
@GeorgeGayno-NOAA It looks like the sorc/emcsfc_snow2mdl.fd/snow2mdl.F90:interp function also calls |
Unfortunately, not. |
I'm looking at this now. It's not obvious why it's failing given that "-DIP_V4" is set in the compiler command line and the code has "use ipolates_mod" in what appears to be the correct place. I don't think it's a build option issue for ip but I'm also not sure what's going on. I'll keep you posted. |
I can reproduce the issue on my personal computer, and I seem to be able to resolve it by removing -I/dev/shm/spack-uu/var/spack/environments/test/.spack-env/view/include_4 from the compile line. Ostensibly, it's finding the ipolates_mod.mod in that directory and trying to use it, but can't because it's the wrong data type. Might be a compiler bug since ostensibly it should keep searching for matching routines. In any case, probably the easiest thing would be to set the 'precision=d' variant for ip in spack.yaml since that's the only version of ip used by ufs_utils. |
Great, thanks for hunting that down, @AlexanderRichert-NOAA! It's interesting that it isn't an issue on Hera or Orion, but I agree that one way or the other UFS_utils should only point at include_d for ip. |
For posterity: It has to do with the use of the spack view in the CI, where bacio uses the _4 version, so it puts the include_4 path in there, then everything else is _d, so you end up with include_4 and include_d, and since ip defaults to building both 4 and d, there's a copy of the mod files in each of those two directories. On other systems where there's no spack view, there separate include flags for each package, i.e., the compiler command contains -I/path/to/bacio -I/path/to/ip etc. |
Ah, good to know. Thanks for the extra explanation! |
@AlexanderRichert-NOAA I tried building the spack environment with the variant |
I was toying with the that idea, but was hoping to avoid it at least for now... How difficult would it be to disable the 'view' in the spack environment and load the packages so that there are separate -I flags for each package? Alternatively, I just recently added a fix for that issue where ip can't be found in cmake if libip_4 wasn't built, so I could do a release that includes that and update the Spack recipe. Since the CI is using JCSDA spack that would be pretty quick. |
Well, I could change around the head CMakeLists.txt to call As for the spack fix to handle the case where libip_4 isn't built, that sounds like a solid path forward and probably less hack-ish. |
I think it will work if you set the the 'view' setting in spack.yaml to false, then do 'spack load ip sp ...rest of dependencies...' after the 'spack env activate' command in the ufs_utils build step. Meanwhile, I'll work on an ip release+recipe update. |
Unfortunately setting |
Sorry, I forgot to add you would then want to take away the preicison=d setting so it will go back to building ip_4, which is what the buggy cmake config is looking for in order to find the library. |
Shucks, I thought we had it. The build was successful, but the ctests are failed due to missing libraries (e.g. libpioc.so). I may need to load additional spack modules. I'll try it out again tomorrow. |
Hmm, libpioc is the parallelio library and I am loading that at ctest time, so it seems that something isn't right here. This only seems to be the issue for the intel tests. For the gcc tests, it is failing due to illegal instructions, which makes me think that the gcc compilers are not being loaded correctly, though it does indicate that parallelio is loaded correctly, otherwise the executables would not have started. I will try adding gcc to the list of loads and see where that gets me. |
@DavidHuber-NOAA I just released ip 4.4.0, which should let you use |
Thanks @AlexanderRichert-NOAA I will give it a try! |
It worked! Thanks @AlexanderRichert-NOAA. |
Note that the chgres RTs violate the debug QOS policy, so I changed the QOS to batch.
The UFS_Utls repository should be upgraded to use spack-stack libraries where available (all tier-1 and tier-2 systems except WCOSS2). This is in support of the global-workflow (NOAA-EMC/global-workflow#1868). To start, a test suite of libraries have been installed on Hera including ip/4.0.0 and gsi-ncdiag/1.1.2.
The text was updated successfully, but these errors were encountered: