A Lagrangian-Eulerian hydrodynamics benchmark, part of the mantevo project.
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.
This is the reference release of the code. This version features both MPI and OpenMP as default.
This is the serial version of the code, with no parallelism. This can be used as a reference version for new language ports.
This is the domain decomposed MPI implementation of CloverLeaf.
This is the on node parallelism OpenMP implementation.
This is the extension of the OpenMP version, to make use of the new directives in OpenMP4.
This is the OpenACC offload version (based on the Kernels directives).
This is the offload version using Intel offload directives.
This is a native GPU implementation written in CUDA.
This is a native GPU implementation written in OpenCL.
This is an implemementation of CloverLeaf using the OPS framework, providing an abstraction layer for the CPU, GPU and Intel MIC.
This is a PGAS implmentation using Coarray Fortran with Arrays.
This is a PGAS implmentation using Coarray Fortran with explicit buffers.
This is a PGAS implmentation using OpenSHMEM.