A023-07
LFRic and PSyclone: Utilising DSLs for Performance Portability
Abstract:
The design of the supporting infrastructure follows object-oriented principles to facilitate modularity and the use of external libraries. One of the guiding design principles, imposed to promote performance portability, is “separation of concerns” between the science and parallel code.
Parallel code in LFRic is generated by PSyclone with the support of LFRic infrastructure, which provides APIs to support the distributed memory parallelism via libraries such as YAXT. PSyclone provides general (e.g. shared memory parallelism using OpenMP) as well as LFRic-specific optimisations. For example, PSyclone can enhance the use of distributed memory parallelism in LFRic using optimisations such as asynchronous halo exchange and redundant computation to reduce the need for halo exchanges. The talk will give more examples of the impact of PSyclone on the LFRic performance.