StencilStream v3.0.0
SYCL-based Stencil Simulation Framework Targeting FPGAs
Loading...
Searching...
No Matches
stencil::concepts::StencilUpdate Concept Reference

A grid updater that repeatedly applies stencil updates to each cell. More...

#include <Concepts.hpp>

Concept definition

template<typename SU, typename TF, typename G>
requires(SU stencil_update, G &grid, typename SU::Params params) {
{ SU(params) } -> std::same_as<SU>;
{ stencil_update.get_params() } -> std::same_as<typename SU::Params &>;
{ stencil_update(grid) } -> std::same_as<G>;
} &&
requires(typename SU::Params params) {
{ params.transition_function } -> std::same_as<TF &>;
{ params.halo_value } -> std::same_as<typename TF::Cell &>;
{ params.iteration_offset } -> std::same_as<uindex_t &>;
{ params.n_iterations } -> std::same_as<uindex_t &>;
{ params.device } -> std::same_as<sycl::device &>;
} && TransitionFunction<TF> && Grid<G, typename TF::Cell> &&
(std::is_class<typename SU::Params>::value)
A grid updater that repeatedly applies stencil updates to each cell.
Definition Concepts.hpp:156

Detailed Description

A grid updater that repeatedly applies stencil updates to each cell.

Template Parameters
TFThe transition function type, which must satisfy the TransitionFunction concept.
GThe grid type the updater operates on. It must satisfy the Grid concept.

The constructor of a stencil update must accept a parameter struct instance. This struct must be (re-)defined inside the class as Params, and must contain the following fields. Where a default value is given, this default value must be provided. Additional parameter fields may be added as needed.

Each updater must define the following methods: