Skip to content

Release 2.2.0

Compare
Choose a tag to compare
@arporter arporter released this 17 Mar 10:07
· 8996 commits to master since this release

What's Changed

LFRic:

  • All loop-bounds lookups in the LFRic PSy layer are done before the loops themselves. This removes type-bound procedure calls from those loops which will facilitate acceleration with e.g. OpenACC.
  • The kernel-stub generator (gen_kernel_stub) functionality has moved and is now available as part of the new psyclone-kern command.
  • Work towards supporting mixed precision in the LFRic API. Precision for kernel arguments is now obtained by interrogating the Algorithm layer.
  • All LFRic built-ins (barring those that do reductions and type casting) are now constructed using PSyIR.

NEMO:

  • Improvements to the PSyIR to better support object-orientated style Fortran.
  • Various bug fixes related to the construction and use of PSyIR for NEMO, MEDUSA and NEMOVAR, particularly for structures of arrays.
  • New ACCRoutineTrans and OMPTargetTrans transformations to allow routines to be flagged for compilation for a remote device.
  • New HoistLocalArraysTrans transformation which transforms local, automatic arrays into module scope allocatables.

GOcean:

  • An example of the use of the PSyData API for checking for NANs before and after kernels has been added.
  • OpenCL functionality has been moved out of code generation and into code transformations in order to improve code structure.
  • Kernel data extraction can now create a stand-alone driver to read in the data, execute the kernel and verify the results.

PSyclone Adjoint generator (PSyAD):

  • Various improvements including support for dot_product and matmul intrinsics.

General:

  • Loop blocking and tiling transformations have been added.
  • Support for Python 2 has been removed. Testing is now performed for Python 3.6, 3.8 and 3.10.0.
  • Dependence analysis now utilises SymPy.
  • Parallel-loop transformations now check for loop-carried dependencies.
  • Dynamo 0.1 and GOcean 0.1 APIs have been removed.
  • Improved representation of directive clauses in the PSyIR.
  • GitHub Actions now performs link checking for all Sphinx documentation as well as running the doctests in the Developer Guide.

Detailed changes: