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

A kernel that executes a stencil transition function on a tile. More...

#include <StencilUpdate.hpp>

Public Member Functions

 StencilUpdateKernel (TransFunc trans_func, uindex_t i_iteration, uindex_t target_i_iteration, uindex_t grid_c_offset, uindex_t grid_r_offset, 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 configured operations.
 

Detailed Description

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

A kernel that executes a stencil transition function on a tile.

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.

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.
output_tile_widthThe number of columns in a grid tile.
output_tile_heightThe number of rows in a grid tile.
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 output_tile_width, uindex_t output_tile_height, typename in_pipe , typename out_pipe >
stencil::tiling::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, output_tile_width, output_tile_height, in_pipe, out_pipe >::StencilUpdateKernel ( TransFunc  trans_func,
uindex_t  i_iteration,
uindex_t  target_i_iteration,
uindex_t  grid_c_offset,
uindex_t  grid_r_offset,
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 number of iterations to compute. If this number is bigger than n_processing_elements, only n_processing_elements iterations will be computed.
grid_c_offsetThe column offset of the processed tile relative to the grid's origin, not including the halo. For example, for the most north-western tile the offset will always be (0,0), not (-halo_radius,-halo_radius)
grid_r_offsetThe row offset of the processed tile relative to the grid's origin. See grid_c_offset for details.
grid_widthThe number of cell columns in the grid.
grid_heightThe number of cell rows in the grid.
halo_valueThe value of cells in the grid halo.
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 output_tile_width, uindex_t output_tile_height, typename in_pipe , typename out_pipe >
void stencil::tiling::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, output_tile_width, output_tile_height, in_pipe, out_pipe >::operator() ( ) const
inline

Execute the configured operations.


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