Skip to content

Conversation

@hiker
Copy link
Collaborator

@hiker hiker commented Sep 21, 2025

Adds the PSyclone training material (based on #3131)

@hiker
Copy link
Collaborator Author

hiker commented Jan 20, 2026

I think I have addressed all issue. Additionally, I fixed a missing omp atomic in 3.2; fixed example lfric/4.4 (which provided a W3 instead of W0), removed example lfric_users/7 (which has been moved to lfric/4.4 - I didn't want to fix lfric_user/7 which had the same bug as lfric/4.4 ;) ).

I'll trigger the IT tomorrow.

@hiker
Copy link
Collaborator Author

hiker commented Jan 21, 2026

The documentation failure is caused by the link https://gtr.ukri.org/projects?ref=NE%2FL01209X%2F1, so not this PR's problem.

The IT failed in the lfric intregration test. It looks like an nvidia compiler crash:

nvfortran-Fatal-/archive/psyclone-spack/psyclone-spack-Jun25/spack-repo/opt/spack/linux-rhel10-zen5/gcc-14.2.1/nvhpc-25.1-e6n46oh4nhjizqwqswfzzfirgardslid/Linux_x86_64/25.1/compilers/bin/tools/fort1 TERMINATED by signal 11

(line 40091) in the lfric gungho with openmp offload section. Again, I can't see how this PR should cause this? And I can't figure out which file might be causing this?

@arporter
Copy link
Member

(line 40091) in the lfric gungho with openmp offload section. Again, I can't see how this PR should cause this? And I can't figure out which file might be causing this?

Don't worry. We see this sometimes. Re-running the job almost always fixes it!

Copy link
Member

@arporter arporter left a comment

Choose a reason for hiding this comment

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

Great stuff Joerg. Just a bit more tidying to do and then we're good.

def trans(psyir: FileContainer) -> None:
'''
Take the supplied psy object, and apply 'omp parallel do' to all loops.
Take the supplied PSyOR object, and apply 'omp parallel do' to all loops.
Copy link
Member

Choose a reason for hiding this comment

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

"PSyIR"

:type psy: :py:class:`psyclone.psyGen.PSy`
Take the supplied psyir object, apply module inlining and add generic
OpenMP parallelisation to the code. Also check if loop fusion can
be applied. Also check if loop fusion can
Copy link
Member

Choose a reason for hiding this comment

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

Duplicated last sentence.

The task here is to create an alternative version of a loop. When
optimising code, it can be useful to have two different versions of
the same loop depending on loop length. For example, if the loop
length it long enough, vectorisation might give a speed benefit,
Copy link
Member

Choose a reason for hiding this comment

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

s/it/is/

length it long enough, vectorisation might give a speed benefit,
while if the loop is too short, vectorisation will have too much
start-up overhead, causing a slow-down. Or only if the loop length
is large enough it is worth to parallelise a loop.
Copy link
Member

Choose a reason for hiding this comment

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

"...enough is it worth parallelising."

start-up overhead, causing a slow-down. Or only if the loop length
is large enough it is worth to parallelise a loop.

Of course, two versions of the could be implemented in the original source
Copy link
Member

Choose a reason for hiding this comment

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

"...the loop could..."

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants