|
| Grid (uindex_t grid_width, uindex_t grid_height) |
| Create a new, uninitialized grid with the given dimensions.
|
|
| Grid (sycl::range< 2 > range) |
| Create a new, uninitialized grid with the given dimensions.
|
|
| Grid (sycl::buffer< Cell, 2 > buffer) |
| Create a new grid with the same size and contents as the given SYCL buffer.
|
|
| Grid (Grid const &other_grid) |
| Create a new reference to the given grid.
|
|
Grid | make_similar () const |
| Create an new, uninitialized grid with the same size as the current one.
|
|
uindex_t | get_grid_width () const |
| Return the width, or number of columns, of the grid.
|
|
uindex_t | get_grid_height () const |
| Return the height, or number of rows, of the grid.
|
|
void | copy_from_buffer (sycl::buffer< Cell, 2 > input_buffer) |
| Copy the contents of the SYCL buffer into the grid.
|
|
void | copy_to_buffer (sycl::buffer< Cell, 2 > output_buffer) |
| Copy the contents of the grid into the SYCL buffer.
|
|
template<typename in_pipe > |
sycl::event | submit_read (sycl::queue queue) |
| Submit a kernel that sends the contents of the grid into a pipe.
|
|
template<typename out_pipe > |
sycl::event | submit_write (sycl::queue queue) |
| Submit a kernel that receives cells from the pipe and writes them to the grid.
|
|
template<class Cell,
uindex_t word_size = 64>
class stencil::monotile::Grid< Cell, word_size >
A grid class for the monotile architecture.
This grid, which fullfils the Grid concept, contains a two-dimensional buffer of cells to be used together with the StencilUpdate class.
The contents of the grid can be accessed by a host-side program using the GridAccessor class template. For example, one can write the contents of a grid
object as follows:
for (
uindex_t c = 0; c < grid.get_grid_width(); c++) {
for (
uindex_t r = 0; r < grid.get_grid_height(); r++) {
accessor[c][r] = foo(c, r);
}
}
An accessor for the monotile grid.
Definition Grid.hpp:144
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
Alternatively, one may write their data into a SYCL buffer and copy it into the grid using the method copy_from_buffer. The method copy_to_buffer does the reverse: It writes the contents of the grid into a SYCL buffer.
On the device side, the data can be read or written with the help of the method templates submit_read and submit_write. Those take a SYCL pipe as a template argument and enqueue kernels that read/write the contents of the grid to/from the pipes.
- Template Parameters
-
Cell | The cell type to store. |
word_size | The word size of the memory system, in bytes. This is used to optimize the kernels submitted by submit_read and submit_write. |
template<class Cell ,
uindex_t word_size = 64>
template<typename in_pipe >
Submit a kernel that sends the contents of the grid into a pipe.
The entirety of the grid will be send into the pipe in column-major order, meaning that the last index (which denotes the row) will change the quickest. The method returns the event of the launched kernel immediately.
This method is explicitly part of the user-facing API: You are allowed and encouraged to use this method to feed custom kernels.
- Template Parameters
-
in_pipe | The pipe the data is sent into. |
- Parameters
-
queue | The queue to submit the kernel to. |
- Returns
- The event object of the submitted kernel.
template<class Cell ,
uindex_t word_size = 64>
template<typename out_pipe >
Submit a kernel that receives cells from the pipe and writes them to the grid.
The kernel expects that the entirety of the grid can be overwritten with the cells read from the pipe. Also, it expects that the cells are sent in column-major order, meaning that the last index (which denotes the row) will change the quickest. The method returns the event of the launched kernel immediately.
This method is explicitly part of the user-facing API: You are allowed and encouraged to use this method to feed custom kernels.
- Template Parameters
-
out_pipe | The pipe the data is received from. |
- Parameters
-
queue | The queue to submit the kernel to. |
- Returns
- The event object of the submitted kernel.