Skip to content
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

Naab JUBE patches workflow #87

Draft
wants to merge 5 commits into
base: develop
Choose a base branch
from

Conversation

Andrew-Beggs-ECMWF
Copy link
Contributor

This PR has a couple of changes one is a small addition of a "generic" arch, and the other is the JUBE patches workflow.

Generic Arch

This is a couple of arches, one for the Intel classic compilers and another for the new oneAPI suite. They are very similar to the ECMWF HPC2020 ones, but I've removed the module commands and hardware assumptions (vector ISAs etc). I find I often create these arches whenever I'm testing a new machine, and thought it was worth automating at least part of the process.

While they might not work out of the box for every machine, they're at least a good starting point for something minimalistic.

JUBE Patches Workflow

This is a new workflow for JUBE that consists of the following:

  1. Specify a folder containing patches in benchmark/include/include_parameterset.yml (This is perhaps not as elegant as I'd like)
  2. Initiate the benchmark
  3. JUBE will:
    1. git stash
    2. git apply
    3. Compile & benchmark
    4. git reset
    5. git stash pop
    6. Repeat for next patch

Additionally, the git reset and git stash pop commands are within a trap so as to never leave the source code in an inconsistent state.

The main use case for this is investigating the effects of potential optimisations for CloudSC. "Does this change actually improve performance over the previous iteration?", "does it require nproma to be changed?", "what if these flags are changed?", etc. This workflow allows for such questions to be answered quickly, and preserves the changes without being as formal as a git commit, enabling quicker iteration for small "what ifs".

I personally use this workflow a lot and hope it will be of use to others too!

This arch is intended as a generic arch for systems with the following:
- No slurm
- Intel legacy and/or oneAPI compilers installed

The intention is to provide a base for benchmarking systems.
This workflow is designed to test various git .patches on the same HEAD. This can be particularly useful when comparing multiple optimisations, or incremental improvements on the same optimisation. These patches must apply cleanly and successfully.

The workflow is as follows:
• git stash
• git apply a patch
• compile & benchmark
• repeat until out of patches
• git stash pop
This fixes two bugs:
• A "blank" patch caused by a trailing comma
• Incorrectly parsing the patches_dir, caused by the variable not being in include_parameterset.yml
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.

1 participant