< Mini-apps


CloverLeaf

A Lagrangian-Eulerian hydrodynamics benchmark, part of the mantevo project.

View the Project on GitHub UK-MAC/CloverLeaf

CloverLeaf


Introduction

CloverLeaf is a mini-app that solves the compressible Euler equations on a Cartesian grid, using an explicit, second-order accurate method. Each cell stores three values: energy, density, and pressure. A velocity vector is stored at each cell corner. This arrangement of data, with some quantities at cell centers, and others at cell corners is known as a staggered grid. CloverLeaf currently solves the equations in two dimensions, but a 3D implementation has been started in: CloverLeaf3D.

The computation in CloverLeaf has been broken down into "kernels" — low level building blocks with minimal complexity. Each kernel loops over the entire grid and updates one (or some) mesh variables, based on a kernel-dependent computational stencil. Control logic within each kernel is kept to a minimum , allowing maximum optimisation by the compiler. Memory is sacrificed in order to increase peformance, and any updates to variables that would introduce dependencies between loop iterations are written into copies of the mesh.

For more information, please see the documentation included in the repository.

Released Implementations

Reference

This is the reference release of the code. This version features both MPI and OpenMP as default.


Serial

This is the serial version of the code, with no parallelism. This can be used as a reference version for new language ports.


MPI

This is the domain decomposed MPI implementation of CloverLeaf.


OpenMP

This is the on node parallelism OpenMP implementation.


OpenMP4

This is the extension of the OpenMP version, to make use of the new directives in OpenMP4.


OpenACC

This is the OpenACC offload version (based on the Kernels directives).


Intel Offload

This is the offload version using Intel offload directives.


CUDA

This is a native GPU implementation written in CUDA.


OpenCL

This is a native GPU implementation written in OpenCL.


OPS

This is an implemementation of CloverLeaf using the OPS framework, providing an abstraction layer for the CPU, GPU and Intel MIC.


CAF Arrays

This is a PGAS implmentation using Coarray Fortran with Arrays.


CAF Buffers

This is a PGAS implmentation using Coarray Fortran with explicit buffers.


OpenSHMEM

This is a PGAS implmentation using OpenSHMEM.


Publications

Hydrodynamics visualisation