Skip to content

Remove j and block Kmkhz 9c #221

Closed
MetBenjaminWent wants to merge 17 commits intoMetOffice:mainfrom
MetBenjaminWent:kmkhz_9c_pysclone
Closed

Remove j and block Kmkhz 9c #221
MetBenjaminWent wants to merge 17 commits intoMetOffice:mainfrom
MetBenjaminWent:kmkhz_9c_pysclone

Conversation

@MetBenjaminWent
Copy link
Contributor

@MetBenjaminWent MetBenjaminWent commented Feb 4, 2026

PR Summary

Sci/Tech Reviewer: @christophermaynard
Code Reviewer:

Remove the j loop which is adversely affecting performance in the boundary layer, and improve blocking loops.

Initial KGO issues were fixed with adding denom to the private list L2546.

Introducing further blocking loops have introduced new KGO changes, which appear to be fast debug O2 optimisation driven.
I've also noted that with differing loop ranges over threads, reducing nowaits is required, which opens the option of removing the barrier to aid further PSyclone work in the future (The barriers will remain for now).
With the above KGO occurrences, these have likely factored into the cause of KGO changes at 1T, which remain unaffected for full-debug, still indicating optimisation as the likely root cause.
As the KGO updates are holding (for the all of the tests involved in the OMP dev group) for 1, 2 or 4T, I'm reasonably confident that it's not a newly introduced race condition or similar.

Code Quality Checklist

  • I have performed a self-review of my own code
  • My code follows the project's style guidelines
  • Comments have been included that aid understanding and enhance the readability of the code
  • My changes generate no new warnings
  • All automated checks in the CI pipeline have completed successfully

Testing

  • I have tested this change locally, using the LFRic Apps rose-stem suite
  • If any tests fail (rose-stem or CI) the reason is understood and acceptable (e.g. kgo changes)
  • I have added tests to cover new functionality as appropriate (e.g. system tests, unit tests, etc.)
  • Any new tests have been assigned an appropriate amount of compute resource and have been allocated to an appropriate testing group (i.e. the developer tests are for jobs which use a small amount of compute resource and complete in a matter of minutes)

trac.log

Security Considerations

  • I have reviewed my changes for potential security issues
  • Sensitive data is properly handled (if applicable)
  • Authentication and authorisation are properly implemented (if applicable)

Performance Impact

  • Performance of the code has been considered and, if applicable, suitable performance measurements have been conducted

AI Assistance and Attribution

  • Some of the content of this change has been produced with the assistance of Generative AI tool name (e.g., Met Office Github Copilot Enterprise, Github Copilot Personal, ChatGPT GPT-4, etc) and I have followed the Simulation Systems AI policy (including attribution labels)

Documentation

  • Where appropriate I have updated documentation related to this change and confirmed that it builds correctly

PSyclone Approval

  • If you have edited any PSyclone-related code (e.g. PSyKAl-lite, Kernel interface, optimisation scripts, LFRic data structure code) then please contact the TCD Team

Sci/Tech Review

  • I understand this area of code and the changes being added
  • The proposed changes correspond to the pull request description
  • Documentation is sufficient (do documentation papers need updating)
  • Sufficient testing has been completed

(Please alert the code reviewer via a tag when you have approved the SR)

Code Review

  • All dependencies have been resolved
  • Related Issues have been properly linked and addressed
  • CLA compliance has been confirmed
  • Code quality standards have been met
  • Tests are adequate and have passed
  • Documentation is complete and accurate
  • Security considerations have been addressed
  • Performance impact is acceptable

@MetBenjaminWent
Copy link
Contributor Author

Running into some KGO issues at fast debug.
Fixing the denom value, the only new LHS variable in the history that was not in the OMP sections, means that fast-debug should be okay.

Below testing at full-debug indicates that the KGO is good, whilst 1 and 4 are technically added, 2T is consistent with trunk, and they hold between runs, which with the denom LHS above, they were not.

The most recent changes here increase the number of ii blocking loops present with the dynamic schedule.
I'll see if an update holds, otherwise my current leading theory is that, like lsppn, the blocking dynamic loops at fast debug are running into some trouble and being over-optimised. Using the UM flags resolved it.

Test Suite Results - lfric_apps - kmkhz_9c_pysclone/run20

Suite Information

Item Value
Suite Name kmkhz_9c_pysclone/run20
Suite User benjamin.went
Workflow Start 2026-02-10T12:53:47
Groups Run ex1a_omp_C48_cce_full
Dependency Reference Main Like
casim MetOffice/[email protected] True
jules MetOffice/jules@69aaf4d True
lfric_apps MetBenjaminWent/lfric_apps@kmkhz_9c_pysclone False
lfric_core MetOffice/lfric_core@bbb3d8a True
moci MetOffice/[email protected] True
SimSys_Scripts MetOffice/[email protected] True
socrates MetOffice/[email protected] True
socrates-spectral MetOffice/[email protected] True
ukca MetOffice/[email protected] True

Task Information

✅ succeeded tasks - 12

@MetBenjaminWent
Copy link
Contributor Author

Given full-debug does not change and holds between runs, likely it might be an optimisation occurence from CCE?

Updating the CCE KGOs show it holds.

Further testing, do they hold as seg-size changes?

Test Suite Results - lfric_apps - kmkhz_9c_pysclone/run21

Suite Information

Item Value
Suite Name kmkhz_9c_pysclone/run21
Suite User benjamin.went
Workflow Start 2026-02-11T14:48:18
Groups Run ex1a_omp_developer
Dependency Reference Main Like
casim MetOffice/[email protected] True
jules MetOffice/jules@69aaf4d True
lfric_apps MetBenjaminWent/lfric_apps@kmkhz_9c_pysclone False
lfric_core MetOffice/lfric_core@bbb3d8a True
moci MetOffice/[email protected] True
SimSys_Scripts MetOffice/[email protected] True
socrates MetOffice/[email protected] True
socrates-spectral MetOffice/[email protected] True
ukca MetOffice/[email protected] True

Task Information

✅ succeeded tasks - 51

@MetBenjaminWent MetBenjaminWent added the KGO This PR contains changes to KGO label Feb 17, 2026
@MetBenjaminWent
Copy link
Contributor Author

MetBenjaminWent commented Feb 18, 2026

Refactor of damping layer matrix (#139) means that full-debug used as reference are out of date, generating new to preserve datapoint that changes are safe.

Barriers have been left. They should be removable (after removing some of the nowaits), but I'll look at this further in the PSyclone version of this ticket.

Current leading thought is that KGO changes are Optimisation changes, but they are more widespread.

Likely the intial KGO change was caused by the seg size loop intros, and as the bounds change, but the no waits didn't, the threaded runs changed, then stabalised. Changing the segment size after updating the KGOs does not cause them to change.

Changing further syncronisation points may have allowed the compiler to change how it has optimised, generting further KGO shifts.

Full debug otherwise remains consistent as a reference point, where previously with a genuine bug, they did not. This reinforces that the KGO change is optmisation driven.

After updating KGO, but no change to seg len (for this PR):

After changing Seg len to 16:

@github-actions github-actions bot added the cla-modified The CLA has been modified as part of this PR - added by GA label Feb 19, 2026
@github-actions github-actions bot removed the cla-modified The CLA has been modified as part of this PR - added by GA label Feb 19, 2026
@MetBenjaminWent
Copy link
Contributor Author

I'm putting this into review for now, but I still expect KGO changes for most of LFRic atm.

Given these have been changing rapidly on trunk recently, and that the 1T tasks updated as part of the OMP dev group are representative(enough) of lfric atm mpi 1T jobs, up until CR I'll leave these for now unless requested by CO/SR.

@MetBenjaminWent MetBenjaminWent marked this pull request as ready for review March 3, 2026 09:39
Copy link

@iboutle iboutle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not a request to do it now - happy to wait until it's closer to trunk - but I'd like to see the full set of KGO changes before giving approval

@github-actions
Copy link

github-actions bot commented Mar 4, 2026

⚠️ Hello @MetBenjaminWent!

Your CLA signature was found on the base branch, but you appear to have modified the CONTRIBUTORS.md file in this PR.

Please do not edit the CONTRIBUTORS.md file. If you have already signed the CLA, revert changes to the file and your signature will be picked up.

@MetBenjaminWent MetBenjaminWent marked this pull request as draft March 4, 2026 13:29
@MetBenjaminWent
Copy link
Contributor Author

The conflicts have been quite horrendous on this PR - I'm, for clarity going to do a new PR with just the changes to kmkhz and the KGOs.

The version.py changes can occur in their own PR.

@MetBenjaminWent MetBenjaminWent mentioned this pull request Mar 4, 2026
28 tasks
@MetBenjaminWent
Copy link
Contributor Author

See new PR #325

@andrewcoughtrie andrewcoughtrie changed the base branch from main to stable March 4, 2026 15:45
@andrewcoughtrie andrewcoughtrie changed the base branch from stable to main March 4, 2026 15:45
@MetBenjaminWent
Copy link
Contributor Author

Closing this PR due to commit issues, see #325 which lifts this work, minus the versions which will occur in a new issuehttps://github.com//issues/327

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-modified The CLA has been modified as part of this PR - added by GA KGO This PR contains changes to KGO

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove j loop kmkhz_9c

3 participants