Skip to content

3.2.0

Choose a tag to compare

@arporter arporter released this 01 Oct 11:10
· 1905 commits to master since this release
0eb3dc4

This release extends PSyclone’s transformation and code-generation capabilities, with new transformations (scalarisation, checksum, loop tiling, reductions) and improved support for OpenMP/OpenACC constructs (e.g. reduction, nowait, barriers, atomic types). PSy-layer code generation has been migrated to use the PSyIR backend. LFRic support has been enhanced with colour-tiling and refined halo-depth logic, and metadata handling has been extended (e.g. read-only arrays). The release also introduces keyword-based arguments for transformations, initial logging infrastructure, and updated documentation (user-, developer and reference guides have been merged) using the PyData theme. In addition, it includes numerous bug fixes, dependency cleanups, and test/CI improvements.

What's Changed

🌟 PSyclone Release Highlights

Transformations & Parallelisation

  • New transformations: scalarisation, checksum, loop tiling (generalised with examples), array-rank increase and reductions.
  • Extended OpenMP/OpenACC support: reduction, nowait, barriers, atomic types, and improved async/wait handling.
  • Support for hoisting of allocatable arrays, and improvements to inlining.

Code Generation & Backend

  • PSy-layer code is now generated using PSyIR lowering (replacing gen_code/f2pygen).
  • Enhanced extraction transformations, including ASCII extraction.
  • Configurable device intrinsics available.
  • Improved handling of pure subroutines, polymorphic kernels, and array privatisation.

LFRic Support

  • Added colour-tiling.
  • Refined halo-depth logic for halo kernels.
  • Extended metadata support (e.g. read-only arrays).
  • Infrastructure updates and bug fixes.

Usability & Documentation

  • Transformations can now use keyword arguments instead of options dict.
  • Initial logging infrastructure.
  • Documentation updated to PyData theme with reorganised sections (e.g. instrumentation).

Bug Fixes & Maintenance

  • Numerous fixes for frontend parsing, array bounds, type resolution, and OpenMP lowering.
  • Deprecated old Dynamo0p3 transformation names (in favour of LFRic...).
  • Expanded test coverage and CI updates (support for new Python versions, streamlined checks).
  • Dependency cleanup (removed jsonschema).

New Contributors

Full Changelog: v3.1.0...v3.2.0