StencilStream v3.0.0
SYCL-based Stencil Simulation Framework Targeting FPGAs
Loading...
Searching...
No Matches
Public Member Functions | List of all members
stencil::monotile::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, max_grid_width, max_grid_height, in_pipe, out_pipe > Class Template Reference

The execution kernel of the monotile architecture. More...

#include <StencilUpdate.hpp>

Public Member Functions

 StencilUpdateKernel (TransFunc trans_func, uindex_t i_iteration, uindex_t target_i_iteration, uindex_t grid_width, uindex_t grid_height, Cell halo_value, TDVKernelArgument tdv_kernel_argument)
 Create and configure the execution kernel.
 
void operator() () const
 Execute the kernel.
 

Detailed Description

template<concepts::TransitionFunction TransFunc, tdv::single_pass::KernelArgument< TransFunc > TDVKernelArgument, uindex_t n_processing_elements, uindex_t max_grid_width, uindex_t max_grid_height, typename in_pipe, typename out_pipe>
requires (n_processing_elements % TransFunc::n_subiterations == 0)
class stencil::monotile::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, max_grid_width, max_grid_height, in_pipe, out_pipe >

The execution kernel of the monotile architecture.

It receives the contents of a tile and it's halo from the in_pipe, applies the transition function when applicable and writes the result to the out_pipe.

With the monotile approach, the whole grid fits in one tile. This eliminates the need to calculate the cells of the tile halo, reducing the cache size and number of loop iterations. More is described in monotile.

Template Parameters
TransFuncThe type of transition function to use.
TDVKernelArgumentThe type of parameter for the TDV system that is passed from the host to the kernel.
n_processing_elementsThe number of processing elements to use. Similar to an unroll factor for a loop.
max_grid_widthThe maximum number of columns in the grid. This will define the bit width of the cell indices.
max_grid_heightThe maximum number of rows in the grid. This will define the size of the column buffer.
in_pipeThe pipe to read from.
out_pipeThe pipe to write to.

Constructor & Destructor Documentation

◆ StencilUpdateKernel()

template<concepts::TransitionFunction TransFunc, tdv::single_pass::KernelArgument< TransFunc > TDVKernelArgument, uindex_t n_processing_elements, uindex_t max_grid_width, uindex_t max_grid_height, typename in_pipe , typename out_pipe >
stencil::monotile::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, max_grid_width, max_grid_height, in_pipe, out_pipe >::StencilUpdateKernel ( TransFunc  trans_func,
uindex_t  i_iteration,
uindex_t  target_i_iteration,
uindex_t  grid_width,
uindex_t  grid_height,
Cell  halo_value,
TDVKernelArgument  tdv_kernel_argument 
)
inline

Create and configure the execution kernel.

Parameters
trans_funcThe instance of the transition function to use.
i_iterationThe iteration index of the input cells.
target_i_iterationThe final, requested iteration index after the updates. This may be higher than what the kernel can process in one pass. In this case, the kernel will compute the maximum number of iterations.
grid_widthThe number of cell columns in the grid.
grid_heightThe number of cell rows in the grid.
halo_valueThe value of cells outside the grid.
tdv_kernel_argumentThe argument for the TDV system that is passed from the host to the device. This may for example contain global memory accessors.

Member Function Documentation

◆ operator()()

template<concepts::TransitionFunction TransFunc, tdv::single_pass::KernelArgument< TransFunc > TDVKernelArgument, uindex_t n_processing_elements, uindex_t max_grid_width, uindex_t max_grid_height, typename in_pipe , typename out_pipe >
void stencil::monotile::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, max_grid_width, max_grid_height, in_pipe, out_pipe >::operator() ( ) const
inline

Execute the kernel.


The documentation for this class was generated from the following file: