This directory contains various examples of the use of PSyclone to transform source code from the NEMO ocean model. See the READMEs in the individual example directories for further details.
Contains:
- the Tracer advection benchmark routine (tra_adv), as provided by Silvia Mocavero of CMCC and
- an unmodified NEMO subroutine computing the horizontal component of the lateral tracer mixing trend (traldf_iso).
Contains a collection of example scripts and the instructions to process the NEMO code. These are testend in our integration test against NEMOv4.0.2 and NEMOv5.0.
OpenMP parallelisation (for CPU and GPU) of tra_adv over levels.
OpenMP parallelisation of traldf_iso over levels.
OpenACC parallelisation of tra_adv. Contains a local transformation
script that adds both 'data' and 'kernels' directives to the
code. Also demonstrates the use of the kernels_trans.py script from
the scripts directory which adds 'kernels' and 'loop' directives as
well as profiling instrumentation. This script is designed for use
with NVIDIA's managed memory technology and therefore does not insert
data regions.
SIR generation and transformation to CUDA using Dawn with simple examples and a cut down version of the tracer advection (tra_adv) benchmark.
A simple stand-alone example that shows how data can be extracted for each loop nest using PSyclone's kernel extraction feature PSyKE. Note that creation of a driver program (which reads the data files, execute the original loop and then compares the results) is not yet supported for generic transformations.
A simple stand-alone example that shows verification that read-only data is not modified, e.g. by out-of-bounds accesses to other variables. This uses the PSyData interface to instrument generic Fortran code.