Replies: 10 comments 6 replies
-
Hi @ehogan, that sounds great! Running such a thing every night might be a bit costly, which is why we started collecting a reduced set of simplified recipes for this purpose that should still cover most of the ESMValCore, but perhaps a weekly or bi-weekly run of all recipes would be good? Regardless of frequency and exact recipe selection, automatic comparison and reporting would certainly be valuable and we can probably learn a lot from the application of the new comparison in this release cycle by @sloosvel and others. I also like the added CF compliance check. Of course we will not reject anything for not being compliant right now, but it may help us to nudge us in the right direction. |
Beta Was this translation helpful? Give feedback.
-
Hi @ehogan, thanks for the very interesting suggestion! That would be very helpful to reduce the workload for the release manager and further simplify the release process. Here are my thoughts: We have indeed a cylc suite to run all recipes which was implemented by @bouweandela. For previous releases, this cylc suite was used to run all recipes at DKRZ a few times (once per release candidate for the Core) and output are displayed on this website. For the upcoming release (v2.6), things got a bit trickier because the new DKRZ machine (Levante) does not (yet?) provide a cylc module so I think it was troublesome for @sloosvel to run all recipes. I guess running all recipes daily or even weekly would require too much resources (see resources needed for the v2.5 release). At DKRZ we would not have enough resources in our compute project to run all recipes more than ~once per month. As an alternative, we could start thinking of a way to classify recipes depending on how much resources are needed to run them:
One difficulty is that, by default, the user of the Cylc suite needs to request the same amount of resources for all recipes resulting in crashes for the memory intensive ones and probably to much resources used for the "fast recipes". I think it would be helpful to break the set of recipes into groups based on their computational imprint and have separate cylc suites for each group. Also, I'm not too sure how many recipes could actually be run on Jasmin given that we don't have Tier3 data there and these are used in about half of the recipes (56/125). Regarding the comparison tool developed by @bouweandela and used for the first time as part of this release, it would be very helpful to automatize the comparison as much as possible. Otherwise, the manual inspection of the differences is done by the release manager and this can be very time consuming (see #2704). Once the comparison tool would be fully optimized (see #2708), we could take some steps further by:
You may also want to have a look at the summary of the testing recipe workshop from last year. We might have discussed things that would be relevant here, see #2345 and #2346 |
Beta Was this translation helpful? Give feedback.
-
I wrote some python code to create a submission script for each recipe and launch them one after the other, taking care of the resources that some recipes need. I was planning on adding it in utils. It's nothing fancy, but using cylc to launch one job after the other, with no dependencies between jobs, is a bit of an overkill anyway and I did not feel like installing the tool myself either. |
Beta Was this translation helpful? Give feedback.
-
@ehogan I transferred this to the ESMValTool repository, because I think it will be a bit too noisy for the Community repository (see here for the type of discussions we hope to have in the community repo). |
Beta Was this translation helpful? Give feedback.
-
The documentation for making a release is here:
but note #2623.
Not without making (minor) modifications to the code Some more related effort: ESMValGroup/ESMValCore#1636. |
Beta Was this translation helpful? Give feedback.
-
Thanks everyone for your input! 🥳 To summarise the requirements: The workflow must:
Considerations:
Outstanding questions:
If everyone is happy with this we can start with a prototype that runs a "quick" recipe, then demo it to you all before continuing? What do you think? :) |
Beta Was this translation helpful? Give feedback.
-
Hey guys! I've not managed to reply in time here - my apologies, things went under the proverbial rug. Emma, good initiative! Here's my 2c: only run a certain recipe on a certain night if and only if any of the preprocessors that that recipe runs have changed the previous day, or if the recipe itself has changed (doh!). Otherwise it's a massive waste of resources. You can gather that info via examining git logs by means of a script (I think I can help with that). You may say that configuration/data finding changes may impact that recipe too, and one should run it if those change too - but those apply to all the other runs, so if there's an issue, then surely it'd pop up elsewhere. What you think? |
Beta Was this translation helpful? Give feedback.
-
If you need an account at DKRZ, this can be arranged |
Beta Was this translation helpful? Give feedback.
-
At the moment these are stored on the virtual machine we have at DKRZ, but a backed-up publicly accessible repository would be much better indeed. |
Beta Was this translation helpful? Give feedback.
-
I have been thinking a bit more about the location of the recipe test workflow. I acknowledge the current Cylc suite is located in the ESMValTool repository, but since the proposed workflow would install the latest versions of ESMValCore and ESMValTool, I'm not sure it makes sense to checkout ESMValTool to get a copy of the workflow, which, when run, would include checking out and installing the latest version of ESMValTool! This is what is making me lean towards creating a separate repository for the recipe test workflow. Or am I over thinking this? Would the community prefer the workflow to be located within the ESMValTool repository? One other possible concern with locating the workflow in its own repository is that the documentation would need to be included in the ESMValTool documentation, but I'm guessing this wouldn't be too tricky, given that the ESMValTool documentation already includes documentation located in the ESMValCore repository? |
Beta Was this translation helpful? Give feedback.
-
Hi @ESMValGroup/esmvaltool-developmentteam 👋
We (at the Met Office) have been thinking about whether we can bring some of the best techniques from our model development working practices to ESMValTool. One of these is a nightly test workflow that helps to identify issues very soon after merging branches. The new comparison tool developed by @bouweandela could enable us to implement something similar.
At the moment, all the recipes are run during the ESMValTool release process. This can leave the release manager with many issues to deal with at a late stage. Running the recipes nightly would identify issues sooner, making the release process less painful.
I have gathered from comments on various GitHub issues and PRs that, during a release, the recipes are run on DKRZ. However, I am unaware of the specific details (I was unable to find any release-related documentation), so I don't know how the recipes (and comparisons) are run currently; would it be possible for someone to provide details about this, please?
Our proposal:
nightly-recipe-tests
?).Some considerations / questions:
Thoughts? :)
Beta Was this translation helpful? Give feedback.
All reactions