![]() |
StencilStream v3.0.0
SYCL-based Stencil Simulation Framework Targeting FPGAs
|
A grid class for the CPU backend. More...
#include <Grid.hpp>
Classes | |
class | GridAccessor |
An accessor for the grid. More... | |
Public Member Functions | |
Grid (uindex_t c, uindex_t r) | |
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 > other_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. | |
void | copy_from_buffer (sycl::buffer< Cell, 2 > other_buffer) |
Copy the contents of the SYCL buffer into the grid. | |
void | copy_to_buffer (sycl::buffer< Cell, 2 > other_buffer) |
Copy the contents of the grid into the SYCL buffer. | |
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. | |
Grid | make_similar () const |
Create an new, uninitialized grid with the same size as the current one. | |
sycl::buffer< Cell, 2 > & | get_buffer () |
Static Public Attributes | |
static constexpr uindex_t | dimensions = 2 |
The number of dimensions of the grid. | |
A grid class for the CPU backend.
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:
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.
Cell | The cell type to store. |
|
inline |
Create a new, uninitialized grid with the given dimensions.
c | The width, or number of columns, of the new grid. |
r | The height, or number of rows, of the new grid. |
|
inline |
Create a new, uninitialized grid with the given dimensions.
range | The range of the new grid. The first index will be the width and the second index will be the height of the grid. |
|
inline |
Create a new grid with the same size and contents as the given SYCL buffer.
The contents of the buffer will be copied to the grid by the host. The SYCL buffer can later be used elsewhere.
other_buffer | The buffer with the contents of the new grid. |
|
inline |
Create a new reference to the given grid.
The newly created grid object will point to the same underlying data as the referenced grid. Changes made via the newly created grid object will also be visible to the old grid object, and vice-versa.
other_grid | The other grid the new grid should reference. |
|
inline |
Copy the contents of the SYCL buffer into the grid.
The SYCL buffer will be accessed read-only one the host; It may be used elsewhere too. The buffer however has to have the same size as the grid, otherwise a std::range_error is thrown.
other_buffer | The buffer to copy the data from. |
std::range_error | The size of the buffer does not match the grid. |
|
inline |
Copy the contents of the grid into the SYCL buffer.
The contents of the SYCL buffer will be overwritten on the host. The buffer also has to have the same size as the grid, otherwise a std::range_error is thrown.
other_buffer | The buffer to copy the data to. |
std::range_error | The size of the buffer does not match the grid. |
|
inline |
|
inline |
Return the height, or number of rows, of the grid.
|
inline |
Return the width, or number of columns, of the grid.
|
inline |
Create an new, uninitialized grid with the same size as the current one.
|
staticconstexpr |
The number of dimensions of the grid.
May be changed in the future when other dimensions are supported.