Skip to content

2.4.0

Compare
Choose a tag to compare
@arporter arporter released this 29 Sep 10:36
· 1722 commits to master since this release
f78be5c

What's Changed

LFRic

  • Significant progress towards fully-automatic driver generation for extracted kernels (using PSyIR);
  • Support for standalone and NetCDF kernel extraction;
  • Significant progress towards generating PSyIR for the Algorithm layer;
  • Many classes have been moved out of the (extremely large) dynamo0p3.py file and renamed (replacing "Dyn" with "LFRic");
  • New setval_random built-in;
  • Bug fixes to KernelModuleInlineTrans;
  • New kernel metadata handling;
  • Support for new field/operator precisions (e.g. r_solver, r_trans etc.)
  • Invoke names now constrained to be valid Fortran names;
  • Add compilation support to lfric/eg14 (OpenACC example);
  • Allow for GH_WRITE access to arguments to inter-grid kernels;

PSyAD

  • Assorted bug fixes (including kind parameter declarations, routine naming, unary minus operators);
  • Application to Functions now forbidden;
  • LFRic-specific support added;
  • New ReferenceToArrayTrans transformation;
  • Support for test-harness generation (both generic and LFRic-specific);
  • Support for LFRic kernel arguments containing geometry information;
  • Selection of LFRic tangent-linear kernels added under examples;

PSyIR

  • Improvements to dependence analysis (induction variables, variables with names matching Sympy reserved names)
  • New HoistLoopBoundExprTrans transformation;
  • New routine-inlining transformation (including support for routines in a different Container);
  • Support for new OpenMP tasking transformations;
  • Improvements to support of OpenMP Target directives;
  • Improvements to identification of private, firstprivate etc. attributes on OpenMP directives;
  • SIR backend - support for intrinsics;
  • Bug fix to DotproductTrans;
  • New Sum2CodeTrans and {Min,Max}Val2Code transformations;
  • Support for OpenMP 'teams distribute parallel do' directive;
  • Improvements to SymbolTable functionality;
  • Add support for static/save Symbol attribute;
  • Support for Symbols that are renamed upon import;
  • New HoistLocalArraysTrans;
  • Addition of 'force' option to ParallelLoopTrans;
  • New 'is_independent' method added to Loop to encapsulate dependence analysis;
  • Support for ACC ENTER DATA and ACC UPDATE directives (data movement);
  • Support for GANG and VECTOR clauses on ACC LOOP directive;
  • New ACCClause nodes for specifying data movement;
  • New automatic tree-update mechanism to allow ancestor nodes to update if their descendants change;
  • New 'IntrinsicCall' node type used for all intrinsics (previously, some were Operations);
  • All Fortran2018 intrinsics now supported;
  • Fortran 'INCLUDE' statements are now forbidden (must be handled by fparser);
  • Support for Fortran parameter statements;
  • Support for Fortran declarations containing initialisation expressions;
  • Support for Fortran 'DO WHILE' loops;
  • Generic "kernel" extraction support;
  • Support for assumed-shape arrays;
  • Bug fix to handling of USE statements in Fortran backend;
  • Improved support for Fortran INTERFACEs;
  • Support for Fortran Common blocks;
  • Support for 'elemental' and 'pure' Routines;
  • Bug fixes for Routines CONTAINed within other Routines in Fortran;
  • Added support for Fortran EQV operator;
  • Bug fix for SELECT CASE involving a logical variable;
  • UnknownFortranType extended to allow capture of known type information;
  • Support for the use of array expressions and derived types in Sympy;
  • Improvements to Node.ancestor() and new Node.path_from() method;

GOcean

  • New kernel metadata handling;
  • Support for OpenMP tasking;

General

  • Fix to locations searched for PSyclone config file;
  • Improve CLI --version interface;
  • Remove constraint that supplied Fortran is free-form;
  • Update to fparser 0.1.3;
  • Improvements to NEMO training/tutorial material;
  • Fixes to the handling of compiler flags for the libraries, examples and tutorials;
  • Bug fixes to the line-length limiting module to avoid generation of lines containing only whitespace and a line-continuation character;
  • Support for logical data in PSyData;
  • Support for the Tau profiler using the PSyData interface;
  • PSyclone integration testing implemented - correctness and performance tested for both LFRic and NEMO.

New Contributors

Full Changelog: 2.3.1...2.4.0