Skip to content

Version 0.3.0

Latest
Compare
Choose a tag to compare
@reuterbal reuterbal released this 20 Jan 08:45

This Loki release introduces a number of breaking changes by removing features that have previously been marked as deprecated.

Note that version tags from 0.3.0 onwards drop the v prefix to align with the convention in other ECMWF software projects, i.e., this version tag is 0.3.0 while the previous release was v0.2.10.

Most importantly, this extends to the custom entry points in the loki-transform.py command line interface: these have been removed and the use of a TOML config file with transformation configuration and pipeline definition is mandatory now. See, for example, CLOUDSC's cloudsc_loki.config as a fully-featured example that specifies file-specific frontend overrides, several transformation options, and multiple bespoke transformation pipelines. The CMake functions providing the build-system integration have been adapted accordingly by removing previously supported options - you should experience build-time failures during the CMake configuration step of your project if you were still relying on any of these features (see #465).

Due to its incomplete, slow, and partially defective parsing of Fortran files, the previously deprecated and no longer tested frontend Open Fortran Parser (OFP) was removed. Please use the Fparser2 frontend (recommended) or alternatively the recently updated OMNI frontend (see #469).

This release also removes the CLAW transformations. CLAW is no longer maintained and Loki-internal transformations for single-column code produce superior performance on GPUs (see #477).

Finally, the switch to a purely config-based and therefore pipeline-driven batch processing command-line interface paved the way for improvements in the plan processing mode for build system integration: This feature derives the lists of files to add and remove to a build target and the previous heuristic purely based on the initial dependency graph is now replaced by a dry-run of the transformation pipeline. Transformations that modify the dependency graph by adding or removing nodes can now encode this behaviour in a new plan_* entry point that will be invoked during the dry-run (see #462).

What's Changed

  • Inline: Skip explicit intrinsics when inlining stmt functions by @mlange05 in #461
  • Expression: Remove logical literals in and/or operations during simplify by @mlange05 in #467
  • Inline: Avoid Import duplication from multiple callees by @mlange05 in #468
  • Transpile: Split C-kernel generation from ISO-C wrapper generation by @mlange05 in #464
  • Pipeline-plan duplicate/remove transformation changing dependencies by @MichaelSt98 in #462
  • Frontend: Final removal of OFP frontend by @mlange05 in #469
  • Sanitise: Fix rescoping of symbols for nested associates by @mlange05 in #470
  • Fix dependency on header files in loki_transform_target by @reuterbal in #471
  • DataOffload: Field offload of driver regions by @mlange05 in #457
  • Transformations: Fix downcasing of nested InlineCall symbols by @mlange05 in #472
  • Loki-transform: Don't trigger a full parse for plan mode by @mlange05 in #473
  • IR: Better tuple autocasting via pydantic field_validators by @mlange05 in #476
  • Loki-transform: Remove custom entry point options by @mlange05 in #465
  • FieldOffload: Allow and skip non-enriched calls in offload region by @mlange05 in #478
  • Loki: Remove the CLAW and its associated transformations by @mlange05 in #477

Full Changelog: v0.2.10...0.3.0