diff --git a/AccessorSubscript_8hpp.html b/AccessorSubscript_8hpp.html deleted file mode 100644 index 6033a8f..0000000 --- a/AccessorSubscript_8hpp.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -StencilStream: StencilStream/AccessorSubscript.hpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Namespaces
-
AccessorSubscript.hpp File Reference
-
-
-
#include "Index.hpp"
-#include <CL/sycl.hpp>
-
-Include dependency graph for AccessorSubscript.hpp:
-
-
- - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >
 A helper class to support the double-subscript idiom for GridAccessors. More...
 
- - - -

-Namespaces

namespace  stencil
 
-
- - - - diff --git a/AccessorSubscript_8hpp__dep__incl.map b/AccessorSubscript_8hpp__dep__incl.map deleted file mode 100644 index 45404bf..0000000 --- a/AccessorSubscript_8hpp__dep__incl.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/AccessorSubscript_8hpp__dep__incl.md5 b/AccessorSubscript_8hpp__dep__incl.md5 deleted file mode 100644 index 504c78a..0000000 --- a/AccessorSubscript_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5866e18dc9c28c29f1419474f6d3a9fc \ No newline at end of file diff --git a/AccessorSubscript_8hpp__dep__incl.png b/AccessorSubscript_8hpp__dep__incl.png deleted file mode 100644 index bda8e97..0000000 Binary files a/AccessorSubscript_8hpp__dep__incl.png and /dev/null differ diff --git a/AccessorSubscript_8hpp__incl.map b/AccessorSubscript_8hpp__incl.map deleted file mode 100644 index 35937c7..0000000 --- a/AccessorSubscript_8hpp__incl.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/AccessorSubscript_8hpp__incl.md5 b/AccessorSubscript_8hpp__incl.md5 deleted file mode 100644 index 2d1dde5..0000000 --- a/AccessorSubscript_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -026f0b751246cc492d0ef0844aab54fc \ No newline at end of file diff --git a/AccessorSubscript_8hpp__incl.png b/AccessorSubscript_8hpp__incl.png deleted file mode 100644 index 157a7b9..0000000 Binary files a/AccessorSubscript_8hpp__incl.png and /dev/null differ diff --git a/AccessorSubscript_8hpp_source.html b/AccessorSubscript_8hpp_source.html deleted file mode 100644 index 8e677dd..0000000 --- a/AccessorSubscript_8hpp_source.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - -StencilStream: StencilStream/AccessorSubscript.hpp Source File - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
AccessorSubscript.hpp
-
-
-Go to the documentation of this file.
1/*
-
2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
-
3 * University
-
4 *
-
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
-
6 * associated documentation files (the “Software”), to deal in the Software without restriction,
-
7 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
-
8 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
-
9 * furnished to do so, subject to the following conditions:
-
10 *
-
11 * The above copyright notice and this permission notice shall be included in all copies or
-
12 * substantial portions of the Software.
-
13 *
-
14 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-
15 * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-
16 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-
17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
19 */
-
20#pragma once
-
21#include "Index.hpp"
-
22#include <CL/sycl.hpp>
-
23
-
-
24namespace stencil {
-
47template <typename Cell, typename Accessor, sycl::access::mode access_mode,
-
48 uindex_t current_subdim = 0>
-
- -
50 public:
-
52 static constexpr uindex_t dimensions = Accessor::dimensions;
-
53
-
-
64 AccessorSubscript(Accessor &ac, uindex_t i)
-
65 requires(current_subdim == 0)
-
66 : ac(ac), id_prefix() {
-
67 id_prefix[current_subdim] = i;
-
68 }
-
-
69
-
-
80 AccessorSubscript(Accessor &ac, sycl::id<dimensions> id_prefix, uindex_t i)
-
81 : ac(ac), id_prefix(id_prefix) {
-
82 id_prefix[current_subdim] = i;
-
83 }
-
-
84
-
- -
97 requires(current_subdim < dimensions - 2)
-
98 {
-
99 return AccessorSubscript(ac, id_prefix, i);
-
100 }
-
-
101
-
-
113 Cell const &operator[](uindex_t i)
-
114 requires(current_subdim == dimensions - 2 && access_mode == sycl::access::mode::read)
-
115 {
-
116 sycl::id<dimensions> id = id_prefix;
-
117 id[current_subdim + 1] = i;
-
118 return ac[id];
-
119 }
-
-
120
-
- -
132 requires(current_subdim == dimensions - 2 && access_mode != sycl::access::mode::read)
-
133 {
-
134 sycl::id<dimensions> id = id_prefix;
-
135 id[current_subdim + 1] = i;
-
136 return ac[id];
-
137 }
-
-
138
-
139 private:
-
140 Accessor &ac;
-
141 sycl::id<dimensions> id_prefix;
-
142};
-
-
143} // namespace stencil
-
- -
A helper class to support the double-subscript idiom for GridAccessors.
Definition AccessorSubscript.hpp:49
-
Cell & operator[](uindex_t i)
Access the cell.
Definition AccessorSubscript.hpp:131
-
AccessorSubscript< Cell, Accessor, access_mode, current_subdim+1 > operator[](uindex_t i)
Access the next dimension's accessor subscript.
Definition AccessorSubscript.hpp:96
-
AccessorSubscript(Accessor &ac, uindex_t i)
Instantiate a new accessor subscript object with the given index as the prefix.
Definition AccessorSubscript.hpp:64
-
Cell const & operator[](uindex_t i)
Access the cell.
Definition AccessorSubscript.hpp:113
-
AccessorSubscript(Accessor &ac, sycl::id< dimensions > id_prefix, uindex_t i)
Instantiate a new subscript object with the given prefix and subscript index.
Definition AccessorSubscript.hpp:80
-
static constexpr uindex_t dimensions
The number of dimensions in the accessed grid.
Definition AccessorSubscript.hpp:52
-
Definition AccessorSubscript.hpp:24
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-
- - - - diff --git a/BaseTransitionFunction_8hpp.html b/BaseTransitionFunction_8hpp.html deleted file mode 100644 index 107bb01..0000000 --- a/BaseTransitionFunction_8hpp.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -StencilStream: StencilStream/BaseTransitionFunction.hpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Namespaces
-
BaseTransitionFunction.hpp File Reference
-
-
-
#include "Concepts.hpp"
-#include <variant>
-
-Include dependency graph for BaseTransitionFunction.hpp:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  stencil::BaseTransitionFunction
 Base class for transition functions that disables advanced features. More...
 
- - - -

-Namespaces

namespace  stencil
 
-
- - - - diff --git a/BaseTransitionFunction_8hpp__incl.map b/BaseTransitionFunction_8hpp__incl.map deleted file mode 100644 index 5e7e67f..0000000 --- a/BaseTransitionFunction_8hpp__incl.map +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BaseTransitionFunction_8hpp__incl.md5 b/BaseTransitionFunction_8hpp__incl.md5 deleted file mode 100644 index 1cbae13..0000000 --- a/BaseTransitionFunction_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -b5eafe82cab89bece9516ed2c8f79545 \ No newline at end of file diff --git a/BaseTransitionFunction_8hpp__incl.png b/BaseTransitionFunction_8hpp__incl.png deleted file mode 100644 index 8695d5a..0000000 Binary files a/BaseTransitionFunction_8hpp__incl.png and /dev/null differ diff --git a/BaseTransitionFunction_8hpp_source.html b/BaseTransitionFunction_8hpp_source.html deleted file mode 100644 index ede9b73..0000000 --- a/BaseTransitionFunction_8hpp_source.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -StencilStream: StencilStream/BaseTransitionFunction.hpp Source File - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
BaseTransitionFunction.hpp
-
-
-Go to the documentation of this file.
1/*
-
2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
-
3 * University
-
4 *
-
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
6 * of this software and associated documentation files (the “Software”), to deal
-
7 * in the Software without restriction, including without limitation the rights
-
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
9 * copies of the Software, and to permit persons to whom the Software is
-
10 * furnished to do so, subject to the following conditions:
-
11 *
-
12 * The above copyright notice and this permission notice shall be included in
-
13 * all copies or substantial portions of the Software.
-
14 *
-
15 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
21 * SOFTWARE.
-
22 */
-
23#pragma once
-
24#include "Concepts.hpp"
-
25#include <variant>
-
26
-
27namespace stencil {
-
28
-
- -
41 public:
-
42 using TimeDependentValue = std::monostate;
-
43
-
44 static constexpr uindex_t stencil_radius = 1;
-
45 static constexpr uindex_t n_subiterations = 1;
-
46
-
47 std::monostate get_time_dependent_value(uindex_t i_iteration) const { return std::monostate(); }
-
48};
-
-
49
-
50} // namespace stencil
- -
Base class for transition functions that disables advanced features.
Definition BaseTransitionFunction.hpp:40
-
static constexpr uindex_t stencil_radius
Definition BaseTransitionFunction.hpp:44
-
static constexpr uindex_t n_subiterations
Definition BaseTransitionFunction.hpp:45
-
std::monostate TimeDependentValue
Definition BaseTransitionFunction.hpp:42
-
std::monostate get_time_dependent_value(uindex_t i_iteration) const
Definition BaseTransitionFunction.hpp:47
-
Definition AccessorSubscript.hpp:24
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-
- - - - diff --git a/Concepts_8hpp.html b/Concepts_8hpp.html deleted file mode 100644 index 2755641..0000000 --- a/Concepts_8hpp.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - -StencilStream: StencilStream/Concepts.hpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Namespaces | -Concepts
-
Concepts.hpp File Reference
-
-
-
#include "Index.hpp"
-#include "Stencil.hpp"
-#include <concepts>
-#include <type_traits>
-
-Include dependency graph for Concepts.hpp:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  stencil
 
namespace  stencil::concepts
 
- - - - - - - - - - - - - -

-Concepts

concept  stencil::concepts::TransitionFunction
 A technical definition of a stencil transition function.
 
concept  stencil::concepts::GridAccessor
 An accessor for a two-dimensional grid.
 
concept  stencil::concepts::Grid
 A regular grid of cells.
 
concept  stencil::concepts::StencilUpdate
 A grid updater that repeatedly applies stencil updates to each cell.
 
-
- - - - diff --git a/Concepts_8hpp__dep__incl.map b/Concepts_8hpp__dep__incl.map deleted file mode 100644 index a942cb7..0000000 --- a/Concepts_8hpp__dep__incl.map +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/Concepts_8hpp__dep__incl.md5 b/Concepts_8hpp__dep__incl.md5 deleted file mode 100644 index 0eae4f4..0000000 --- a/Concepts_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -863d703b82cb9309e2d58f6be12e01c0 \ No newline at end of file diff --git a/Concepts_8hpp__dep__incl.png b/Concepts_8hpp__dep__incl.png deleted file mode 100644 index 019bd5a..0000000 Binary files a/Concepts_8hpp__dep__incl.png and /dev/null differ diff --git a/Concepts_8hpp__incl.map b/Concepts_8hpp__incl.map deleted file mode 100644 index 3c50a70..0000000 --- a/Concepts_8hpp__incl.map +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Concepts_8hpp__incl.md5 b/Concepts_8hpp__incl.md5 deleted file mode 100644 index 54ea6e6..0000000 --- a/Concepts_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -aab70ce3331b4967b806ca07f1e87575 \ No newline at end of file diff --git a/Concepts_8hpp__incl.png b/Concepts_8hpp__incl.png deleted file mode 100644 index eefa041..0000000 Binary files a/Concepts_8hpp__incl.png and /dev/null differ diff --git a/Concepts_8hpp_source.html b/Concepts_8hpp_source.html deleted file mode 100644 index 4453d18..0000000 --- a/Concepts_8hpp_source.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - -StencilStream: StencilStream/Concepts.hpp Source File - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
Concepts.hpp
-
-
-Go to the documentation of this file.
1/*
-
2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
-
3 * University
-
4 *
-
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
6 * of this software and associated documentation files (the “Software”), to deal
-
7 * in the Software without restriction, including without limitation the rights
-
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
9 * copies of the Software, and to permit persons to whom the Software is
-
10 * furnished to do so, subject to the following conditions:
-
11 *
-
12 * The above copyright notice and this permission notice shall be included in
-
13 * all copies or substantial portions of the Software.
-
14 *
-
15 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
21 * SOFTWARE.
-
22 */
-
23#pragma once
-
24#include "Index.hpp"
-
25#include "Stencil.hpp"
-
26
-
27#include <concepts>
-
28#include <type_traits>
-
29
-
30namespace stencil {
-
-
31namespace concepts {
-
32
-
61template <typename T>
-
- -
63 std::semiregular<typename T::Cell> && std::copyable<typename T::TimeDependentValue> &&
-
64
-
65 std::same_as<decltype(T::stencil_radius), const uindex_t> && (T::stencil_radius >= 1) &&
-
66 std::same_as<decltype(T::n_subiterations), const uindex_t> && (T::n_subiterations >= 1) &&
-
67
-
68 requires(T const &trans_func,
-
69 Stencil<typename T::Cell, T::stencil_radius, typename T::TimeDependentValue> const
-
70 &stencil) {
-
71 { trans_func(stencil) } -> std::same_as<typename T::Cell>;
-
72 } &&
-
73 requires(T const &trans_func, uindex_t i_iteration) {
-
74 {
-
75 trans_func.get_time_dependent_value(i_iteration)
-
76 } -> std::same_as<typename T::TimeDependentValue>;
-
77 };
-
-
78
-
85template <typename Accessor, typename Cell>
-
-
86concept GridAccessor = requires(Accessor ac, uindex_t c, uindex_t r) {
-
87 { ac[sycl::id<2>(c, r)] } -> std::same_as<Cell &>;
-
88 { ac[c][r] } -> std::same_as<Cell &>;
-
89};
-
-
90
-
114template <typename G, typename Cell>
-
-
115concept Grid = requires(G &grid, sycl::buffer<Cell, 2> buffer, uindex_t c, uindex_t r, Cell cell) {
-
116 { G(c, r) } -> std::same_as<G>;
-
117 { G(sycl::range<2>(c, r)) } -> std::same_as<G>;
-
118 { G(buffer) } -> std::same_as<G>;
-
119 { grid.copy_from_buffer(buffer) } -> std::same_as<void>;
-
120 { grid.copy_to_buffer(buffer) } -> std::same_as<void>;
-
121 { grid.get_grid_width() } -> std::convertible_to<uindex_t>;
-
122 { grid.get_grid_height() } -> std::convertible_to<uindex_t>;
-
123 { grid.make_similar() } -> std::same_as<G>;
-
124 {
-
125 typename G::template GridAccessor<sycl::access::mode::read_write>(grid)
- -
127};
-
-
128
-
155template <typename SU, typename TF, typename G>
-
- -
157 // Test construction and update call.
-
158 requires(SU stencil_update, G &grid, typename SU::Params params) {
-
159 { SU(params) } -> std::same_as<SU>;
-
160 { stencil_update.get_params() } -> std::same_as<typename SU::Params &>;
-
161 { stencil_update(grid) } -> std::same_as<G>;
-
162 } &&
-
163 // Test existance of parameter fields
-
164 requires(typename SU::Params params) {
-
165 { params.transition_function } -> std::same_as<TF &>;
-
166 { params.halo_value } -> std::same_as<typename TF::Cell &>;
-
167 { params.iteration_offset } -> std::same_as<uindex_t &>;
-
168 { params.n_iterations } -> std::same_as<uindex_t &>;
-
169 { params.device } -> std::same_as<sycl::device &>;
-
170 } && TransitionFunction<TF> && Grid<G, typename TF::Cell> &&
-
-
171 (std::is_class<typename SU::Params>::value);
-
172
-
173} // namespace concepts
-
-
174} // namespace stencil
- - -
An accessor for a two-dimensional grid.
Definition Concepts.hpp:86
-
A regular grid of cells.
Definition Concepts.hpp:115
-
A grid updater that repeatedly applies stencil updates to each cell.
Definition Concepts.hpp:156
-
A technical definition of a stencil transition function.
Definition Concepts.hpp:62
-
Definition AccessorSubscript.hpp:24
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-
- - - - diff --git a/FDTD.png b/FDTD.png deleted file mode 100755 index 7fba6b1..0000000 Binary files a/FDTD.png and /dev/null differ diff --git a/GenericID_8hpp.html b/GenericID_8hpp.html deleted file mode 100644 index 13b28c5..0000000 --- a/GenericID_8hpp.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - -StencilStream: StencilStream/GenericID.hpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Namespaces | -Typedefs
-
GenericID.hpp File Reference
-
-
-
#include "Index.hpp"
-#include <CL/sycl.hpp>
-
-Include dependency graph for GenericID.hpp:
-
-
- - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  stencil::GenericID< T >
 A generic, two-dimensional index. More...
 
- - - -

-Namespaces

namespace  stencil
 
- - - - - - - -

-Typedefs

typedef GenericID< index_tstencil::ID
 A signed, two-dimensional index.
 
typedef GenericID< uindex_tstencil::UID
 An unsigned, two-dimensional index.
 
-
- - - - diff --git a/GenericID_8hpp__dep__incl.map b/GenericID_8hpp__dep__incl.map deleted file mode 100644 index 0454c6c..0000000 --- a/GenericID_8hpp__dep__incl.map +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/GenericID_8hpp__dep__incl.md5 b/GenericID_8hpp__dep__incl.md5 deleted file mode 100644 index 3f56e9b..0000000 --- a/GenericID_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d4ddb94724652b470f70491de49479e2 \ No newline at end of file diff --git a/GenericID_8hpp__dep__incl.png b/GenericID_8hpp__dep__incl.png deleted file mode 100644 index fc0d49f..0000000 Binary files a/GenericID_8hpp__dep__incl.png and /dev/null differ diff --git a/GenericID_8hpp__incl.map b/GenericID_8hpp__incl.map deleted file mode 100644 index e25d30d..0000000 --- a/GenericID_8hpp__incl.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/GenericID_8hpp__incl.md5 b/GenericID_8hpp__incl.md5 deleted file mode 100644 index 60a3036..0000000 --- a/GenericID_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -286c6cd64db63571a82f3ffef22353e8 \ No newline at end of file diff --git a/GenericID_8hpp__incl.png b/GenericID_8hpp__incl.png deleted file mode 100644 index 5782bd9..0000000 Binary files a/GenericID_8hpp__incl.png and /dev/null differ diff --git a/GenericID_8hpp_source.html b/GenericID_8hpp_source.html deleted file mode 100644 index 061c52c..0000000 --- a/GenericID_8hpp_source.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - -StencilStream: StencilStream/GenericID.hpp Source File - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
GenericID.hpp
-
-
-Go to the documentation of this file.
1/*
-
2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
-
3 * University
-
4 *
-
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
-
6 * associated documentation files (the “Software”), to deal in the Software without restriction,
-
7 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
-
8 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
-
9 * furnished to do so, subject to the following conditions:
-
10 *
-
11 * The above copyright notice and this permission notice shall be included in all copies or
-
12 * substantial portions of the Software.
-
13 *
-
14 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-
15 * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-
16 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-
17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
19 */
-
20#pragma once
-
21#include "Index.hpp"
-
22#include <CL/sycl.hpp>
-
23
-
24namespace stencil {
-
25
-
-
32template <typename T> class GenericID {
-
33 public:
-
37 GenericID() : c(), r() {}
-
38
-
42 GenericID(T column, T row) : c(column), r(row) {}
-
43
-
47 GenericID(sycl::id<2> sycl_id) : c(sycl_id[0]), r(sycl_id[1]) {}
-
48
-
52 GenericID(sycl::range<2> sycl_range) : c(sycl_range[0]), r(sycl_range[1]) {}
-
53
-
-
57 bool operator==(GenericID const &other) const {
-
58 return this->c == other.c && this->r == other.r;
-
59 }
-
-
60
-
64 T c;
-
65
-
69 T r;
-
70};
-
-
71
- -
76
- -
81
-
82} // namespace stencil
- -
A generic, two-dimensional index.
Definition GenericID.hpp:32
-
GenericID()
Create a new index with undefined contents.
Definition GenericID.hpp:37
-
T c
The column index.
Definition GenericID.hpp:64
-
GenericID(sycl::id< 2 > sycl_id)
Convert the SYCL ID.
Definition GenericID.hpp:47
-
GenericID(sycl::range< 2 > sycl_range)
Convert the SYCl range.
Definition GenericID.hpp:52
-
GenericID(T column, T row)
Create a new index with the given column and row indices.
Definition GenericID.hpp:42
-
bool operator==(GenericID const &other) const
Test if the other generic ID has equivalent coordinates to this ID.
Definition GenericID.hpp:57
-
T r
The row index.
Definition GenericID.hpp:69
-
Definition AccessorSubscript.hpp:24
-
GenericID< uindex_t > UID
An unsigned, two-dimensional index.
Definition GenericID.hpp:80
-
GenericID< index_t > ID
A signed, two-dimensional index.
Definition GenericID.hpp:75
-
- - - - diff --git a/Helpers_8hpp.html b/Helpers_8hpp.html deleted file mode 100644 index a31527c..0000000 --- a/Helpers_8hpp.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - -StencilStream: StencilStream/Helpers.hpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Namespaces | -Functions | -Variables
-
Helpers.hpp File Reference
-
-
-
#include "Index.hpp"
-#include <numeric>
-
-Include dependency graph for Helpers.hpp:
-
-
- - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

struct  stencil::Padded< T >
 A container with padding to the next power of two. More...
 
- - - -

-Namespaces

namespace  stencil
 
- - - - - - - -

-Functions

constexpr uindex_t stencil::n_cells_to_n_words (uindex_t n_cells, uindex_t word_length)
 Compute the number of words necessary to store a given number of cells.
 
template<typename T >
struct stencil::Padded stencil::__attribute__ ((aligned(std::bit_ceil(sizeof(T)))))
 
- - - -

-Variables

value
 
-

Variable Documentation

- -

◆ value

- -
-
- - - - -
T value
-
- -
-
-
- - - - diff --git a/Helpers_8hpp__dep__incl.map b/Helpers_8hpp__dep__incl.map deleted file mode 100644 index 6b7cc19..0000000 --- a/Helpers_8hpp__dep__incl.map +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Helpers_8hpp__dep__incl.md5 b/Helpers_8hpp__dep__incl.md5 deleted file mode 100644 index 82e6d81..0000000 --- a/Helpers_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -e28fa4573dc79dadddaf867d2b52e9ae \ No newline at end of file diff --git a/Helpers_8hpp__dep__incl.png b/Helpers_8hpp__dep__incl.png deleted file mode 100644 index fb35522..0000000 Binary files a/Helpers_8hpp__dep__incl.png and /dev/null differ diff --git a/Helpers_8hpp__incl.map b/Helpers_8hpp__incl.map deleted file mode 100644 index b6baba9..0000000 --- a/Helpers_8hpp__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/Helpers_8hpp__incl.md5 b/Helpers_8hpp__incl.md5 deleted file mode 100644 index b00b0dd..0000000 --- a/Helpers_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3a9373ef543a332a0f9f137f9a855f4f \ No newline at end of file diff --git a/Helpers_8hpp__incl.png b/Helpers_8hpp__incl.png deleted file mode 100644 index 8dabe18..0000000 Binary files a/Helpers_8hpp__incl.png and /dev/null differ diff --git a/Helpers_8hpp_source.html b/Helpers_8hpp_source.html deleted file mode 100644 index d68b12a..0000000 --- a/Helpers_8hpp_source.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -StencilStream: StencilStream/Helpers.hpp Source File - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
Helpers.hpp
-
-
-Go to the documentation of this file.
1/*
-
2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
-
3 * University
-
4 *
-
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
-
6 * associated documentation files (the “Software”), to deal in the Software without restriction,
-
7 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
-
8 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
-
9 * furnished to do so, subject to the following conditions:
-
10 *
-
11 * The above copyright notice and this permission notice shall be included in all copies or
-
12 * substantial portions of the Software.
-
13 *
-
14 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-
15 * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-
16 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-
17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
19 */
-
20#pragma once
-
21#include "Index.hpp"
-
22#include <numeric>
-
23
-
24namespace stencil {
-
25
-
-
34inline constexpr uindex_t n_cells_to_n_words(uindex_t n_cells, uindex_t word_length) {
-
35 return n_cells / word_length + (n_cells % word_length == 0 ? 0 : 1);
-
36}
-
37
-
-
45template <typename T> struct Padded {
- -
47} __attribute__((aligned(std::bit_ceil(sizeof(T)))));
-
-
-
48
-
49} // namespace stencil
- -
Definition AccessorSubscript.hpp:24
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-
constexpr uindex_t n_cells_to_n_words(uindex_t n_cells, uindex_t word_length)
Compute the number of words necessary to store a given number of cells.
Definition Helpers.hpp:34
-
struct stencil::Padded __attribute__((aligned(std::bit_ceil(sizeof(T)))))
-
A container with padding to the next power of two.
Definition Helpers.hpp:45
-
T value
Definition Helpers.hpp:46
-
- - - - diff --git a/Index_8hpp.html b/Index_8hpp.html deleted file mode 100644 index c6741eb..0000000 --- a/Index_8hpp.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - -StencilStream: StencilStream/Index.hpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Namespaces | -Macros | -Typedefs
-
Index.hpp File Reference
-
-
-
#include <CL/sycl.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <cstdint>
-
-Include dependency graph for Index.hpp:
-
-
- - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - -

-Namespaces

namespace  stencil
 
- - - -

-Macros

#define STENCIL_INDEX_WIDTH   64
 
- - - - - - - -

-Typedefs

using stencil::uindex_t = BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t)
 An unsigned integer of configurable width.
 
using stencil::index_t = BOOST_PP_CAT(BOOST_PP_CAT(int, STENCIL_INDEX_WIDTH), _t)
 A signed integer of configurable width.
 
-

Macro Definition Documentation

- -

◆ STENCIL_INDEX_WIDTH

- -
-
- - - - -
#define STENCIL_INDEX_WIDTH   64
-
- -
-
-
- - - - diff --git a/Index_8hpp__dep__incl.map b/Index_8hpp__dep__incl.map deleted file mode 100644 index 6336572..0000000 --- a/Index_8hpp__dep__incl.map +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Index_8hpp__dep__incl.md5 b/Index_8hpp__dep__incl.md5 deleted file mode 100644 index 1fabe00..0000000 --- a/Index_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c57713be038fa064fd347e685f904ac3 \ No newline at end of file diff --git a/Index_8hpp__dep__incl.png b/Index_8hpp__dep__incl.png deleted file mode 100644 index ae121dc..0000000 Binary files a/Index_8hpp__dep__incl.png and /dev/null differ diff --git a/Index_8hpp__incl.map b/Index_8hpp__incl.map deleted file mode 100644 index 9e246b5..0000000 --- a/Index_8hpp__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/Index_8hpp__incl.md5 b/Index_8hpp__incl.md5 deleted file mode 100644 index 46d7792..0000000 --- a/Index_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -b37334d535331cd1b61750ffd7996903 \ No newline at end of file diff --git a/Index_8hpp__incl.png b/Index_8hpp__incl.png deleted file mode 100644 index 7542084..0000000 Binary files a/Index_8hpp__incl.png and /dev/null differ diff --git a/Index_8hpp_source.html b/Index_8hpp_source.html deleted file mode 100644 index ad4b8dd..0000000 --- a/Index_8hpp_source.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -StencilStream: StencilStream/Index.hpp Source File - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
Index.hpp
-
-
-Go to the documentation of this file.
1/*
-
2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
-
3 * University
-
4 *
-
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
-
6 * associated documentation files (the “Software”), to deal in the Software without restriction,
-
7 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
-
8 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
-
9 * furnished to do so, subject to the following conditions:
-
10 *
-
11 * The above copyright notice and this permission notice shall be included in all copies or
-
12 * substantial portions of the Software.
-
13 *
-
14 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-
15 * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-
16 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-
17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
19 */
-
20#pragma once
-
21#include <CL/sycl.hpp>
-
22#include <boost/preprocessor/cat.hpp>
-
23#include <cstdint>
-
24
-
25namespace stencil {
-
26#ifndef STENCIL_INDEX_WIDTH
-
27 #define STENCIL_INDEX_WIDTH 64
-
28#endif
-
29
-
42using uindex_t = BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t);
-
43
-
56using index_t = BOOST_PP_CAT(BOOST_PP_CAT(int, STENCIL_INDEX_WIDTH), _t);
-
57} // namespace stencil
-
#define STENCIL_INDEX_WIDTH
Definition Index.hpp:27
-
Definition AccessorSubscript.hpp:24
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-
BOOST_PP_CAT(BOOST_PP_CAT(int, STENCIL_INDEX_WIDTH), _t) index_t
A signed integer of configurable width.
Definition Index.hpp:56
-
- - - - diff --git a/README_8md.html b/README_8md.html deleted file mode 100644 index 9d21e62..0000000 --- a/README_8md.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -StencilStream: README.md File Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
-
README.md File Reference
-
-
-
- - - - diff --git a/SinglePassStrategies_8hpp.html b/SinglePassStrategies_8hpp.html deleted file mode 100644 index 84d885e..0000000 --- a/SinglePassStrategies_8hpp.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - -StencilStream: StencilStream/tdv/SinglePassStrategies.hpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Namespaces | -Concepts
-
SinglePassStrategies.hpp File Reference
-
-
-
#include "../Concepts.hpp"
-
-Include dependency graph for SinglePassStrategies.hpp:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  stencil::tdv::single_pass::InlineStrategy
 A TDV implementation strategy that inlines the TDV function into the transition function. More...
 
struct  stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >
 
struct  stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument
 
struct  stencil::tdv::single_pass::PrecomputeOnDeviceStrategy
 A TDV implementation strategy that precomputes TDVs on the device. More...
 
struct  stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >
 
struct  stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument
 
struct  stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState
 
struct  stencil::tdv::single_pass::PrecomputeOnHostStrategy
 A TDV implementation strategy that precomputes TDVs on the host. More...
 
class  stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >
 
struct  stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument
 
struct  stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState
 
- - - - - - - - -

-Namespaces

namespace  stencil
 
namespace  stencil::tdv
 
namespace  stencil::tdv::single_pass
 Implementations of the TDV system for single-pass backends.
 
- - - - - - - - - - - - - -

-Concepts

concept  stencil::tdv::single_pass::LocalState
 The requirements for a pass-local TDV system state.
 
concept  stencil::tdv::single_pass::KernelArgument
 The requirements for a TDV kernel argument.
 
concept  stencil::tdv::single_pass::GlobalState
 The requirements for a TDV system's global state.
 
concept  stencil::tdv::single_pass::Strategy
 Requirements for a TDV implementation strategy.
 
-
- - - - diff --git a/SinglePassStrategies_8hpp__dep__incl.map b/SinglePassStrategies_8hpp__dep__incl.map deleted file mode 100644 index a2470e8..0000000 --- a/SinglePassStrategies_8hpp__dep__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/SinglePassStrategies_8hpp__dep__incl.md5 b/SinglePassStrategies_8hpp__dep__incl.md5 deleted file mode 100644 index 28699a8..0000000 --- a/SinglePassStrategies_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -a63b4fa462c5c5b573c136657f76873c \ No newline at end of file diff --git a/SinglePassStrategies_8hpp__dep__incl.png b/SinglePassStrategies_8hpp__dep__incl.png deleted file mode 100644 index df8edad..0000000 Binary files a/SinglePassStrategies_8hpp__dep__incl.png and /dev/null differ diff --git a/SinglePassStrategies_8hpp__incl.map b/SinglePassStrategies_8hpp__incl.map deleted file mode 100644 index 2691484..0000000 --- a/SinglePassStrategies_8hpp__incl.map +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SinglePassStrategies_8hpp__incl.md5 b/SinglePassStrategies_8hpp__incl.md5 deleted file mode 100644 index 31b3306..0000000 --- a/SinglePassStrategies_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -eb981e41a9050f279b12ea5d1f428a97 \ No newline at end of file diff --git a/SinglePassStrategies_8hpp__incl.png b/SinglePassStrategies_8hpp__incl.png deleted file mode 100644 index d395371..0000000 Binary files a/SinglePassStrategies_8hpp__incl.png and /dev/null differ diff --git a/SinglePassStrategies_8hpp_source.html b/SinglePassStrategies_8hpp_source.html deleted file mode 100644 index 1515069..0000000 --- a/SinglePassStrategies_8hpp_source.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - - - - -StencilStream: StencilStream/tdv/SinglePassStrategies.hpp Source File - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
SinglePassStrategies.hpp
-
-
-Go to the documentation of this file.
1/*
-
2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
-
3 * University
-
4 *
-
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
-
6 * associated documentation files (the “Software”), to deal in the Software without restriction,
-
7 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
-
8 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
-
9 * furnished to do so, subject to the following conditions:
-
10 *
-
11 * The above copyright notice and this permission notice shall be included in all copies or
-
12 * substantial portions of the Software.
-
13 *
-
14 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-
15 * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-
16 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-
17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
19 */
-
20#pragma once
-
21#include "../Concepts.hpp"
-
22
-
23namespace stencil {
-
-
24namespace tdv {
-
25
-
-
31namespace single_pass {
-
32
-
47template <typename T, typename TransFunc>
-
-
48concept LocalState =
-
49 stencil::concepts::TransitionFunction<TransFunc> && requires(T const &local_state, uindex_t i) {
-
50 {
-
51 local_state.get_time_dependent_value(i)
-
52 } -> std::same_as<typename TransFunc::TimeDependentValue>;
-
53 };
-
-
54
-
64template <typename T, typename TransFunc>
- - -
67 std::constructible_from<typename T::LocalState, T const &>;
-
68
-
84template <typename T, typename TransFunc>
-
85concept GlobalState =
- -
87 std::constructible_from<T, TransFunc, uindex_t, uindex_t> &&
- -
89 std::constructible_from<typename T::KernelArgument, T &, sycl::handler &, uindex_t, uindex_t>;
-
90
-
98template <typename T, typename TransFunc, uindex_t max_n_iterations>
-
99concept Strategy =
- - -
102
-
- -
115 template <stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
-
-
116 struct GlobalState {
-
117 using TDV = typename TransFunc::TimeDependentValue;
-
118
-
-
119 GlobalState(TransFunc trans_func, uindex_t iteration_offset, uindex_t n_iterations)
-
120 : trans_func(trans_func) {}
-
-
121
-
- -
-
123 KernelArgument(GlobalState &global_state, sycl::handler &cgh, uindex_t iteration_offset,
-
124 uindex_t n_iterations)
-
125 : trans_func(global_state.trans_func), iteration_offset(iteration_offset) {}
-
-
126
- -
128
-
- -
130 return trans_func.get_time_dependent_value(iteration_offset + i_iteration);
-
131 }
-
-
132
-
133 private:
-
134 TransFunc trans_func;
-
135 uindex_t iteration_offset;
-
136 };
-
-
137
-
138 private:
-
139 TransFunc trans_func;
-
140 };
-
-
141};
-
-
142
-
- -
153 template <stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
-
-
154 struct GlobalState {
-
155 using TDV = typename TransFunc::TimeDependentValue;
-
156
-
-
157 GlobalState(TransFunc trans_func, uindex_t iteration_offset, uindex_t n_iterations)
-
158 : trans_func(trans_func) {}
-
-
159
-
- -
-
161 KernelArgument(GlobalState &global_state, sycl::handler &cgh, uindex_t iteration_offset,
-
162 uindex_t n_iterations)
-
163 : trans_func(global_state.trans_func), iteration_offset(iteration_offset) {}
-
-
164
-
-
165 struct LocalState {
-
-
166 LocalState(KernelArgument const &kernel_argument) : values() {
-
167 for (uindex_t i = 0; i < max_n_iterations; i++) {
-
168 values[i] = kernel_argument.trans_func.get_time_dependent_value(
-
169 kernel_argument.iteration_offset + i);
-
170 }
-
171 }
-
-
172
-
- -
174 return values[i_iteration];
-
175 }
-
-
176
-
177 private:
-
178 TDV values[max_n_iterations];
-
179 };
-
-
180
-
181 private:
-
182 TransFunc trans_func;
-
183 uindex_t iteration_offset;
-
184 };
-
-
185
-
186 private:
-
187 TransFunc trans_func;
-
188 };
-
-
189};
-
-
190
-
- -
201 template <stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
-
- -
203 public:
-
204 using TDV = typename TransFunc::TimeDependentValue;
-
205
-
-
206 GlobalState(TransFunc function, uindex_t iteration_offset, uindex_t n_iterations)
-
207 : function(function), iteration_offset(iteration_offset),
-
208 value_buffer(sycl::range<1>(n_iterations)) {
-
209 sycl::host_accessor ac(value_buffer, sycl::read_write);
-
210 for (uindex_t i = 0; i < n_iterations; i++) {
-
211 ac[i] = function.get_time_dependent_value(iteration_offset + i);
-
212 }
-
213 }
-
-
214
-
- -
216 : function(other.function), iteration_offset(other.iteration_offset),
-
217 value_buffer(other.value_buffer) {}
-
-
218
-
- -
-
220 KernelArgument(GlobalState &global_state, sycl::handler &cgh, uindex_t i_iteration,
-
221 uindex_t n_iterations)
-
222 : ac() {
-
223 assert(n_iterations <= max_n_iterations);
-
224 assert(i_iteration >= global_state.iteration_offset);
-
225 assert(i_iteration + n_iterations <=
-
226 global_state.iteration_offset + global_state.value_buffer.get_range()[0]);
-
227
-
228 sycl::range<1> access_range(n_iterations);
-
229 sycl::id<1> access_offset(i_iteration - global_state.iteration_offset);
-
230 ac = sycl::accessor<TDV, 1, sycl::access::mode::read>(
-
231 global_state.value_buffer, cgh, access_range, access_offset);
-
232 }
-
-
233
-
-
234 struct LocalState {
-
-
235 LocalState(KernelArgument const &kernel_argument) : values() {
-
236 uindex_t n_values =
-
237 std::min(max_n_iterations, uindex_t(kernel_argument.ac.get_range()[0]));
-
238
-
239 for (uindex_t i = 0; i < n_values; i++)
-
240 values[i] = kernel_argument.ac[i];
-
241 }
-
-
242
-
243 TDV get_time_dependent_value(uindex_t i) const { return values[i]; }
-
244
-
245 private:
-
246 TDV values[max_n_iterations];
-
247 };
-
-
248
-
249 private:
-
250 sycl::accessor<TDV, 1, sycl::access::mode::read> ac;
-
251 };
-
-
252
-
253 private:
-
254 TransFunc function;
-
255 uindex_t iteration_offset;
-
256 sycl::buffer<TDV, 1> value_buffer;
-
257 };
-
-
258};
-
-
259
-
260} // namespace single_pass
-
-
261} // namespace tdv
-
-
262} // namespace stencil
-
GlobalState(TransFunc function, uindex_t iteration_offset, uindex_t n_iterations)
Definition SinglePassStrategies.hpp:206
-
typename TransFunc::TimeDependentValue TDV
Definition SinglePassStrategies.hpp:204
-
GlobalState(GlobalState const &other)
Definition SinglePassStrategies.hpp:215
-
A technical definition of a stencil transition function.
Definition Concepts.hpp:62
-
The requirements for a TDV system's global state.
Definition SinglePassStrategies.hpp:85
-
The requirements for a TDV kernel argument.
Definition SinglePassStrategies.hpp:65
-
The requirements for a pass-local TDV system state.
Definition SinglePassStrategies.hpp:48
-
Requirements for a TDV implementation strategy.
Definition SinglePassStrategies.hpp:99
-
Definition AccessorSubscript.hpp:24
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-
KernelArgument(GlobalState &global_state, sycl::handler &cgh, uindex_t iteration_offset, uindex_t n_iterations)
Definition SinglePassStrategies.hpp:123
-
TDV get_time_dependent_value(uindex_t i_iteration) const
Definition SinglePassStrategies.hpp:129
-
typename TransFunc::TimeDependentValue TDV
Definition SinglePassStrategies.hpp:117
-
GlobalState(TransFunc trans_func, uindex_t iteration_offset, uindex_t n_iterations)
Definition SinglePassStrategies.hpp:119
-
A TDV implementation strategy that inlines the TDV function into the transition function.
Definition SinglePassStrategies.hpp:114
-
LocalState(KernelArgument const &kernel_argument)
Definition SinglePassStrategies.hpp:166
-
TDV get_time_dependent_value(uindex_t i_iteration) const
Definition SinglePassStrategies.hpp:173
-
KernelArgument(GlobalState &global_state, sycl::handler &cgh, uindex_t iteration_offset, uindex_t n_iterations)
Definition SinglePassStrategies.hpp:161
-
GlobalState(TransFunc trans_func, uindex_t iteration_offset, uindex_t n_iterations)
Definition SinglePassStrategies.hpp:157
-
typename TransFunc::TimeDependentValue TDV
Definition SinglePassStrategies.hpp:155
-
A TDV implementation strategy that precomputes TDVs on the device.
Definition SinglePassStrategies.hpp:152
-
LocalState(KernelArgument const &kernel_argument)
Definition SinglePassStrategies.hpp:235
-
TDV get_time_dependent_value(uindex_t i) const
Definition SinglePassStrategies.hpp:243
-
KernelArgument(GlobalState &global_state, sycl::handler &cgh, uindex_t i_iteration, uindex_t n_iterations)
Definition SinglePassStrategies.hpp:220
-
A TDV implementation strategy that precomputes TDVs on the host.
Definition SinglePassStrategies.hpp:200
-
- - - - diff --git a/Stencil_8hpp.html b/Stencil_8hpp.html deleted file mode 100644 index 2cda2c0..0000000 --- a/Stencil_8hpp.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - -StencilStream: StencilStream/Stencil.hpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Namespaces
-
Stencil.hpp File Reference
-
-
-
#include "GenericID.hpp"
-#include "Helpers.hpp"
-#include "Index.hpp"
-#include <bit>
-#include <sycl/ext/intel/ac_types/ac_int.hpp>
-#include <variant>
-
-Include dependency graph for Stencil.hpp:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  stencil::Stencil< Cell, stencil_radius, TimeDependentValue >
 The stencil buffer. More...
 
- - - -

-Namespaces

namespace  stencil
 
-
- - - - diff --git a/Stencil_8hpp__dep__incl.map b/Stencil_8hpp__dep__incl.map deleted file mode 100644 index dfabd6f..0000000 --- a/Stencil_8hpp__dep__incl.map +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Stencil_8hpp__dep__incl.md5 b/Stencil_8hpp__dep__incl.md5 deleted file mode 100644 index 21d893e..0000000 --- a/Stencil_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -1ea0ec1c7e410253f26a996326ef620e \ No newline at end of file diff --git a/Stencil_8hpp__dep__incl.png b/Stencil_8hpp__dep__incl.png deleted file mode 100644 index 790e4b7..0000000 Binary files a/Stencil_8hpp__dep__incl.png and /dev/null differ diff --git a/Stencil_8hpp__incl.map b/Stencil_8hpp__incl.map deleted file mode 100644 index d1e3b1e..0000000 --- a/Stencil_8hpp__incl.map +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Stencil_8hpp__incl.md5 b/Stencil_8hpp__incl.md5 deleted file mode 100644 index 8196db6..0000000 --- a/Stencil_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -2c12e0befb4022e66f7893625cfb4e99 \ No newline at end of file diff --git a/Stencil_8hpp__incl.png b/Stencil_8hpp__incl.png deleted file mode 100644 index ac9e603..0000000 Binary files a/Stencil_8hpp__incl.png and /dev/null differ diff --git a/Stencil_8hpp_source.html b/Stencil_8hpp_source.html deleted file mode 100644 index 1adadb8..0000000 --- a/Stencil_8hpp_source.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - -StencilStream: StencilStream/Stencil.hpp Source File - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
Stencil.hpp
-
-
-Go to the documentation of this file.
1/*
-
2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
-
3 * University
-
4 *
-
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
-
6 * associated documentation files (the “Software”), to deal in the Software without restriction,
-
7 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
-
8 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
-
9 * furnished to do so, subject to the following conditions:
-
10 *
-
11 * The above copyright notice and this permission notice shall be included in all copies or
-
12 * substantial portions of the Software.
-
13 *
-
14 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-
15 * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-
16 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-
17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
19 */
-
20#pragma once
-
21#include "GenericID.hpp"
-
22#include "Helpers.hpp"
-
23#include "Index.hpp"
-
24#include <bit>
-
25#include <sycl/ext/intel/ac_types/ac_int.hpp>
-
26#include <variant>
-
27
-
28namespace stencil {
-
29
-
46template <typename Cell, uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
-
47 requires std::semiregular<Cell> && (stencil_radius >= 1)
-
-
48class Stencil {
-
49 public:
-
51 static constexpr uindex_t diameter = 2 * stencil_radius + 1;
-
52
-
54 static constexpr unsigned long bits_stencil = std::bit_width(diameter);
-
55
-
57 using index_stencil_t = ac_int<bits_stencil, true>;
-
58
-
60 using uindex_stencil_t = ac_int<bits_stencil, false>;
-
61
- -
64
- -
67
-
-
77 Stencil(ID id, UID grid_range, uindex_t iteration, uindex_t subiteration,
-
78 TimeDependentValue tdv)
-
79 : id(id), iteration(iteration), subiteration(subiteration), grid_range(grid_range),
-
80 time_dependent_value(tdv), internal() {}
-
-
81
-
-
92 Stencil(ID id, UID grid_range, uindex_t iteration, uindex_t subiteration,
-
93 TimeDependentValue tdv, Cell raw[diameter][diameter])
-
94 : id(id), iteration(iteration), subiteration(subiteration), grid_range(grid_range),
-
95 time_dependent_value(tdv), internal() {
-
96#pragma unroll
-
97 for (uindex_t c = 0; c < diameter; c++) {
-
98#pragma unroll
-
99 for (uindex_t r = 0; r < diameter; r++) {
-
100 internal[c][r] = raw[c][r];
-
101 }
-
102 }
-
103 }
-
-
104
-
-
110 Cell const &operator[](ID id) const {
-
111 return internal[id.c + stencil_radius][id.r + stencil_radius];
-
112 }
-
-
113
-
119 Cell &operator[](ID id) { return internal[id.c + stencil_radius][id.r + stencil_radius]; }
-
120
-
-
126 Cell const &operator[](StencilID id) const {
-
127 return internal[id.c + index_stencil_t(stencil_radius)]
-
128 [id.r + index_stencil_t(stencil_radius)];
-
129 }
-
-
130
-
- -
137 return internal[id.c + index_stencil_t(stencil_radius)]
-
138 [id.r + index_stencil_t(stencil_radius)];
-
139 }
-
-
140
-
147 Cell const &operator[](UID id) const { return internal[id.c][id.r]; }
-
148
-
155 Cell &operator[](UID id) { return internal[id.c][id.r]; }
-
156
-
163 Cell const &operator[](StencilUID id) const { return internal[id.c][id.r]; }
-
164
-
171 Cell &operator[](StencilUID id) { return internal[id.c][id.r]; }
-
172
-
174 const ID id;
-
175
- -
178
- -
181
- -
184
-
186 const TimeDependentValue time_dependent_value;
-
187
-
188 private:
-
189 Cell internal[diameter][diameter];
-
190};
-
-
191} // namespace stencil
- - - -
A generic, two-dimensional index.
Definition GenericID.hpp:32
-
The stencil buffer.
Definition Stencil.hpp:48
-
const UID grid_range
The range of the underlying grid.
Definition Stencil.hpp:183
-
Cell const & operator[](ID id) const
Access a cell in the stencil.
Definition Stencil.hpp:110
-
Stencil(ID id, UID grid_range, uindex_t iteration, uindex_t subiteration, TimeDependentValue tdv, Cell raw[diameter][diameter])
Create a new stencil with the given contents.
Definition Stencil.hpp:92
-
Cell & operator[](ID id)
Access a cell in the stencil.
Definition Stencil.hpp:119
-
Cell & operator[](StencilUID id)
Access a cell in the stencil.
Definition Stencil.hpp:171
-
ac_int< bits_stencil, false > uindex_stencil_t
An unsigned index type for column and row indices in this stencil.
Definition Stencil.hpp:60
-
const ID id
The position of the central cell in the global grid.
Definition Stencil.hpp:174
-
Cell & operator[](UID id)
Access a cell in the stencil.
Definition Stencil.hpp:155
-
ac_int< bits_stencil, true > index_stencil_t
A signed index type for column and row indices in this stencil.
Definition Stencil.hpp:57
-
const uindex_t iteration
The present iteration index of the cells in the stencil.
Definition Stencil.hpp:177
-
Cell const & operator[](UID id) const
Access a cell in the stencil.
Definition Stencil.hpp:147
-
Stencil(ID id, UID grid_range, uindex_t iteration, uindex_t subiteration, TimeDependentValue tdv)
Create a new stencil with an uninitialized buffer.
Definition Stencil.hpp:77
-
Cell const & operator[](StencilID id) const
Access a cell in the stencil.
Definition Stencil.hpp:126
-
const uindex_t subiteration
The present sub-iteration index of the cells in the stencil.
Definition Stencil.hpp:180
-
const TimeDependentValue time_dependent_value
The time-dependent value for this iteration.
Definition Stencil.hpp:186
-
Cell const & operator[](StencilUID id) const
Access a cell in the stencil.
Definition Stencil.hpp:163
-
Cell & operator[](StencilID id)
Access a cell in the stencil.
Definition Stencil.hpp:136
-
Definition AccessorSubscript.hpp:24
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-
- - - - diff --git a/annotated.html b/annotated.html deleted file mode 100644 index 2fefde8..0000000 --- a/annotated.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -StencilStream: Class List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Class List
-
-
-
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 1234567]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Nstencil
 Ncpu
 CGridA grid class for the CPU backend
 CGridAccessorAn accessor for the grid
 CStencilUpdateA grid updater that applies an iterative stencil code to a grid
 CParamsParameters for the stencil updater
 Nmonotile
 CGridA grid class for the monotile architecture
 CGridAccessorAn accessor for the monotile grid
 CStencilUpdateA grid updater that applies an iterative stencil code to a grid
 CParamsParameters for the stencil updater
 CStencilUpdateKernelThe execution kernel of the monotile architecture
 Ntdv
 Nsingle_passImplementations of the TDV system for single-pass backends
 CInlineStrategyA TDV implementation strategy that inlines the TDV function into the transition function
 CGlobalState
 CKernelArgument
 CPrecomputeOnDeviceStrategyA TDV implementation strategy that precomputes TDVs on the device
 CGlobalState
 CKernelArgument
 CLocalState
 CPrecomputeOnHostStrategyA TDV implementation strategy that precomputes TDVs on the host
 CGlobalState
 CKernelArgument
 CLocalState
 Ntiling
 CGridA grid class for the tiling architecture
 CGridAccessorAn accessor for the monotile grid
 CStencilUpdateA grid updater that applies an iterative stencil code to a grid
 CParamsParameters for the stencil updater
 CStencilUpdateKernelA kernel that executes a stencil transition function on a tile
 CAccessorSubscriptA helper class to support the double-subscript idiom for GridAccessors
 CBaseTransitionFunctionBase class for transition functions that disables advanced features
 CGenericIDA generic, two-dimensional index
 CPaddedA container with padding to the next power of two
 CStencilThe stencil buffer
-
-
- - - - diff --git a/bc_s.png b/bc_s.png deleted file mode 100644 index 224b29a..0000000 Binary files a/bc_s.png and /dev/null differ diff --git a/bc_sd.png b/bc_sd.png deleted file mode 100644 index 31ca888..0000000 Binary files a/bc_sd.png and /dev/null differ diff --git a/classes.html b/classes.html deleted file mode 100644 index 380b2f1..0000000 --- a/classes.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -StencilStream: Class Index - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Class Index
-
-
-
A | B | G | I | K | L | P | S
-
-
-
A
-
AccessorSubscript (stencil)
-
-
B
-
BaseTransitionFunction (stencil)
-
-
G
-
GenericID (stencil)
InlineStrategy::GlobalState (stencil::tdv::single_pass)
PrecomputeOnDeviceStrategy::GlobalState (stencil::tdv::single_pass)
PrecomputeOnHostStrategy::GlobalState (stencil::tdv::single_pass)
Grid (stencil::cpu)
Grid (stencil::monotile)
Grid (stencil::tiling)
Grid::GridAccessor (stencil::cpu)
Grid::GridAccessor (stencil::monotile)
Grid::GridAccessor (stencil::tiling)
-
-
I
-
InlineStrategy (stencil::tdv::single_pass)
-
-
K
-
InlineStrategy::GlobalState::KernelArgument (stencil::tdv::single_pass)
PrecomputeOnDeviceStrategy::GlobalState::KernelArgument (stencil::tdv::single_pass)
PrecomputeOnHostStrategy::GlobalState::KernelArgument (stencil::tdv::single_pass)
-
-
L
-
PrecomputeOnDeviceStrategy::GlobalState::KernelArgument::LocalState (stencil::tdv::single_pass)
PrecomputeOnHostStrategy::GlobalState::KernelArgument::LocalState (stencil::tdv::single_pass)
-
-
P
-
Padded (stencil)
StencilUpdate::Params (stencil::cpu)
StencilUpdate::Params (stencil::monotile)
StencilUpdate::Params (stencil::tiling)
PrecomputeOnDeviceStrategy (stencil::tdv::single_pass)
PrecomputeOnHostStrategy (stencil::tdv::single_pass)
-
-
S
-
Stencil (stencil)
StencilUpdate (stencil::cpu)
StencilUpdate (stencil::monotile)
StencilUpdate (stencil::tiling)
StencilUpdateKernel (stencil::monotile)
StencilUpdateKernel (stencil::tiling)
-
-
- - - - diff --git a/classstencil_1_1AccessorSubscript-members.html b/classstencil_1_1AccessorSubscript-members.html deleted file mode 100644 index d62b95b..0000000 --- a/classstencil_1_1AccessorSubscript-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim > Member List
-
-
- -

This is the complete list of members for stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >, including all inherited members.

- - - - - - - -
AccessorSubscript(Accessor &ac, uindex_t i)stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >inline
AccessorSubscript(Accessor &ac, sycl::id< dimensions > id_prefix, uindex_t i)stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >inline
dimensionsstencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >static
operator[](uindex_t i)stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >inline
operator[](uindex_t i)stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >inline
operator[](uindex_t i)stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >inline
- - - - diff --git a/classstencil_1_1AccessorSubscript.html b/classstencil_1_1AccessorSubscript.html deleted file mode 100644 index 4aafb55..0000000 --- a/classstencil_1_1AccessorSubscript.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - - - - -StencilStream: stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Public Member Functions | -Static Public Attributes | -List of all members
-
stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim > Class Template Reference
-
-
- -

A helper class to support the double-subscript idiom for GridAccessors. - More...

- -

#include <AccessorSubscript.hpp>

- - - - - - - - - - - - - - - - - -

-Public Member Functions

 AccessorSubscript (Accessor &ac, uindex_t i)
 Instantiate a new accessor subscript object with the given index as the prefix.
 
 AccessorSubscript (Accessor &ac, sycl::id< dimensions > id_prefix, uindex_t i)
 Instantiate a new subscript object with the given prefix and subscript index.
 
AccessorSubscript< Cell, Accessor, access_mode, current_subdim+1 > operator[] (uindex_t i)
 Access the next dimension's accessor subscript.
 
Cell const & operator[] (uindex_t i)
 Access the cell.
 
Cell & operator[] (uindex_t i)
 Access the cell.
 
- - - - -

-Static Public Attributes

static constexpr uindex_t dimensions = Accessor::dimensions
 The number of dimensions in the accessed grid.
 
-

Detailed Description

-
template<typename Cell, typename Accessor, sycl::access::mode access_mode, uindex_t current_subdim = 0>
-class stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >

A helper class to support the double-subscript idiom for GridAccessors.

-

This class is used to support expressions like accessor[i_column][i_row]. Each subscript except the last one creates an object of this class, which stores the index of the subscript as well as all previous indices to form a so-called "prefix." When the last subscript is called, the index is added to the prefix to yield the complete, multi-dimensional index. Then, the last subscript object returns a reference to the requested cell.

-
Template Parameters
- - - - - -
CellThe cell type to support
Accessoraccessor to direct to. It must fulfill stencil::concepts::GridAccessor, but since this class is also part of the concept's definition, we can't check it here.
access_modeThe access mode of the accessor. Used to enable and disable different operator[] implementations
current_subdimThe current subdim. Decides whether the next call to operator[] returns another AccessorSubscript or the final cell reference.
-
-
-

Constructor & Destructor Documentation

- -

◆ AccessorSubscript() [1/2]

- -
-
-
-template<typename Cell , typename Accessor , sycl::access::mode access_mode, uindex_t current_subdim = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - -
stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >::AccessorSubscript (Accessor & ac,
uindex_t i 
)
-
-inline
-
- -

Instantiate a new accessor subscript object with the given index as the prefix.

-

This accessor is meant to be used by the operator[] implementation of the accessor to construct the first subscript object. It is therefore only available iff the current subdimention is zero.

-
Parameters
- - - -
acThe accessor to redirect to.
iThe index of the previous subscript. It will be used as a prefix.
-
-
- -
-
- -

◆ AccessorSubscript() [2/2]

- -
-
-
-template<typename Cell , typename Accessor , sycl::access::mode access_mode, uindex_t current_subdim = 0>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >::AccessorSubscript (Accessor & ac,
sycl::id< dimensionsid_prefix,
uindex_t i 
)
-
-inline
-
- -

Instantiate a new subscript object with the given prefix and subscript index.

-

This constructor will take the given prefix, add the new index to it at the current position, and use the resulting prefix.

-
Parameters
- - - - -
acThe accessor to redirect to.
id_prefixThe previous prefix
iThe new index to add to the prefix.
-
-
- -
-
-

Member Function Documentation

- -

◆ operator[]() [1/3]

- -
-
-
-template<typename Cell , typename Accessor , sycl::access::mode access_mode, uindex_t current_subdim = 0>
- - - - - -
- - - - - - - - -
AccessorSubscript< Cell, Accessor, access_mode, current_subdim+1 > stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >::operator[] (uindex_t i)
-
-inline
-
- -

Access the next dimension's accessor subscript.

-

The resulting subscript object will contain the current prefix together with the given index. This implementation is only available to intermediate dimensions. For the last dimension, the resulting ID will be evaluated and returned.

-
Parameters
- - -
iThe next dimension's index.
-
-
-
Returns
A subscript object for the following dimensions.
- -
-
- -

◆ operator[]() [2/3]

- -
-
-
-template<typename Cell , typename Accessor , sycl::access::mode access_mode, uindex_t current_subdim = 0>
- - - - - -
- - - - - - - - -
Cell const & stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >::operator[] (uindex_t i)
-
-inline
-
- -

Access the cell.

-

This will add the given index to the prefix and use the underlying accessor to provide a reference to the cell. This is the implementation for read-only accessors as it returns a constant reference.

-
Parameters
- - -
iThe final dimension's index.
-
-
-
Returns
A constant reference to the indexed cell.
- -
-
- -

◆ operator[]() [3/3]

- -
-
-
-template<typename Cell , typename Accessor , sycl::access::mode access_mode, uindex_t current_subdim = 0>
- - - - - -
- - - - - - - - -
Cell & stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >::operator[] (uindex_t i)
-
-inline
-
- -

Access the cell.

-

This will add the given index to the prefix and use the underlying accessor to provide a reference to the cell. This is the implementation for accessors that may alter the grid.

-
Parameters
- - -
iThe final dimension's index.
-
-
-
Returns
A reference to the indexed cell.
- -
-
-

Member Data Documentation

- -

◆ dimensions

- -
-
-
-template<typename Cell , typename Accessor , sycl::access::mode access_mode, uindex_t current_subdim = 0>
- - - - - -
- - - - -
constexpr uindex_t stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >::dimensions = Accessor::dimensions
-
-staticconstexpr
-
- -

The number of dimensions in the accessed grid.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1BaseTransitionFunction-members.html b/classstencil_1_1BaseTransitionFunction-members.html deleted file mode 100644 index 5c167ba..0000000 --- a/classstencil_1_1BaseTransitionFunction-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::BaseTransitionFunction Member List
-
-
- -

This is the complete list of members for stencil::BaseTransitionFunction, including all inherited members.

- - - - - -
get_time_dependent_value(uindex_t i_iteration) conststencil::BaseTransitionFunctioninline
n_subiterationsstencil::BaseTransitionFunctionstatic
stencil_radiusstencil::BaseTransitionFunctionstatic
TimeDependentValue typedefstencil::BaseTransitionFunction
- - - - diff --git a/classstencil_1_1BaseTransitionFunction.html b/classstencil_1_1BaseTransitionFunction.html deleted file mode 100644 index d75b14a..0000000 --- a/classstencil_1_1BaseTransitionFunction.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - -StencilStream: stencil::BaseTransitionFunction Class Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Public Types | -Public Member Functions | -Static Public Attributes | -List of all members
-
stencil::BaseTransitionFunction Class Reference
-
-
- -

Base class for transition functions that disables advanced features. - More...

- -

#include <BaseTransitionFunction.hpp>

- - - - -

-Public Types

using TimeDependentValue = std::monostate
 
- - - -

-Public Member Functions

std::monostate get_time_dependent_value (uindex_t i_iteration) const
 
- - - - - -

-Static Public Attributes

static constexpr uindex_t stencil_radius = 1
 
static constexpr uindex_t n_subiterations = 1
 
-

Detailed Description

-

Base class for transition functions that disables advanced features.

-

Users who want to start implementing a transition function should let it inherit this class. It provides default definitions that disable certain advanced StencilStream features, for example the time-dependent value feature or sub-iterations.

-

For the time-dependent value system, this class uses the std::monostate type. This type has only one value, which is "computed" for every iteration.

-

Member Typedef Documentation

- -

◆ TimeDependentValue

- -
-
- - - - -
using stencil::BaseTransitionFunction::TimeDependentValue = std::monostate
-
- -
-
-

Member Function Documentation

- -

◆ get_time_dependent_value()

- -
-
- - - - - -
- - - - - - - - -
std::monostate stencil::BaseTransitionFunction::get_time_dependent_value (uindex_t i_iteration) const
-
-inline
-
- -
-
-

Member Data Documentation

- -

◆ n_subiterations

- -
-
- - - - - -
- - - - -
constexpr uindex_t stencil::BaseTransitionFunction::n_subiterations = 1
-
-staticconstexpr
-
- -
-
- -

◆ stencil_radius

- -
-
- - - - - -
- - - - -
constexpr uindex_t stencil::BaseTransitionFunction::stencil_radius = 1
-
-staticconstexpr
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1GenericID-members.html b/classstencil_1_1GenericID-members.html deleted file mode 100644 index fe60e8d..0000000 --- a/classstencil_1_1GenericID-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::GenericID< T > Member List
-
-
- -

This is the complete list of members for stencil::GenericID< T >, including all inherited members.

- - - - - - - - -
cstencil::GenericID< T >
GenericID()stencil::GenericID< T >inline
GenericID(T column, T row)stencil::GenericID< T >inline
GenericID(sycl::id< 2 > sycl_id)stencil::GenericID< T >inline
GenericID(sycl::range< 2 > sycl_range)stencil::GenericID< T >inline
operator==(GenericID const &other) conststencil::GenericID< T >inline
rstencil::GenericID< T >
- - - - diff --git a/classstencil_1_1GenericID.html b/classstencil_1_1GenericID.html deleted file mode 100644 index 4db5308..0000000 --- a/classstencil_1_1GenericID.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - -StencilStream: stencil::GenericID< T > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Public Member Functions | -Public Attributes | -List of all members
-
stencil::GenericID< T > Class Template Reference
-
-
- -

A generic, two-dimensional index. - More...

- -

#include <GenericID.hpp>

- - - - - - - - - - - - - - - - - -

-Public Member Functions

 GenericID ()
 Create a new index with undefined contents.
 
 GenericID (T column, T row)
 Create a new index with the given column and row indices.
 
 GenericID (sycl::id< 2 > sycl_id)
 Convert the SYCL ID.
 
 GenericID (sycl::range< 2 > sycl_range)
 Convert the SYCl range.
 
bool operator== (GenericID const &other) const
 Test if the other generic ID has equivalent coordinates to this ID.
 
- - - - - - - -

-Public Attributes

c
 The column index.
 
r
 The row index.
 
-

Detailed Description

-
template<typename T>
-class stencil::GenericID< T >

A generic, two-dimensional index.

-
Template Parameters
- - -
Theindex type. It can be anything as long as it can be constructed from a dimension of sycl::id and tested for equality.
-
-
-

Constructor & Destructor Documentation

- -

◆ GenericID() [1/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
stencil::GenericID< T >::GenericID ()
-
-inline
-
- -

Create a new index with undefined contents.

- -
-
- -

◆ GenericID() [2/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
stencil::GenericID< T >::GenericID (column,
row 
)
-
-inline
-
- -

Create a new index with the given column and row indices.

- -
-
- -

◆ GenericID() [3/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
stencil::GenericID< T >::GenericID (sycl::id< 2 > sycl_id)
-
-inline
-
- -

Convert the SYCL ID.

- -
-
- -

◆ GenericID() [4/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
stencil::GenericID< T >::GenericID (sycl::range< 2 > sycl_range)
-
-inline
-
- -

Convert the SYCl range.

- -
-
-

Member Function Documentation

- -

◆ operator==()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
bool stencil::GenericID< T >::operator== (GenericID< T > const & other) const
-
-inline
-
- -

Test if the other generic ID has equivalent coordinates to this ID.

- -
-
-

Member Data Documentation

- -

◆ c

- -
-
-
-template<typename T >
- - - - -
T stencil::GenericID< T >::c
-
- -

The column index.

- -
-
- -

◆ r

- -
-
-
-template<typename T >
- - - - -
T stencil::GenericID< T >::r
-
- -

The row index.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1Stencil-members.html b/classstencil_1_1Stencil-members.html deleted file mode 100644 index 90b0b6f..0000000 --- a/classstencil_1_1Stencil-members.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::Stencil< Cell, stencil_radius, TimeDependentValue > Member List
-
-
- -

This is the complete list of members for stencil::Stencil< Cell, stencil_radius, TimeDependentValue >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - -
bits_stencilstencil::Stencil< Cell, stencil_radius, TimeDependentValue >static
diameterstencil::Stencil< Cell, stencil_radius, TimeDependentValue >static
grid_rangestencil::Stencil< Cell, stencil_radius, TimeDependentValue >
idstencil::Stencil< Cell, stencil_radius, TimeDependentValue >
index_stencil_t typedefstencil::Stencil< Cell, stencil_radius, TimeDependentValue >
iterationstencil::Stencil< Cell, stencil_radius, TimeDependentValue >
operator[](ID id) conststencil::Stencil< Cell, stencil_radius, TimeDependentValue >inline
operator[](ID id)stencil::Stencil< Cell, stencil_radius, TimeDependentValue >inline
operator[](StencilID id) conststencil::Stencil< Cell, stencil_radius, TimeDependentValue >inline
operator[](StencilID id)stencil::Stencil< Cell, stencil_radius, TimeDependentValue >inline
operator[](UID id) conststencil::Stencil< Cell, stencil_radius, TimeDependentValue >inline
operator[](UID id)stencil::Stencil< Cell, stencil_radius, TimeDependentValue >inline
operator[](StencilUID id) conststencil::Stencil< Cell, stencil_radius, TimeDependentValue >inline
operator[](StencilUID id)stencil::Stencil< Cell, stencil_radius, TimeDependentValue >inline
Stencil(ID id, UID grid_range, uindex_t iteration, uindex_t subiteration, TimeDependentValue tdv)stencil::Stencil< Cell, stencil_radius, TimeDependentValue >inline
Stencil(ID id, UID grid_range, uindex_t iteration, uindex_t subiteration, TimeDependentValue tdv, Cell raw[diameter][diameter])stencil::Stencil< Cell, stencil_radius, TimeDependentValue >inline
StencilID typedefstencil::Stencil< Cell, stencil_radius, TimeDependentValue >
StencilUID typedefstencil::Stencil< Cell, stencil_radius, TimeDependentValue >
subiterationstencil::Stencil< Cell, stencil_radius, TimeDependentValue >
time_dependent_valuestencil::Stencil< Cell, stencil_radius, TimeDependentValue >
uindex_stencil_t typedefstencil::Stencil< Cell, stencil_radius, TimeDependentValue >
- - - - diff --git a/classstencil_1_1Stencil.html b/classstencil_1_1Stencil.html deleted file mode 100644 index 000e642..0000000 --- a/classstencil_1_1Stencil.html +++ /dev/null @@ -1,810 +0,0 @@ - - - - - - - -StencilStream: stencil::Stencil< Cell, stencil_radius, TimeDependentValue > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Public Types | -Public Member Functions | -Public Attributes | -Static Public Attributes | -List of all members
-
stencil::Stencil< Cell, stencil_radius, TimeDependentValue > Class Template Reference
-
-
- -

The stencil buffer. - More...

- -

#include <Stencil.hpp>

-
-Collaboration diagram for stencil::Stencil< Cell, stencil_radius, TimeDependentValue >:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - -

-Public Types

using index_stencil_t = ac_int< bits_stencil, true >
 A signed index type for column and row indices in this stencil.
 
using uindex_stencil_t = ac_int< bits_stencil, false >
 An unsigned index type for column and row indices in this stencil.
 
using StencilID = GenericID< index_stencil_t >
 A signed, two-dimensional index to address cells in this stencil.
 
using StencilUID = GenericID< uindex_stencil_t >
 An unsigned, two-dimensional index to address cells in this stencil.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Stencil (ID id, UID grid_range, uindex_t iteration, uindex_t subiteration, TimeDependentValue tdv)
 Create a new stencil with an uninitialized buffer.
 
 Stencil (ID id, UID grid_range, uindex_t iteration, uindex_t subiteration, TimeDependentValue tdv, Cell raw[diameter][diameter])
 Create a new stencil with the given contents.
 
Cell constoperator[] (ID id) const
 Access a cell in the stencil.
 
Cell & operator[] (ID id)
 Access a cell in the stencil.
 
Cell constoperator[] (StencilID id) const
 Access a cell in the stencil.
 
Cell & operator[] (StencilID id)
 Access a cell in the stencil.
 
Cell constoperator[] (UID id) const
 Access a cell in the stencil.
 
Cell & operator[] (UID id)
 Access a cell in the stencil.
 
Cell constoperator[] (StencilUID id) const
 Access a cell in the stencil.
 
Cell & operator[] (StencilUID id)
 Access a cell in the stencil.
 
- - - - - - - - - - - - - - - - -

-Public Attributes

const ID id
 The position of the central cell in the global grid.
 
const uindex_t iteration
 The present iteration index of the cells in the stencil.
 
const uindex_t subiteration
 The present sub-iteration index of the cells in the stencil.
 
const UID grid_range
 The range of the underlying grid.
 
const TimeDependentValue time_dependent_value
 The time-dependent value for this iteration.
 
- - - - - - - -

-Static Public Attributes

static constexpr uindex_t diameter = 2 * stencil_radius + 1
 The diameter (aka width and height) of the stencil buffer.
 
static constexpr unsigned long bits_stencil = std::bit_width(diameter)
 The number of bits necessary to express column and row indices in the stencil.
 
-

Detailed Description

-
template<typename Cell, uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
-requires std::semiregular<Cell> && (stencil_radius >= 1)
-class stencil::Stencil< Cell, stencil_radius, TimeDependentValue >

The stencil buffer.

-

The stencil buffer contains the extended Moore neighborhood of a central cell and is used by a transition function to calculate the next iteration of the central cell.

-

This implementation provides two ways to index the stencil: With an ID and a UID. Since ID is signed, the column and row axes are within the range of [-radius : radius]. Therefore, (0,0) points to the central cell. UID is unsigned and the column and row axes are within the range of [0 : 2*radius + 1). Therefore, (0,0) points to the north-western corner of the stencil.

-
Template Parameters
- - - - -
CellThe type of cells in the stencil
stencil_radiusThe radius of the stencil, i.e. the extent of the stencil in each direction from the central cell.
TimeDependentValueThe type of values provided by the TDV system.
-
-
-

Member Typedef Documentation

- -

◆ index_stencil_t

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - -
using stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::index_stencil_t = ac_int<bits_stencil, true>
-
- -

A signed index type for column and row indices in this stencil.

- -
-
- -

◆ StencilID

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - -
using stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::StencilID = GenericID<index_stencil_t>
-
- -

A signed, two-dimensional index to address cells in this stencil.

- -
-
- -

◆ StencilUID

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - -
using stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::StencilUID = GenericID<uindex_stencil_t>
-
- -

An unsigned, two-dimensional index to address cells in this stencil.

- -
-
- -

◆ uindex_stencil_t

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - -
using stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::uindex_stencil_t = ac_int<bits_stencil, false>
-
- -

An unsigned index type for column and row indices in this stencil.

- -
-
-

Constructor & Destructor Documentation

- -

◆ Stencil() [1/2]

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::Stencil (ID id,
UID grid_range,
uindex_t iteration,
uindex_t subiteration,
TimeDependentValue tdv 
)
-
-inline
-
- -

Create a new stencil with an uninitialized buffer.

-
Parameters
- - - - - - -
idThe position of the central cell in the global grid.
grid_rangeThe range of the underlying grid.
iterationThe present iteration index of the cells in the stencil.
subiterationThe present sub-iteration index of the cells in the stencil.
tdvThe time-dependent value for this iteration.
-
-
- -
-
- -

◆ Stencil() [2/2]

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::Stencil (ID id,
UID grid_range,
uindex_t iteration,
uindex_t subiteration,
TimeDependentValue tdv,
Cell raw[diameter][diameter] 
)
-
-inline
-
- -

Create a new stencil with the given contents.

-
Parameters
- - - - - - - -
idThe position of the central cell in the global grid.
grid_rangeThe range of the underlying grid.
iterationThe present iteration index of the cells in the stencil.
subiterationThe present sub-iteration index of the cells in the stencil.
tdvThe time-dependent value for this iteration.
rawAn array of cells, which is copied into the stencil object.
-
-
- -
-
-

Member Function Documentation

- -

◆ operator[]() [1/8]

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - - -
- - - - - - - - -
Cell & stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::operator[] (ID id)
-
-inline
-
- -

Access a cell in the stencil.

-

Since the indices in id are signed, the origin of this index operator is the central cell.

- -
-
- -

◆ operator[]() [2/8]

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - - -
- - - - - - - - -
Cell const & stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::operator[] (ID id) const
-
-inline
-
- -

Access a cell in the stencil.

-

Since the indices in id are signed, the origin of this index operator is the central cell.

- -
-
- -

◆ operator[]() [3/8]

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - - -
- - - - - - - - -
Cell & stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::operator[] (StencilID id)
-
-inline
-
- -

Access a cell in the stencil.

-

Since the indices in id are signed, the origin of this index operator is the central cell.

- -
-
- -

◆ operator[]() [4/8]

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - - -
- - - - - - - - -
Cell const & stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::operator[] (StencilID id) const
-
-inline
-
- -

Access a cell in the stencil.

-

Since the indices in id are signed, the origin of this index operator is the central cell.

- -
-
- -

◆ operator[]() [5/8]

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - - -
- - - - - - - - -
Cell & stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::operator[] (StencilUID id)
-
-inline
-
- -

Access a cell in the stencil.

-

Since the indices in id are unsigned, the origin of this index operator is the north-western corner.

- -
-
- -

◆ operator[]() [6/8]

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - - -
- - - - - - - - -
Cell const & stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::operator[] (StencilUID id) const
-
-inline
-
- -

Access a cell in the stencil.

-

Since the indices in id are unsigned, the origin of this index operator is the north-western corner.

- -
-
- -

◆ operator[]() [7/8]

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - - -
- - - - - - - - -
Cell & stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::operator[] (UID id)
-
-inline
-
- -

Access a cell in the stencil.

-

Since the indices in id are unsigned, the origin of this index operator is the north-western corner.

- -
-
- -

◆ operator[]() [8/8]

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - - -
- - - - - - - - -
Cell const & stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::operator[] (UID id) const
-
-inline
-
- -

Access a cell in the stencil.

-

Since the indices in id are unsigned, the origin of this index operator is the north-western corner.

- -
-
-

Member Data Documentation

- -

◆ bits_stencil

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - - -
- - - - -
constexpr unsigned long stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::bits_stencil = std::bit_width(diameter)
-
-staticconstexpr
-
- -

The number of bits necessary to express column and row indices in the stencil.

- -
-
- -

◆ diameter

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - - -
- - - - -
constexpr uindex_t stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::diameter = 2 * stencil_radius + 1
-
-staticconstexpr
-
- -

The diameter (aka width and height) of the stencil buffer.

- -
-
- -

◆ grid_range

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - -
const UID stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::grid_range
-
- -

The range of the underlying grid.

- -
-
- -

◆ id

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - -
const ID stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::id
-
- -

The position of the central cell in the global grid.

- -
-
- -

◆ iteration

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - -
const uindex_t stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::iteration
-
- -

The present iteration index of the cells in the stencil.

- -
-
- -

◆ subiteration

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - -
const uindex_t stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::subiteration
-
- -

The present sub-iteration index of the cells in the stencil.

- -
-
- -

◆ time_dependent_value

- -
-
-
-template<typename Cell , uindex_t stencil_radius, typename TimeDependentValue = std::monostate>
- - - - -
const TimeDependentValue stencil::Stencil< Cell, stencil_radius, TimeDependentValue >::time_dependent_value
-
- -

The time-dependent value for this iteration.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1Stencil__coll__graph.map b/classstencil_1_1Stencil__coll__graph.map deleted file mode 100644 index 1a249da..0000000 --- a/classstencil_1_1Stencil__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/classstencil_1_1Stencil__coll__graph.md5 b/classstencil_1_1Stencil__coll__graph.md5 deleted file mode 100644 index f72d84e..0000000 --- a/classstencil_1_1Stencil__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b9d558f6cfa25cfb5a65f3fb66a3c8f2 \ No newline at end of file diff --git a/classstencil_1_1Stencil__coll__graph.png b/classstencil_1_1Stencil__coll__graph.png deleted file mode 100644 index 6b21677..0000000 Binary files a/classstencil_1_1Stencil__coll__graph.png and /dev/null differ diff --git a/classstencil_1_1cpu_1_1Grid-members.html b/classstencil_1_1cpu_1_1Grid-members.html deleted file mode 100644 index 011dfbd..0000000 --- a/classstencil_1_1cpu_1_1Grid-members.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::cpu::Grid< Cell > Member List
-
-
- -

This is the complete list of members for stencil::cpu::Grid< Cell >, including all inherited members.

- - - - - - - - - - - - -
copy_from_buffer(sycl::buffer< Cell, 2 > other_buffer)stencil::cpu::Grid< Cell >inline
copy_to_buffer(sycl::buffer< Cell, 2 > other_buffer)stencil::cpu::Grid< Cell >inline
dimensionsstencil::cpu::Grid< Cell >static
get_buffer()stencil::cpu::Grid< Cell >inline
get_grid_height() conststencil::cpu::Grid< Cell >inline
get_grid_width() conststencil::cpu::Grid< Cell >inline
Grid(uindex_t c, uindex_t r)stencil::cpu::Grid< Cell >inline
Grid(sycl::range< 2 > range)stencil::cpu::Grid< Cell >inline
Grid(sycl::buffer< Cell, 2 > other_buffer)stencil::cpu::Grid< Cell >inline
Grid(Grid const &other_grid)stencil::cpu::Grid< Cell >inline
make_similar() conststencil::cpu::Grid< Cell >inline
- - - - diff --git a/classstencil_1_1cpu_1_1Grid.html b/classstencil_1_1cpu_1_1Grid.html deleted file mode 100644 index c8b380c..0000000 --- a/classstencil_1_1cpu_1_1Grid.html +++ /dev/null @@ -1,552 +0,0 @@ - - - - - - - -StencilStream: stencil::cpu::Grid< Cell > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Public Member Functions | -Static Public Attributes | -List of all members
-
stencil::cpu::Grid< Cell > Class Template Reference
-
-
- -

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.
 
-

Detailed Description

-
template<typename Cell>
-class stencil::cpu::Grid< Cell >

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:

-
-
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 grid.
Definition Grid.hpp:147
-
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.

-
Template Parameters
- - -
CellThe cell type to store.
-
-
-

Constructor & Destructor Documentation

- -

◆ Grid() [1/4]

- -
-
-
-template<typename Cell >
- - - - - -
- - - - - - - - - - - - - - - - - - -
stencil::cpu::Grid< Cell >::Grid (uindex_t c,
uindex_t r 
)
-
-inline
-
- -

Create a new, uninitialized grid with the given dimensions.

-
Parameters
- - - -
cThe width, or number of columns, of the new grid.
rThe height, or number of rows, of the new grid.
-
-
- -
-
- -

◆ Grid() [2/4]

- -
-
-
-template<typename Cell >
- - - - - -
- - - - - - - - -
stencil::cpu::Grid< Cell >::Grid (sycl::range< 2 > range)
-
-inline
-
- -

Create a new, uninitialized grid with the given dimensions.

-
Parameters
- - -
rangeThe range of the new grid. The first index will be the width and the second index will be the height of the grid.
-
-
- -
-
- -

◆ Grid() [3/4]

- -
-
-
-template<typename Cell >
- - - - - -
- - - - - - - - -
stencil::cpu::Grid< Cell >::Grid (sycl::buffer< Cell, 2 > other_buffer)
-
-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.

-
Parameters
- - -
other_bufferThe buffer with the contents of the new grid.
-
-
- -
-
- -

◆ Grid() [4/4]

- -
-
-
-template<typename Cell >
- - - - - -
- - - - - - - - -
stencil::cpu::Grid< Cell >::Grid (Grid< Cell > const & other_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.

-
Parameters
- - -
other_gridThe other grid the new grid should reference.
-
-
- -
-
-

Member Function Documentation

- -

◆ copy_from_buffer()

- -
-
-
-template<typename Cell >
- - - - - -
- - - - - - - - -
void stencil::cpu::Grid< Cell >::copy_from_buffer (sycl::buffer< Cell, 2 > other_buffer)
-
-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.

-
Parameters
- - -
other_bufferThe buffer to copy the data from.
-
-
-
Exceptions
- - -
std::range_errorThe size of the buffer does not match the grid.
-
-
- -
-
- -

◆ copy_to_buffer()

- -
-
-
-template<typename Cell >
- - - - - -
- - - - - - - - -
void stencil::cpu::Grid< Cell >::copy_to_buffer (sycl::buffer< Cell, 2 > other_buffer)
-
-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.

-
Parameters
- - -
other_bufferThe buffer to copy the data to.
-
-
-
Exceptions
- - -
std::range_errorThe size of the buffer does not match the grid.
-
-
- -
-
- -

◆ get_buffer()

- -
-
-
-template<typename Cell >
- - - - - -
- - - - - - - -
sycl::buffer< Cell, 2 > & stencil::cpu::Grid< Cell >::get_buffer ()
-
-inline
-
- -
-
- -

◆ get_grid_height()

- -
-
-
-template<typename Cell >
- - - - - -
- - - - - - - -
uindex_t stencil::cpu::Grid< Cell >::get_grid_height () const
-
-inline
-
- -

Return the height, or number of rows, of the grid.

- -
-
- -

◆ get_grid_width()

- -
-
-
-template<typename Cell >
- - - - - -
- - - - - - - -
uindex_t stencil::cpu::Grid< Cell >::get_grid_width () const
-
-inline
-
- -

Return the width, or number of columns, of the grid.

- -
-
- -

◆ make_similar()

- -
-
-
-template<typename Cell >
- - - - - -
- - - - - - - -
Grid stencil::cpu::Grid< Cell >::make_similar () const
-
-inline
-
- -

Create an new, uninitialized grid with the same size as the current one.

- -
-
-

Member Data Documentation

- -

◆ dimensions

- -
-
-
-template<typename Cell >
- - - - - -
- - - - -
constexpr uindex_t stencil::cpu::Grid< Cell >::dimensions = 2
-
-staticconstexpr
-
- -

The number of dimensions of the grid.

-

May be changed in the future when other dimensions are supported.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor-members.html b/classstencil_1_1cpu_1_1Grid_1_1GridAccessor-members.html deleted file mode 100644 index 91cb290..0000000 --- a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::cpu::Grid< Cell >::GridAccessor< access_mode > Member List
-
-
- -

This is the complete list of members for stencil::cpu::Grid< Cell >::GridAccessor< access_mode >, including all inherited members.

- - -
GridAccessor(Grid &grid)stencil::cpu::Grid< Cell >::GridAccessor< access_mode >inline
- - - - diff --git a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor.html b/classstencil_1_1cpu_1_1Grid_1_1GridAccessor.html deleted file mode 100644 index c904e3a..0000000 --- a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - -StencilStream: stencil::cpu::Grid< Cell >::GridAccessor< access_mode > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Public Member Functions | -List of all members
-
stencil::cpu::Grid< Cell >::GridAccessor< access_mode > Class Template Reference
-
-
- -

An accessor for the grid. - More...

- -

#include <Grid.hpp>

-
-Inheritance diagram for stencil::cpu::Grid< Cell >::GridAccessor< access_mode >:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for stencil::cpu::Grid< Cell >::GridAccessor< access_mode >:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - -

-Public Member Functions

 GridAccessor (Grid &grid)
 Create a new accessor to the given grid.
 
-

Detailed Description

-
template<typename Cell>
-template<sycl::access::mode access_mode = sycl::access::mode::read_write>
-class stencil::cpu::Grid< Cell >::GridAccessor< access_mode >

An accessor for the grid.

-

Instances of this class provide access to a grid, so that host code can read and write the contents of a grid. As such, it fullfils the GridAccessor concept.

-
Template Parameters
- - -
access_modeThe access mode for the accessor.
-
-
-

Constructor & Destructor Documentation

- -

◆ GridAccessor()

- -
-
-
-template<typename Cell >
-
-template<sycl::access::mode access_mode = sycl::access::mode::read_write>
- - - - - -
- - - - - - - - -
stencil::cpu::Grid< Cell >::GridAccessor< access_mode >::GridAccessor (Gridgrid)
-
-inline
-
- -

Create a new accessor to the given grid.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__coll__graph.map b/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__coll__graph.map deleted file mode 100644 index 4d10650..0000000 --- a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__coll__graph.md5 b/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__coll__graph.md5 deleted file mode 100644 index df74d66..0000000 --- a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -fced7a9678c4d21ff13711253ea33665 \ No newline at end of file diff --git a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__coll__graph.png b/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__coll__graph.png deleted file mode 100644 index d22ffec..0000000 Binary files a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__coll__graph.png and /dev/null differ diff --git a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__inherit__graph.map b/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__inherit__graph.map deleted file mode 100644 index 4d10650..0000000 --- a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__inherit__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__inherit__graph.md5 b/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__inherit__graph.md5 deleted file mode 100644 index df74d66..0000000 --- a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -fced7a9678c4d21ff13711253ea33665 \ No newline at end of file diff --git a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__inherit__graph.png b/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__inherit__graph.png deleted file mode 100644 index d22ffec..0000000 Binary files a/classstencil_1_1cpu_1_1Grid_1_1GridAccessor__inherit__graph.png and /dev/null differ diff --git a/classstencil_1_1cpu_1_1StencilUpdate-members.html b/classstencil_1_1cpu_1_1StencilUpdate-members.html deleted file mode 100644 index 852a0b9..0000000 --- a/classstencil_1_1cpu_1_1StencilUpdate-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::cpu::StencilUpdate< F > Member List
-
-
- -

This is the complete list of members for stencil::cpu::StencilUpdate< F >, including all inherited members.

- - - - - - - -
get_n_processed_cells() conststencil::cpu::StencilUpdate< F >inline
get_params()stencil::cpu::StencilUpdate< F >inline
get_walltime() conststencil::cpu::StencilUpdate< F >inline
GridImpl typedefstencil::cpu::StencilUpdate< F >
operator()(GridImpl &source_grid)stencil::cpu::StencilUpdate< F >inline
StencilUpdate(Params params)stencil::cpu::StencilUpdate< F >inline
- - - - diff --git a/classstencil_1_1cpu_1_1StencilUpdate.html b/classstencil_1_1cpu_1_1StencilUpdate.html deleted file mode 100644 index ac5a30c..0000000 --- a/classstencil_1_1cpu_1_1StencilUpdate.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - -StencilStream: stencil::cpu::StencilUpdate< F > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Public Types | -Public Member Functions | -List of all members
-
stencil::cpu::StencilUpdate< F > Class Template Reference
-
-
- -

A grid updater that applies an iterative stencil code to a grid. - More...

- -

#include <StencilUpdate.hpp>

- - - - - -

-Classes

struct  Params
 Parameters for the stencil updater. More...
 
- - - - -

-Public Types

using GridImpl = Grid< Cell >
 Shorthand for the used and supported grid type.
 
- - - - - - - - - - - - - - - - -

-Public Member Functions

 StencilUpdate (Params params)
 Create a new stencil updater object.
 
GridImpl operator() (GridImpl &source_grid)
 Compute a new grid based on the source grid, using the configured transition function.
 
Paramsget_params ()
 Return a reference to the parameters.
 
uindex_t get_n_processed_cells () const
 Return the accumulated total number of cells processed by this updater.
 
double get_walltime () const
 Return the accumulated runtime of the updater, measured from the host side.
 
-

Detailed Description

-
template<concepts::TransitionFunction F>
-class stencil::cpu::StencilUpdate< F >

A grid updater that applies an iterative stencil code to a grid.

-

This updater applies an iterative stencil code, defined by the template parameter F, to the grid; As often as requested.

-
Template Parameters
- - -
FThe transition function to apply to input grids.
-
-
-

Member Typedef Documentation

- -

◆ GridImpl

- -
-
-
-template<concepts::TransitionFunction F>
- - - - -
using stencil::cpu::StencilUpdate< F >::GridImpl = Grid<Cell>
-
- -

Shorthand for the used and supported grid type.

- -
-
-

Constructor & Destructor Documentation

- -

◆ StencilUpdate()

- -
-
-
-template<concepts::TransitionFunction F>
- - - - - -
- - - - - - - - -
stencil::cpu::StencilUpdate< F >::StencilUpdate (Params params)
-
-inline
-
- -

Create a new stencil updater object.

- -
-
-

Member Function Documentation

- -

◆ get_n_processed_cells()

- -
-
-
-template<concepts::TransitionFunction F>
- - - - - -
- - - - - - - -
uindex_t stencil::cpu::StencilUpdate< F >::get_n_processed_cells () const
-
-inline
-
- -

Return the accumulated total number of cells processed by this updater.

-

For each call of to operator()(), this is the width times the height of the grid, times the number of computed iterations. This will also be accumulated across multiple calls to operator()().

- -
-
- -

◆ get_params()

- -
-
-
-template<concepts::TransitionFunction F>
- - - - - -
- - - - - - - -
Params & stencil::cpu::StencilUpdate< F >::get_params ()
-
-inline
-
- -

Return a reference to the parameters.

-

Modifications to the parameters struct will be used in the next call to operator()().

- -
-
- -

◆ get_walltime()

- -
-
-
-template<concepts::TransitionFunction F>
- - - - - -
- - - - - - - -
double stencil::cpu::StencilUpdate< F >::get_walltime () const
-
-inline
-
- -

Return the accumulated runtime of the updater, measured from the host side.

-

For each call to operator()(), the time it took to submit all kernels and, if Params::blocking is true, to finish the computation is recorded and accumulated.

- -
-
- -

◆ operator()()

- -
-
-
-template<concepts::TransitionFunction F>
- - - - - -
- - - - - - - - -
GridImpl stencil::cpu::StencilUpdate< F >::operator() (GridImplsource_grid)
-
-inline
-
- -

Compute a new grid based on the source grid, using the configured transition function.

-

The computation does not work in-place. Instead, it will allocate two additional grids with the same size as the source grid and use them for a double buffering scheme. Therefore, you are free to reuse the source grid as it will not be altered.

-

If Params::blocking is set to true, this method will block until the computation is complete. Otherwise, it will return as soon as all kernels are submitted.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1monotile_1_1Grid-members.html b/classstencil_1_1monotile_1_1Grid-members.html deleted file mode 100644 index 32811eb..0000000 --- a/classstencil_1_1monotile_1_1Grid-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::monotile::Grid< Cell, word_size > Member List
-
-
- -

This is the complete list of members for stencil::monotile::Grid< Cell, word_size >, including all inherited members.

- - - - - - - - - - - - - -
copy_from_buffer(sycl::buffer< Cell, 2 > input_buffer)stencil::monotile::Grid< Cell, word_size >inline
copy_to_buffer(sycl::buffer< Cell, 2 > output_buffer)stencil::monotile::Grid< Cell, word_size >inline
dimensionsstencil::monotile::Grid< Cell, word_size >static
get_grid_height() conststencil::monotile::Grid< Cell, word_size >inline
get_grid_width() conststencil::monotile::Grid< Cell, word_size >inline
Grid(uindex_t grid_width, uindex_t grid_height)stencil::monotile::Grid< Cell, word_size >inline
Grid(sycl::range< 2 > range)stencil::monotile::Grid< Cell, word_size >inline
Grid(sycl::buffer< Cell, 2 > buffer)stencil::monotile::Grid< Cell, word_size >inline
Grid(Grid const &other_grid)stencil::monotile::Grid< Cell, word_size >inline
make_similar() conststencil::monotile::Grid< Cell, word_size >inline
submit_read(sycl::queue queue)stencil::monotile::Grid< Cell, word_size >inline
submit_write(sycl::queue queue)stencil::monotile::Grid< Cell, word_size >inline
- - - - diff --git a/classstencil_1_1monotile_1_1Grid.html b/classstencil_1_1monotile_1_1Grid.html deleted file mode 100644 index e3b2b69..0000000 --- a/classstencil_1_1monotile_1_1Grid.html +++ /dev/null @@ -1,627 +0,0 @@ - - - - - - - -StencilStream: stencil::monotile::Grid< Cell, word_size > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Public Member Functions | -Static Public Attributes | -List of all members
-
stencil::monotile::Grid< Cell, word_size > Class Template Reference
-
-
- -

A grid class for the monotile architecture. - More...

- -

#include <Grid.hpp>

- - - - - -

-Classes

class  GridAccessor
 An accessor for the monotile grid. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 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.
 
- - - - -

-Static Public Attributes

static constexpr uindex_t dimensions = 2
 The number of dimensions of the grid.
 
-

Detailed Description

-
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
- - - -
CellThe cell type to store.
word_sizeThe word size of the memory system, in bytes. This is used to optimize the kernels submitted by submit_read and submit_write.
-
-
-

Constructor & Destructor Documentation

- -

◆ Grid() [1/4]

- -
-
-
-template<class Cell , uindex_t word_size = 64>
- - - - - -
- - - - - - - - - - - - - - - - - - -
stencil::monotile::Grid< Cell, word_size >::Grid (uindex_t grid_width,
uindex_t grid_height 
)
-
-inline
-
- -

Create a new, uninitialized grid with the given dimensions.

-
Parameters
- - - -
grid_widthThe width, or number of columns, of the new grid.
grid_heightThe height, or number of rows, of the new grid.
-
-
- -
-
- -

◆ Grid() [2/4]

- -
-
-
-template<class Cell , uindex_t word_size = 64>
- - - - - -
- - - - - - - - -
stencil::monotile::Grid< Cell, word_size >::Grid (sycl::range< 2 > range)
-
-inline
-
- -

Create a new, uninitialized grid with the given dimensions.

-
Parameters
- - -
rangeThe range of the new grid. The first index will be the width and the second index will be the height of the grid.
-
-
- -
-
- -

◆ Grid() [3/4]

- -
-
-
-template<class Cell , uindex_t word_size = 64>
- - - - - -
- - - - - - - - -
stencil::monotile::Grid< Cell, word_size >::Grid (sycl::buffer< Cell, 2 > buffer)
-
-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.

-
Parameters
- - -
bufferThe buffer with the contents of the new grid.
-
-
- -
-
- -

◆ Grid() [4/4]

- -
-
-
-template<class Cell , uindex_t word_size = 64>
- - - - - -
- - - - - - - - -
stencil::monotile::Grid< Cell, word_size >::Grid (Grid< Cell, word_size > const & other_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.

-
Parameters
- - -
other_gridThe other grid the new grid should reference.
-
-
- -
-
-

Member Function Documentation

- -

◆ copy_from_buffer()

- -
-
-
-template<class Cell , uindex_t word_size = 64>
- - - - - -
- - - - - - - - -
void stencil::monotile::Grid< Cell, word_size >::copy_from_buffer (sycl::buffer< Cell, 2 > input_buffer)
-
-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.

-
Parameters
- - -
input_bufferThe buffer to copy the data from.
-
-
-
Exceptions
- - -
std::range_errorThe size of the buffer does not match the grid.
-
-
- -
-
- -

◆ copy_to_buffer()

- -
-
-
-template<class Cell , uindex_t word_size = 64>
- - - - - -
- - - - - - - - -
void stencil::monotile::Grid< Cell, word_size >::copy_to_buffer (sycl::buffer< Cell, 2 > output_buffer)
-
-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.

-
Parameters
- - -
output_bufferThe buffer to copy the data to.
-
-
-
Exceptions
- - -
std::range_errorThe size of the buffer does not match the grid.
-
-
- -
-
- -

◆ get_grid_height()

- -
-
-
-template<class Cell , uindex_t word_size = 64>
- - - - - -
- - - - - - - -
uindex_t stencil::monotile::Grid< Cell, word_size >::get_grid_height () const
-
-inline
-
- -

Return the height, or number of rows, of the grid.

- -
-
- -

◆ get_grid_width()

- -
-
-
-template<class Cell , uindex_t word_size = 64>
- - - - - -
- - - - - - - -
uindex_t stencil::monotile::Grid< Cell, word_size >::get_grid_width () const
-
-inline
-
- -

Return the width, or number of columns, of the grid.

- -
-
- -

◆ make_similar()

- -
-
-
-template<class Cell , uindex_t word_size = 64>
- - - - - -
- - - - - - - -
Grid stencil::monotile::Grid< Cell, word_size >::make_similar () const
-
-inline
-
- -

Create an new, uninitialized grid with the same size as the current one.

- -
-
- -

◆ submit_read()

- -
-
-
-template<class Cell , uindex_t word_size = 64>
-
-template<typename in_pipe >
- - - - - -
- - - - - - - - -
sycl::event stencil::monotile::Grid< Cell, word_size >::submit_read (sycl::queue queue)
-
-inline
-
- -

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_pipeThe pipe the data is sent into.
-
-
-
Parameters
- - -
queueThe queue to submit the kernel to.
-
-
-
Returns
The event object of the submitted kernel.
- -
-
- -

◆ submit_write()

- -
-
-
-template<class Cell , uindex_t word_size = 64>
-
-template<typename out_pipe >
- - - - - -
- - - - - - - - -
sycl::event stencil::monotile::Grid< Cell, word_size >::submit_write (sycl::queue queue)
-
-inline
-
- -

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_pipeThe pipe the data is received from.
-
-
-
Parameters
- - -
queueThe queue to submit the kernel to.
-
-
-
Returns
The event object of the submitted kernel.
- -
-
-

Member Data Documentation

- -

◆ dimensions

- -
-
-
-template<class Cell , uindex_t word_size = 64>
- - - - - -
- - - - -
constexpr uindex_t stencil::monotile::Grid< Cell, word_size >::dimensions = 2
-
-staticconstexpr
-
- -

The number of dimensions of the grid.

-

May be changed in the future when other dimensions are supported.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1monotile_1_1Grid_1_1GridAccessor-members.html b/classstencil_1_1monotile_1_1Grid_1_1GridAccessor-members.html deleted file mode 100644 index 156f653..0000000 --- a/classstencil_1_1monotile_1_1Grid_1_1GridAccessor-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode > Member List
-
-
- -

This is the complete list of members for stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >, including all inherited members.

- - - - - - - -
BaseSubscript typedefstencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >
dimensionsstencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >static
GridAccessor(Grid &grid)stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >inline
operator[](uindex_t i)stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >inline
operator[](sycl::id< 2 > id)stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >inline
operator[](sycl::id< 2 > id)stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >inline
- - - - diff --git a/classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html b/classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html deleted file mode 100644 index 1428e56..0000000 --- a/classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - -StencilStream: stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Public Types | -Public Member Functions | -Static Public Attributes | -List of all members
-
stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode > Class Template Reference
-
-
- -

An accessor for the monotile grid. - More...

- -

#include <Grid.hpp>

- - - - - -

-Public Types

using BaseSubscript = AccessorSubscript< Cell, GridAccessor, access_mode >
 Shorthand for the used subscript type.
 
- - - - - - - - - - - - - -

-Public Member Functions

 GridAccessor (Grid &grid)
 Create a new accessor to the given grid.
 
BaseSubscript operator[] (uindex_t i)
 Access/Dereference the first dimension.
 
Cell const & operator[] (sycl::id< 2 > id)
 Access a cell of the grid.
 
Cell & operator[] (sycl::id< 2 > id)
 Access a cell of the grid.
 
- - - - -

-Static Public Attributes

static constexpr uindex_t dimensions = Grid::dimensions
 The number of dimensions of the underlying grid.
 
-

Detailed Description

-
template<class Cell, uindex_t word_size = 64>
-template<sycl::access::mode access_mode = sycl::access::mode::read_write>
-class stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >

An accessor for the monotile grid.

-

Instances of this class provide access to a grid, so that host code can read and write the contents of a grid. As such, it fullfils the GridAccessor concept.

-
Template Parameters
- - -
access_modeThe access mode for the accessor.
-
-
-

Member Typedef Documentation

- -

◆ BaseSubscript

- -
-
-
-template<class Cell , uindex_t word_size = 64>
-
-template<sycl::access::mode access_mode = sycl::access::mode::read_write>
- - - - -
using stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >::BaseSubscript = AccessorSubscript<Cell, GridAccessor, access_mode>
-
- -

Shorthand for the used subscript type.

- -
-
-

Constructor & Destructor Documentation

- -

◆ GridAccessor()

- -
-
-
-template<class Cell , uindex_t word_size = 64>
-
-template<sycl::access::mode access_mode = sycl::access::mode::read_write>
- - - - - -
- - - - - - - - -
stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >::GridAccessor (Gridgrid)
-
-inline
-
- -

Create a new accessor to the given grid.

- -
-
-

Member Function Documentation

- -

◆ operator[]() [1/3]

- -
-
-
-template<class Cell , uindex_t word_size = 64>
-
-template<sycl::access::mode access_mode = sycl::access::mode::read_write>
- - - - - -
- - - - - - - - -
Cell const & stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >::operator[] (sycl::id< 2 > id)
-
-inline
-
- -

Access a cell of the grid.

-
Parameters
- - -
idThe index of the accessed cell. The first index is the column index, the second one is the row index.
-
-
-
Returns
A constant reference to the indexed cell.
- -
-
- -

◆ operator[]() [2/3]

- -
-
-
-template<class Cell , uindex_t word_size = 64>
-
-template<sycl::access::mode access_mode = sycl::access::mode::read_write>
- - - - - -
- - - - - - - - -
Cell & stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >::operator[] (sycl::id< 2 > id)
-
-inline
-
- -

Access a cell of the grid.

-
Parameters
- - -
idThe index of the accessed cell. The first index is the column index, the second one is the row index.
-
-
-
Returns
A reference to the indexed cell.
- -
-
- -

◆ operator[]() [3/3]

- -
-
-
-template<class Cell , uindex_t word_size = 64>
-
-template<sycl::access::mode access_mode = sycl::access::mode::read_write>
- - - - - -
- - - - - - - - -
BaseSubscript stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >::operator[] (uindex_t i)
-
-inline
-
- -

Access/Dereference the first dimension.

-

This subscript operator is the first subscript in an expression like accessor[i_column][i_row]. It will return a BaseSubscript object that handles subsequent dimensions.

- -
-
-

Member Data Documentation

- -

◆ dimensions

- -
-
-
-template<class Cell , uindex_t word_size = 64>
-
-template<sycl::access::mode access_mode = sycl::access::mode::read_write>
- - - - - -
- - - - -
constexpr uindex_t stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >::dimensions = Grid::dimensions
-
-staticconstexpr
-
- -

The number of dimensions of the underlying grid.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1monotile_1_1StencilUpdate-members.html b/classstencil_1_1monotile_1_1StencilUpdate-members.html deleted file mode 100644 index 351f707..0000000 --- a/classstencil_1_1monotile_1_1StencilUpdate-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size > Member List
-
-
- -

This is the complete list of members for stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >, including all inherited members.

- - - - - - - - -
get_kernel_runtime() conststencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >inline
get_n_processed_cells() conststencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >inline
get_params()stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >inline
get_walltime() conststencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >inline
GridImpl typedefstencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >
operator()(GridImpl &source_grid)stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >inline
StencilUpdate(Params params)stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >inline
- - - - diff --git a/classstencil_1_1monotile_1_1StencilUpdate.html b/classstencil_1_1monotile_1_1StencilUpdate.html deleted file mode 100644 index a549ac3..0000000 --- a/classstencil_1_1monotile_1_1StencilUpdate.html +++ /dev/null @@ -1,352 +0,0 @@ - - - - - - - -StencilStream: stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Public Types | -Public Member Functions | -List of all members
-
stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size > Class Template Reference
-
-
- -

A grid updater that applies an iterative stencil code to a grid. - More...

- -

#include <StencilUpdate.hpp>

- - - - - -

-Classes

struct  Params
 Parameters for the stencil updater. More...
 
- - - - -

-Public Types

using GridImpl = Grid< Cell, word_size >
 Shorthand for the used and supported grid type.
 
- - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 StencilUpdate (Params params)
 Create a new stencil updater object.
 
Paramsget_params ()
 Return a reference to the parameters.
 
GridImpl operator() (GridImpl &source_grid)
 Compute a new grid based on the source grid, using the configured transition function.
 
uindex_t get_n_processed_cells () const
 Return the accumulated total number of cells processed by this updater.
 
double get_kernel_runtime () const
 Return the accumulated total runtime of the execution kernel.
 
double get_walltime () const
 Return the accumulated runtime of the updater, measured from the host side.
 
-

Detailed Description

-
template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
-class stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >

A grid updater that applies an iterative stencil code to a grid.

-

This updater applies an iterative stencil code, defined by the template parameter F, to the grid; As often as requested. Since the underlying FPGA design follows the Monotile architecture (See monotile), an instance of this updater template can only process grids up to the defined max_grid_width and max_grid_height.

-
Template Parameters
- - - - - - - -
FThe transition function to apply to input grids.
n_processing_elements(Optimization parameter) The number of processing elements (PEs) to implement. Increasing the number of PEs leads to a higher performance since more iterations are computed in parallel. However, it will also increase the resource and space usage of the design. Too many PEs might also decrease the clock frequency.
max_grid_width(Optimization parameter) The maximally supported grid width. For best hardware utilization, this should be a power of two. Increase this parameter to the maximum your application is expected to handle. However, higher maximal grid width might lead to increased logic and space usage as well as decreased clock frequencies.
max_grid_height(Optimization parameter) The maximally supported grid height. Increase this parameter to the maximum your application is expected to handle. However, increasing the maximal grid height will increase the BRAM usage of each PE.
TDVStrategy(Optimization parameter) The precomputation strategy for the time-dependent value system.
word_size(Optimization parameter) The width of the global memory channel, in bytes. For DDR-based systems, this should be 512 bits, or 64 bytes.
-
-
-

Member Typedef Documentation

- -

◆ GridImpl

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
- - - - -
using stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::GridImpl = Grid<Cell, word_size>
-
- -

Shorthand for the used and supported grid type.

- -
-
-

Constructor & Destructor Documentation

- -

◆ StencilUpdate()

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
- - - - - -
- - - - - - - - -
stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::StencilUpdate (Params params)
-
-inline
-
- -

Create a new stencil updater object.

- -
-
-

Member Function Documentation

- -

◆ get_kernel_runtime()

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
- - - - - -
- - - - - - - -
double stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::get_kernel_runtime () const
-
-inline
-
- -

Return the accumulated total runtime of the execution kernel.

-

This runtime is accumulated across multiple calls to operator()(). However, this is only possible if Params::profiling is set to true.

- -
-
- -

◆ get_n_processed_cells()

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
- - - - - -
- - - - - - - -
uindex_t stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::get_n_processed_cells () const
-
-inline
-
- -

Return the accumulated total number of cells processed by this updater.

-

For each call of to operator()(), this is the width times the height of the grid, times the number of computed iterations. This will also be accumulated across multiple calls to operator()().

- -
-
- -

◆ get_params()

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
- - - - - -
- - - - - - - -
Params & stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::get_params ()
-
-inline
-
- -

Return a reference to the parameters.

-

Modifications to the parameters struct will be used in the next call to operator()().

- -
-
- -

◆ get_walltime()

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
- - - - - -
- - - - - - - -
double stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::get_walltime () const
-
-inline
-
- -

Return the accumulated runtime of the updater, measured from the host side.

-

For each call to operator()(), the time it took to submit all kernels and, if Params::blocking is true, to finish the computation is recorded and accumulated.

- -
-
- -

◆ operator()()

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
- - - - - -
- - - - - - - - -
GridImpl stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::operator() (GridImplsource_grid)
-
-inline
-
- -

Compute a new grid based on the source grid, using the configured transition function.

-

The computation does not work in-place. Instead, it will allocate two additional grids with the same size as the source grid and use them for a double buffering scheme. Therefore, you are free to reuse the source grid as it will not be altered.

-

If Params::blocking is set to true, this method will block until the computation is complete. Otherwise, it will return as soon as all kernels are submitted.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1monotile_1_1StencilUpdateKernel-members.html b/classstencil_1_1monotile_1_1StencilUpdateKernel-members.html deleted file mode 100644 index dc0875d..0000000 --- a/classstencil_1_1monotile_1_1StencilUpdateKernel-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::monotile::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, max_grid_width, max_grid_height, in_pipe, out_pipe > Member List
-
-
- -

This is the complete list of members for stencil::monotile::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, max_grid_width, max_grid_height, in_pipe, out_pipe >, including all inherited members.

- - - -
operator()() conststencil::monotile::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, max_grid_width, max_grid_height, in_pipe, out_pipe >inline
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)stencil::monotile::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, max_grid_width, max_grid_height, in_pipe, out_pipe >inline
- - - - diff --git a/classstencil_1_1monotile_1_1StencilUpdateKernel.html b/classstencil_1_1monotile_1_1StencilUpdateKernel.html deleted file mode 100644 index c73239e..0000000 --- a/classstencil_1_1monotile_1_1StencilUpdateKernel.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - -StencilStream: stencil::monotile::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, max_grid_width, max_grid_height, in_pipe, out_pipe > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
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: -
- - - - diff --git a/classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState-members.html b/classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState-members.html deleted file mode 100644 index e301e79..0000000 --- a/classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations > Member List
-
-
- -

This is the complete list of members for stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >, including all inherited members.

- - - - -
GlobalState(TransFunc function, uindex_t iteration_offset, uindex_t n_iterations)stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >inline
GlobalState(GlobalState const &other)stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >inline
TDV typedefstencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >
- - - - diff --git a/classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState.html b/classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState.html deleted file mode 100644 index f5f6eed..0000000 --- a/classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Public Types | -Public Member Functions | -List of all members
-
stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations > Class Template Reference
-
-
- -

#include <SinglePassStrategies.hpp>

- - - - -

-Classes

struct  KernelArgument
 
- - - -

-Public Types

using TDV = typename TransFunc::TimeDependentValue
 
- - - - - -

-Public Member Functions

 GlobalState (TransFunc function, uindex_t iteration_offset, uindex_t n_iterations)
 
 GlobalState (GlobalState const &other)
 
-

Member Typedef Documentation

- -

◆ TDV

- -
-
-
-template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
- - - - -
using stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::TDV = typename TransFunc::TimeDependentValue
-
- -
-
-

Constructor & Destructor Documentation

- -

◆ GlobalState() [1/2]

- -
-
-
-template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::GlobalState (TransFunc function,
uindex_t iteration_offset,
uindex_t n_iterations 
)
-
-inline
-
- -
-
- -

◆ GlobalState() [2/2]

- -
-
-
-template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
- - - - - -
- - - - - - - - -
stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::GlobalState (GlobalState< TransFunc, max_n_iterations > const & other)
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1tiling_1_1Grid-members.html b/classstencil_1_1tiling_1_1Grid-members.html deleted file mode 100644 index e91920e..0000000 --- a/classstencil_1_1tiling_1_1Grid-members.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius > Member List
-
-
- -

This is the complete list of members for stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >, including all inherited members.

- - - - - - - - - - - - - - -
copy_from_buffer(sycl::buffer< Cell, 2 > input_buffer)stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >inline
copy_to_buffer(sycl::buffer< Cell, 2 > output_buffer)stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >inline
dimensionsstencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >static
get_grid_height() conststencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >inline
get_grid_width() conststencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >inline
get_tile_range() conststencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >inline
Grid(uindex_t grid_width, uindex_t grid_height)stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >inline
Grid(sycl::range< 2 > range)stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >inline
Grid(sycl::buffer< Cell, 2 > input_buffer)stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >inline
Grid(Grid const &other_grid)stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >inline
make_similar() conststencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >inline
submit_read(sycl::queue &queue, uindex_t tile_c, uindex_t tile_r, Cell halo_value)stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >inline
submit_write(sycl::queue queue, uindex_t tile_c, uindex_t tile_r)stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >inline
- - - - diff --git a/classstencil_1_1tiling_1_1Grid.html b/classstencil_1_1tiling_1_1Grid.html deleted file mode 100644 index b9d3179..0000000 --- a/classstencil_1_1tiling_1_1Grid.html +++ /dev/null @@ -1,721 +0,0 @@ - - - - - - - -StencilStream: stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Public Member Functions | -Static Public Attributes | -List of all members
-
stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius > Class Template Reference
-
-
- -

A grid class for the tiling architecture. - More...

- -

#include <Grid.hpp>

- - - - - -

-Classes

class  GridAccessor
 An accessor for the monotile grid. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 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 > input_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 > 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.
 
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.
 
GenericID< uindex_tget_tile_range () const
 Return the range of (central) tiles of the grid.
 
template<typename in_pipe >
sycl::event submit_read (sycl::queue &queue, uindex_t tile_c, uindex_t tile_r, Cell halo_value)
 Submit a kernel that sends a tile of the grid into a pipe.
 
template<typename out_pipe >
sycl::event submit_write (sycl::queue queue, uindex_t tile_c, uindex_t tile_r)
 Submit a kernel that receives cells from the pipe and writes them to the grid.
 
- - - - -

-Static Public Attributes

static constexpr uindex_t dimensions = 2
 The number of dimensions of the grid.
 
-

Detailed Description

-
template<typename Cell, uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
-class stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >

A grid class for the tiling architecture.

-

This grid, which fullfils the Grid concept, contains a two-dimensional buffer of cells to be used together with the StencilUpdate class.

-

Since this class template requires multiple template arguments that must match the used StencilUpdate instance, it is advised to use the StencilUpdate::GridImpl shorthand instead of re-applying the same arguments to the grid class template.

-

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:135
-
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
- - - - - -
CellThe cell type to store.
tile_widthThe width of a grid tile. This has to match the tile width of the used StencilUpdate class instance.
tile_heightThe height of a grid tile. This has to match the tile height of the used StencilUpdate class instance.
halo_radiusThe halo radius required for input tiles. This has to be the number of PEs in a StencilUpdate times the stencil radius of the implemented transition function.
-
-
-

Constructor & Destructor Documentation

- -

◆ Grid() [1/4]

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
- - - - - -
- - - - - - - - - - - - - - - - - - -
stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::Grid (uindex_t grid_width,
uindex_t grid_height 
)
-
-inline
-
- -

Create a new, uninitialized grid with the given dimensions.

-
Parameters
- - - -
grid_widthThe width, or number of columns, of the new grid.
grid_heightThe height, or number of rows, of the new grid.
-
-
- -
-
- -

◆ Grid() [2/4]

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
- - - - - -
- - - - - - - - -
stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::Grid (sycl::range< 2 > range)
-
-inline
-
- -

Create a new, uninitialized grid with the given dimensions.

-
Parameters
- - -
rangeThe range of the new grid. The first index will be the width and the second index will be the height of the grid.
-
-
- -
-
- -

◆ Grid() [3/4]

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
- - - - - -
- - - - - - - - -
stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::Grid (sycl::buffer< Cell, 2 > input_buffer)
-
-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.

-
Parameters
- - -
input_bufferThe buffer with the contents of the new grid.
-
-
- -
-
- -

◆ Grid() [4/4]

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
- - - - - -
- - - - - - - - -
stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::Grid (Grid< Cell, tile_width, tile_height, halo_radius > const & other_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.

-
Parameters
- - -
other_gridThe other grid the new grid should reference.
-
-
- -
-
-

Member Function Documentation

- -

◆ copy_from_buffer()

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
- - - - - -
- - - - - - - - -
void stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::copy_from_buffer (sycl::buffer< Cell, 2 > input_buffer)
-
-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.

-
Parameters
- - -
input_bufferThe buffer to copy the data from.
-
-
-
Exceptions
- - -
std::range_errorThe size of the buffer does not match the grid.
-
-
- -
-
- -

◆ copy_to_buffer()

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
- - - - - -
- - - - - - - - -
void stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::copy_to_buffer (sycl::buffer< Cell, 2 > output_buffer)
-
-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.

-
Parameters
- - -
output_bufferThe buffer to copy the data to.
-
-
-
Exceptions
- - -
std::range_errorThe size of the buffer does not match the grid.
-
-
- -
-
- -

◆ get_grid_height()

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
- - - - - -
- - - - - - - -
uindex_t stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::get_grid_height () const
-
-inline
-
- -

Return the height, or number of rows, of the grid.

- -
-
- -

◆ get_grid_width()

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
- - - - - -
- - - - - - - -
uindex_t stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::get_grid_width () const
-
-inline
-
- -

Return the width, or number of columns, of the grid.

- -
-
- -

◆ get_tile_range()

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
- - - - - -
- - - - - - - -
GenericID< uindex_t > stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::get_tile_range () const
-
-inline
-
- -

Return the range of (central) tiles of the grid.

-

This is not the range of a single tile nor is the range of the grid. It is the range of valid arguments for submit_read and submit_write. For example, if the grid is 60 by 60 cells in size and a tile is 32 by 32 cells in size, the tile range would be 2 by 2 tiles.

-
Returns
The range of tiles of the grid.
- -
-
- -

◆ make_similar()

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
- - - - - -
- - - - - - - -
Grid stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::make_similar () const
-
-inline
-
- -

Create an new, uninitialized grid with the same size as the current one.

- -
-
- -

◆ submit_read()

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
-
-template<typename in_pipe >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sycl::event stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::submit_read (sycl::queue & queue,
uindex_t tile_c,
uindex_t tile_r,
Cell halo_value 
)
-
-inline
-
- -

Submit a kernel that sends a tile of the grid into a pipe.

-

The submitted kernel will send the contents of a tile, along with the required halo, into a pipe in column-major order. This means that the last index (which denotes the row) will change the quickest. The method returns the event of the launched kernel immediately.

-

The tile column and row indices denote the indices of the tile, not the cells. The starting column index will be tile_c * tile_width - halo_radius and the end index will be (tile_c + 1) * tile_width + halo_radius. The start and end indices for the rows are analogous.

-

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_pipeThe pipe the data is sent into.
-
-
-
Parameters
- - - - - -
queueThe queue to submit the kernel to.
tile_cThe column index of the tile to read.
tile_rThe row index of the tile to read.
halo_valueThe value to present for cells outside of the grid.
-
-
-
Exceptions
- - -
std::out_of_rangeThe grid does not contain the requested tile; Either the column or row index to high.
-
-
-
Returns
The event object of the submitted kernel.
- -
-
- -

◆ submit_write()

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
-
-template<typename out_pipe >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
sycl::event stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::submit_write (sycl::queue queue,
uindex_t tile_c,
uindex_t tile_r 
)
-
-inline
-
- -

Submit a kernel that receives cells from the pipe and writes them to the grid.

-

The kernel expects that one tile worth of cells can be 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.

-

The tile column and row indices denote the indices of the tile, not the cells. The starting column index will be tile_c * tile_width and the end index will be (tile_c + 1) * tile_width. The start and end indices for the rows are analogous.

-

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_pipeThe pipe the data is received from.
-
-
-
Parameters
- - - - -
queueThe queue to submit the kernel to.
tile_cThe column index of the tile to read.
tile_rThe row index of the tile to read.
-
-
-
Exceptions
- - -
std::out_of_rangeThe grid does not contain the requested tile; Either the column or row index to high.
-
-
-
Returns
The event object of the submitted kernel.
- -
-
-

Member Data Documentation

- -

◆ dimensions

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
- - - - - -
- - - - -
constexpr uindex_t stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::dimensions = 2
-
-staticconstexpr
-
- -

The number of dimensions of the grid.

-

May be changed in the future when other dimensions are supported.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1tiling_1_1Grid_1_1GridAccessor-members.html b/classstencil_1_1tiling_1_1Grid_1_1GridAccessor-members.html deleted file mode 100644 index f85cee1..0000000 --- a/classstencil_1_1tiling_1_1Grid_1_1GridAccessor-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode > Member List
-
-
- -

This is the complete list of members for stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >, including all inherited members.

- - - - - - - -
BaseSubscript typedefstencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >
dimensionsstencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >static
GridAccessor(Grid &grid)stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >inline
operator[](uindex_t i)stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >inline
operator[](sycl::id< 2 > id)stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >inline
operator[](sycl::id< 2 > id)stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >inline
- - - - diff --git a/classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html b/classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html deleted file mode 100644 index 2d273fe..0000000 --- a/classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - -StencilStream: stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Public Types | -Public Member Functions | -Static Public Attributes | -List of all members
-
stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode > Class Template Reference
-
-
- -

An accessor for the monotile grid. - More...

- -

#include <Grid.hpp>

- - - - - -

-Public Types

using BaseSubscript = AccessorSubscript< Cell, GridAccessor, access_mode >
 Shorthand for the used subscript type.
 
- - - - - - - - - - - - - -

-Public Member Functions

 GridAccessor (Grid &grid)
 Create a new accessor to the given grid.
 
BaseSubscript operator[] (uindex_t i)
 Access/Dereference the first dimension.
 
Cell const & operator[] (sycl::id< 2 > id)
 Access a cell of the grid.
 
Cell & operator[] (sycl::id< 2 > id)
 Access a cell of the grid.
 
- - - - -

-Static Public Attributes

static constexpr uindex_t dimensions = Grid::dimensions
 The number of dimensions of the underlying grid.
 
-

Detailed Description

-
template<typename Cell, uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
-template<sycl::access::mode access_mode>
-class stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >

An accessor for the monotile grid.

-

Instances of this class provide access to a grid, so that host code can read and write the contents of a grid. As such, it fullfils the GridAccessor concept.

-
Template Parameters
- - -
access_modeThe access mode for the accessor.
-
-
-

Member Typedef Documentation

- -

◆ BaseSubscript

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
-
-template<sycl::access::mode access_mode>
- - - - -
using stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >::BaseSubscript = AccessorSubscript<Cell, GridAccessor, access_mode>
-
- -

Shorthand for the used subscript type.

- -
-
-

Constructor & Destructor Documentation

- -

◆ GridAccessor()

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
-
-template<sycl::access::mode access_mode>
- - - - - -
- - - - - - - - -
stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >::GridAccessor (Gridgrid)
-
-inline
-
- -

Create a new accessor to the given grid.

- -
-
-

Member Function Documentation

- -

◆ operator[]() [1/3]

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
-
-template<sycl::access::mode access_mode>
- - - - - -
- - - - - - - - -
Cell const & stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >::operator[] (sycl::id< 2 > id)
-
-inline
-
- -

Access a cell of the grid.

-
Parameters
- - -
idThe index of the accessed cell. The first index is the column index, the second one is the row index.
-
-
-
Returns
A constant reference to the indexed cell.
- -
-
- -

◆ operator[]() [2/3]

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
-
-template<sycl::access::mode access_mode>
- - - - - -
- - - - - - - - -
Cell & stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >::operator[] (sycl::id< 2 > id)
-
-inline
-
- -

Access a cell of the grid.

-
Parameters
- - -
idThe index of the accessed cell. The first index is the column index, the second one is the row index.
-
-
-
Returns
A reference to the indexed cell.
- -
-
- -

◆ operator[]() [3/3]

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
-
-template<sycl::access::mode access_mode>
- - - - - -
- - - - - - - - -
BaseSubscript stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >::operator[] (uindex_t i)
-
-inline
-
- -

Access/Dereference the first dimension.

-

This subscript operator is the first subscript in an expression like accessor[i_column][i_row]. It will return a BaseSubscript object that handles subsequent dimensions.

- -
-
-

Member Data Documentation

- -

◆ dimensions

- -
-
-
-template<typename Cell , uindex_t tile_width = 1024, uindex_t tile_height = 1024, uindex_t halo_radius = 1>
-
-template<sycl::access::mode access_mode>
- - - - - -
- - - - -
constexpr uindex_t stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >::dimensions = Grid::dimensions
-
-staticconstexpr
-
- -

The number of dimensions of the underlying grid.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1tiling_1_1StencilUpdate-members.html b/classstencil_1_1tiling_1_1StencilUpdate-members.html deleted file mode 100644 index 6425c07..0000000 --- a/classstencil_1_1tiling_1_1StencilUpdate-members.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy > Member List
-
-
- -

This is the complete list of members for stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >, including all inherited members.

- - - - - - - - - -
get_kernel_runtime() conststencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >inline
get_n_processed_cells() conststencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >inline
get_params()stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >inline
get_walltime() conststencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >inline
GridImpl typedefstencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >
halo_radiusstencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >static
operator()(GridImpl &source_grid)stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >inline
StencilUpdate(Params params)stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >inline
- - - - diff --git a/classstencil_1_1tiling_1_1StencilUpdate.html b/classstencil_1_1tiling_1_1StencilUpdate.html deleted file mode 100644 index 54115df..0000000 --- a/classstencil_1_1tiling_1_1StencilUpdate.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - - - - -StencilStream: stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Public Types | -Public Member Functions | -Static Public Attributes | -List of all members
-
stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy > Class Template Reference
-
-
- -

A grid updater that applies an iterative stencil code to a grid. - More...

- -

#include <StencilUpdate.hpp>

- - - - - -

-Classes

struct  Params
 Parameters for the stencil updater. More...
 
- - - - -

-Public Types

using GridImpl = Grid< Cell, tile_width, tile_height, halo_radius >
 A shorthand for the used and supported grid type.
 
- - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 StencilUpdate (Params params)
 Create a new stencil updater object.
 
Paramsget_params ()
 Return a reference to the parameters.
 
GridImpl operator() (GridImpl &source_grid)
 Compute a new grid based on the source grid, using the configured transition function.
 
uindex_t get_n_processed_cells () const
 Return the accumulated total number of cells processed by this updater.
 
double get_kernel_runtime () const
 Return the accumulated total runtime of the execution kernel.
 
double get_walltime () const
 Return the accumulated runtime of the updater, measured from the host side.
 
- - - - -

-Static Public Attributes

static constexpr uindex_t halo_radius = F::stencil_radius * n_processing_elements
 The radius of an input's tile halo.
 
-

Detailed Description

-
template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
-class stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >

A grid updater that applies an iterative stencil code to a grid.

-

This updater applies an iterative stencil code, defined by the template parameter F, to the grid; As often as requested.

-
Template Parameters
- - - - - - -
FThe transition function to apply to input grids.
n_processing_elements(Optimization parameter) The number of processing elements (PEs) to implement. Increasing the number of PEs leads to a higher performance since more iterations are computed in parallel. However, it will also increase the resource and space usage of the design. Too many PEs might also decrease the clock frequency.
tile_width(Optimization parameter) The width of the tile that is updated in one pass. For best hardware utilization, this should be a power of two. Increasing the maximal width of a tile may increase the performance of the design by introducing longer steady-states and reducing halo computation overheads. However, it will also increase the logic resource utilization and might lower the clock frequency.
tile_height(Optimization parameter) The height of the tile that is updated in one pass. Increasing the maximal height of a tile may increase the performance of the design by introducing longer steady-states and reducing halo computation overheads. However, it will also increase the logic and on-chip memory utilization and might lower the clock frequency.
TDVStrategy(Optimization parameter) The precomputation strategy for the time-dependent value system (See guide).
-
-
-

Member Typedef Documentation

- -

◆ GridImpl

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
- - - - -
using stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::GridImpl = Grid<Cell, tile_width, tile_height, halo_radius>
-
- -

A shorthand for the used and supported grid type.

- -
-
-

Constructor & Destructor Documentation

- -

◆ StencilUpdate()

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
- - - - - -
- - - - - - - - -
stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::StencilUpdate (Params params)
-
-inline
-
- -

Create a new stencil updater object.

- -
-
-

Member Function Documentation

- -

◆ get_kernel_runtime()

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
- - - - - -
- - - - - - - -
double stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::get_kernel_runtime () const
-
-inline
-
- -

Return the accumulated total runtime of the execution kernel.

-

This runtime is accumulated across multiple calls to operator()(). However, this is only possible if Params::profiling is set to true.

- -
-
- -

◆ get_n_processed_cells()

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
- - - - - -
- - - - - - - -
uindex_t stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::get_n_processed_cells () const
-
-inline
-
- -

Return the accumulated total number of cells processed by this updater.

-

For each call of to operator()(), this is the width times the height of the grid, times the number of computed iterations. This will also be accumulated across multiple calls to operator()().

- -
-
- -

◆ get_params()

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
- - - - - -
- - - - - - - -
Params & stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::get_params ()
-
-inline
-
- -

Return a reference to the parameters.

-

Modifications to the parameters struct will be used in the next call to operator()().

- -
-
- -

◆ get_walltime()

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
- - - - - -
- - - - - - - -
double stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::get_walltime () const
-
-inline
-
- -

Return the accumulated runtime of the updater, measured from the host side.

-

For each call to operator()(), the time it took to submit all kernels and, if Params::blocking is true, to finish the computation is recorded and accumulated.

- -
-
- -

◆ operator()()

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
- - - - - -
- - - - - - - - -
GridImpl stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::operator() (GridImplsource_grid)
-
-inline
-
- -

Compute a new grid based on the source grid, using the configured transition function.

-

The computation does not work in-place. Instead, it will allocate two additional grids with the same size as the source grid and use them for a double buffering scheme. Therefore, you are free to reuse the source grid as it will not be altered.

-

If Params::blocking is set to true, this method will block until the computation is complete. Otherwise, it will return as soon as all kernels are submitted.

- -
-
-

Member Data Documentation

- -

◆ halo_radius

- -
-
-
-template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
- - - - - -
- - - - -
constexpr uindex_t stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::halo_radius = F::stencil_radius * n_processing_elements
-
-staticconstexpr
-
- -

The radius of an input's tile halo.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/classstencil_1_1tiling_1_1StencilUpdateKernel-members.html b/classstencil_1_1tiling_1_1StencilUpdateKernel-members.html deleted file mode 100644 index 2f6c36b..0000000 --- a/classstencil_1_1tiling_1_1StencilUpdateKernel-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::tiling::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, output_tile_width, output_tile_height, in_pipe, out_pipe > Member List
-
-
- -

This is the complete list of members for stencil::tiling::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, output_tile_width, output_tile_height, in_pipe, out_pipe >, including all inherited members.

- - - -
operator()() conststencil::tiling::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, output_tile_width, output_tile_height, in_pipe, out_pipe >inline
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)stencil::tiling::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, output_tile_width, output_tile_height, in_pipe, out_pipe >inline
- - - - diff --git a/classstencil_1_1tiling_1_1StencilUpdateKernel.html b/classstencil_1_1tiling_1_1StencilUpdateKernel.html deleted file mode 100644 index 0636dc0..0000000 --- a/classstencil_1_1tiling_1_1StencilUpdateKernel.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - -StencilStream: stencil::tiling::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, output_tile_width, output_tile_height, in_pipe, out_pipe > Class Template Reference - - - - - - - - - -
-
- - - - - - - -
-
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: -
- - - - diff --git a/closed.png b/closed.png deleted file mode 100644 index 98cc2c9..0000000 Binary files a/closed.png and /dev/null differ diff --git a/concepts.html b/concepts.html deleted file mode 100644 index 87ecb3d..0000000 --- a/concepts.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -StencilStream: Concepts - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Concepts
-
-
-
Here is a list of all concepts with brief descriptions:
-
[detail level 1234]
- - - - - - - - - - - - -
 Nstencil
 Nconcepts
 RTransitionFunctionA technical definition of a stencil transition function
 RGridAccessorAn accessor for a two-dimensional grid
 RGridA regular grid of cells
 RStencilUpdateA grid updater that repeatedly applies stencil updates to each cell
 Ntdv
 Nsingle_passImplementations of the TDV system for single-pass backends
 RLocalStateThe requirements for a pass-local TDV system state
 RKernelArgumentThe requirements for a TDV kernel argument
 RGlobalStateThe requirements for a TDV system's global state
 RStrategyRequirements for a TDV implementation strategy
-
-
- - - - diff --git a/conceptstencil_1_1concepts_1_1Grid.html b/conceptstencil_1_1concepts_1_1Grid.html deleted file mode 100644 index b66cd4a..0000000 --- a/conceptstencil_1_1concepts_1_1Grid.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -StencilStream: stencil::concepts::Grid Concept Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::concepts::Grid Concept Reference
-
-
- -

A regular grid of cells. -More...

- -

#include <Concepts.hpp>

-

Concept definition

-
template<typename G, typename Cell>
-
concept stencil::concepts::Grid = requires(G &grid, sycl::buffer<Cell, 2> buffer, uindex_t c, uindex_t r, Cell cell) {
-
{ G(c, r) } -> std::same_as<G>;
-
{ G(sycl::range<2>(c, r)) } -> std::same_as<G>;
-
{ G(buffer) } -> std::same_as<G>;
-
{ grid.copy_from_buffer(buffer) } -> std::same_as<void>;
-
{ grid.copy_to_buffer(buffer) } -> std::same_as<void>;
-
{ grid.get_grid_width() } -> std::convertible_to<uindex_t>;
-
{ grid.get_grid_height() } -> std::convertible_to<uindex_t>;
-
{ grid.make_similar() } -> std::same_as<G>;
-
{
-
typename G::template GridAccessor<sycl::access::mode::read_write>(grid)
-
} -> GridAccessor<Cell>;
-
}
-
A regular grid of cells.
Definition Concepts.hpp:115
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-

Detailed Description

-

A regular grid of cells.

-
Template Parameters
- - -
CellThe type of cells the grid contains.
-
-
-

First of all, each grid must contain a template class called GridAccessor that, given an instance of sycl::access::mode, fulfills the GridAccessor concept. Apart from this, each grid class must implement the following methods:

- -

Newly created grids may be uninitialized.

-
- - - - diff --git a/conceptstencil_1_1concepts_1_1GridAccessor.html b/conceptstencil_1_1concepts_1_1GridAccessor.html deleted file mode 100644 index 40d4086..0000000 --- a/conceptstencil_1_1concepts_1_1GridAccessor.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -StencilStream: stencil::concepts::GridAccessor Concept Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::concepts::GridAccessor Concept Reference
-
-
- -

An accessor for a two-dimensional grid. -More...

- -

#include <Concepts.hpp>

-

Concept definition

-
template<typename Accessor, typename Cell>
-
concept stencil::concepts::GridAccessor = requires(Accessor ac, uindex_t c, uindex_t r) {
-
{ ac[sycl::id<2>(c, r)] } -> std::same_as<Cell &>;
-
{ ac[c][r] } -> std::same_as<Cell &>;
-
}
-
An accessor for a two-dimensional grid.
Definition Concepts.hpp:86
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-

Detailed Description

-

An accessor for a two-dimensional grid.

-

It must provide access either via a sycl::id<2> object or via two consecutive accesses with uindex_ts.

-
- - - - diff --git a/conceptstencil_1_1concepts_1_1StencilUpdate.html b/conceptstencil_1_1concepts_1_1StencilUpdate.html deleted file mode 100644 index 169f9c9..0000000 --- a/conceptstencil_1_1concepts_1_1StencilUpdate.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -StencilStream: stencil::concepts::StencilUpdate Concept Reference - - - - - - - - - -
-
- - - - - - - -
-
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:

-
- - - - diff --git a/conceptstencil_1_1concepts_1_1TransitionFunction.html b/conceptstencil_1_1concepts_1_1TransitionFunction.html deleted file mode 100644 index fb4beb8..0000000 --- a/conceptstencil_1_1concepts_1_1TransitionFunction.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -StencilStream: stencil::concepts::TransitionFunction Concept Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::concepts::TransitionFunction Concept Reference
-
-
- -

A technical definition of a stencil transition function. -More...

- -

#include <Concepts.hpp>

-

Concept definition

-
template<typename T>
- -
std::semiregular<typename T::Cell> && std::copyable<typename T::TimeDependentValue> &&
-
-
std::same_as<decltype(T::stencil_radius), const uindex_t> && (T::stencil_radius >= 1) &&
-
std::same_as<decltype(T::n_subiterations), const uindex_t> && (T::n_subiterations >= 1) &&
-
-
requires(T const &trans_func,
-
Stencil<typename T::Cell, T::stencil_radius, typename T::TimeDependentValue> const
-
&stencil) {
-
{ trans_func(stencil) } -> std::same_as<typename T::Cell>;
-
} &&
-
requires(T const &trans_func, uindex_t i_iteration) {
-
{
-
trans_func.get_time_dependent_value(i_iteration)
-
} -> std::same_as<typename T::TimeDependentValue>;
-
}
-
A technical definition of a stencil transition function.
Definition Concepts.hpp:62
-
Definition AccessorSubscript.hpp:24
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-

Detailed Description

-

A technical definition of a stencil transition function.

-

This concept lists all required type definitions, constants, and methods that a StencilUpdate needs from a transition function. This includes multiple definitions for advanced features. Most users are adviced to extend the stencil::BaseTransitionFunction class. It provides default definitions that disable those features.

-

The required type definitions are:

-

The required constants are:

-

The required methods are:

-
- - - - diff --git a/conceptstencil_1_1tdv_1_1single__pass_1_1GlobalState.html b/conceptstencil_1_1tdv_1_1single__pass_1_1GlobalState.html deleted file mode 100644 index 5a660ec..0000000 --- a/conceptstencil_1_1tdv_1_1single__pass_1_1GlobalState.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::GlobalState Concept Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::tdv::single_pass::GlobalState Concept Reference
-
-
- -

The requirements for a TDV system's global state. -More...

- -

#include <SinglePassStrategies.hpp>

-

Concept definition

-
template<typename T, typename TransFunc>
- - -
std::constructible_from<T, TransFunc, uindex_t, uindex_t> &&
- -
std::constructible_from<typename T::KernelArgument, T &, sycl::handler &, uindex_t, uindex_t>
-
A technical definition of a stencil transition function.
Definition Concepts.hpp:62
-
The requirements for a TDV system's global state.
Definition SinglePassStrategies.hpp:85
-
The requirements for a TDV kernel argument.
Definition SinglePassStrategies.hpp:65
-

Detailed Description

-

The requirements for a TDV system's global state.

-

This global state is constructed and stored on the host. It is constructed by the StencilUpdate from the transition function as well as the iteration index offset and the number of iterations that are requested from the user. For example, if we have a transition function object tf and the user has requested to compute the iterations 17 to 42, the call to the global state constructor will be GlobalState(tf, 17, 42-17).

-

The stencil updater will then submit execution kernels for one or multiple passes. For each of these passes, it will construct a KernelArgument on the host using a reference to this global state, a reference to the SYCL handler, as well as the iteration offset and number of iterations of this pass.

-
- - - - diff --git a/conceptstencil_1_1tdv_1_1single__pass_1_1KernelArgument.html b/conceptstencil_1_1tdv_1_1single__pass_1_1KernelArgument.html deleted file mode 100644 index 7e76535..0000000 --- a/conceptstencil_1_1tdv_1_1single__pass_1_1KernelArgument.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::KernelArgument Concept Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::tdv::single_pass::KernelArgument Concept Reference
-
-
- -

The requirements for a TDV kernel argument. -More...

- -

#include <SinglePassStrategies.hpp>

-

Concept definition

-
template<typename T, typename TransFunc>
- - -
std::constructible_from<typename T::LocalState, T const &>
-
A technical definition of a stencil transition function.
Definition Concepts.hpp:62
-
The requirements for a TDV kernel argument.
Definition SinglePassStrategies.hpp:65
-
The requirements for a pass-local TDV system state.
Definition SinglePassStrategies.hpp:48
-

Detailed Description

-

The requirements for a TDV kernel argument.

-

Each kernel argument is constructed on the host and then passed to the execution kernel. From this kernel argument, the execution constructs the LocalState.

-
Template Parameters
- - -
TransFuncThe transition function that contains the TDV definition.
-
-
-
- - - - diff --git a/conceptstencil_1_1tdv_1_1single__pass_1_1LocalState.html b/conceptstencil_1_1tdv_1_1single__pass_1_1LocalState.html deleted file mode 100644 index 56fe281..0000000 --- a/conceptstencil_1_1tdv_1_1single__pass_1_1LocalState.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::LocalState Concept Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::tdv::single_pass::LocalState Concept Reference
-
-
- -

The requirements for a pass-local TDV system state. -More...

- -

#include <SinglePassStrategies.hpp>

-

Concept definition

-
template<typename T, typename TransFunc>
- -
stencil::concepts::TransitionFunction<TransFunc> && requires(T const &local_state, uindex_t i) {
-
{
-
local_state.get_time_dependent_value(i)
-
} -> std::same_as<typename TransFunc::TimeDependentValue>;
-
}
-
A technical definition of a stencil transition function.
Definition Concepts.hpp:62
-
The requirements for a pass-local TDV system state.
Definition SinglePassStrategies.hpp:48
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-

Detailed Description

-

The requirements for a pass-local TDV system state.

-

Each local state is instantiated just prior to starting a pass, and the final time-dependent values are extracted from it.

-

The required methods are:

- -
Template Parameters
- - -
TransFuncThe transition function that contains the TDV definition.
-
-
-
- - - - diff --git a/conceptstencil_1_1tdv_1_1single__pass_1_1Strategy.html b/conceptstencil_1_1tdv_1_1single__pass_1_1Strategy.html deleted file mode 100644 index 0b3c2a9..0000000 --- a/conceptstencil_1_1tdv_1_1single__pass_1_1Strategy.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::Strategy Concept Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
stencil::tdv::single_pass::Strategy Concept Reference
-
-
- -

Requirements for a TDV implementation strategy. -More...

- -

#include <SinglePassStrategies.hpp>

-

Concept definition

-
template<typename T, typename TransFunc, uindex_t max_n_iterations>
- - - -
A technical definition of a stencil transition function.
Definition Concepts.hpp:62
-
The requirements for a TDV system's global state.
Definition SinglePassStrategies.hpp:85
-
Requirements for a TDV implementation strategy.
Definition SinglePassStrategies.hpp:99
-

Detailed Description

-

Requirements for a TDV implementation strategy.

-

Such a strategy must contain a template for a valid GlobalState, which is instantiated with the transition function and the maximal number of iterations that are computed in one pass.

-
- - - - diff --git a/convection-animation.mp4 b/convection-animation.mp4 deleted file mode 100644 index bac4123..0000000 Binary files a/convection-animation.mp4 and /dev/null differ diff --git a/cpu_2Grid_8hpp.html b/cpu_2Grid_8hpp.html deleted file mode 100644 index f6b461a..0000000 --- a/cpu_2Grid_8hpp.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -StencilStream: StencilStream/cpu/Grid.hpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Namespaces
-
Grid.hpp File Reference
-
-
-
#include "../Index.hpp"
-#include <memory>
-
-Include dependency graph for Grid.hpp:
-
-
- - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - -
-
-

Go to the source code of this file.

- - - - - - - - -

-Classes

class  stencil::cpu::Grid< Cell >
 A grid class for the CPU backend. More...
 
class  stencil::cpu::Grid< Cell >::GridAccessor< access_mode >
 An accessor for the grid. More...
 
- - - - - -

-Namespaces

namespace  stencil
 
namespace  stencil::cpu
 
-
- - - - diff --git a/cpu_2Grid_8hpp__dep__incl.map b/cpu_2Grid_8hpp__dep__incl.map deleted file mode 100644 index 0789d9a..0000000 --- a/cpu_2Grid_8hpp__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/cpu_2Grid_8hpp__dep__incl.md5 b/cpu_2Grid_8hpp__dep__incl.md5 deleted file mode 100644 index 891e497..0000000 --- a/cpu_2Grid_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -cc0a30d184f1e87a4015a230898b328d \ No newline at end of file diff --git a/cpu_2Grid_8hpp__dep__incl.png b/cpu_2Grid_8hpp__dep__incl.png deleted file mode 100644 index aa0786c..0000000 Binary files a/cpu_2Grid_8hpp__dep__incl.png and /dev/null differ diff --git a/cpu_2Grid_8hpp__incl.map b/cpu_2Grid_8hpp__incl.map deleted file mode 100644 index 03120e1..0000000 --- a/cpu_2Grid_8hpp__incl.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/cpu_2Grid_8hpp__incl.md5 b/cpu_2Grid_8hpp__incl.md5 deleted file mode 100644 index b990f7d..0000000 --- a/cpu_2Grid_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -205383702d0be547914b4f5585861f80 \ No newline at end of file diff --git a/cpu_2Grid_8hpp__incl.png b/cpu_2Grid_8hpp__incl.png deleted file mode 100644 index a7f3345..0000000 Binary files a/cpu_2Grid_8hpp__incl.png and /dev/null differ diff --git a/cpu_2Grid_8hpp_source.html b/cpu_2Grid_8hpp_source.html deleted file mode 100644 index 13de737..0000000 --- a/cpu_2Grid_8hpp_source.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - -StencilStream: StencilStream/cpu/Grid.hpp Source File - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
Grid.hpp
-
-
-Go to the documentation of this file.
1/*
-
2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
-
3 * University
-
4 *
-
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
-
6 * associated documentation files (the “Software”), to deal in the Software without restriction,
-
7 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
-
8 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
-
9 * furnished to do so, subject to the following conditions:
-
10 *
-
11 * The above copyright notice and this permission notice shall be included in all copies or
-
12 * substantial portions of the Software.
-
13 *
-
14 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
-
15 * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-
16 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-
17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
19 */
-
20#pragma once
-
21#include "../Index.hpp"
-
22#include <memory>
-
23
-
24namespace stencil {
-
-
25namespace cpu {
-
26
-
-
51template <typename Cell> class Grid {
-
52 public:
-
58 static constexpr uindex_t dimensions = 2;
-
59
-
67 Grid(uindex_t c, uindex_t r) : buffer(sycl::range<2>(c, r)) {}
-
68
-
75 Grid(sycl::range<2> range) : buffer(range) {}
-
76
-
-
85 Grid(sycl::buffer<Cell, 2> other_buffer) : buffer(other_buffer.get_range()) {
-
86 copy_from_buffer(other_buffer);
-
87 }
-
-
88
-
98 Grid(Grid const &other_grid) : buffer(other_grid.buffer) {}
-
99
-
-
110 void copy_from_buffer(sycl::buffer<Cell, 2> other_buffer) {
-
111 if (buffer.get_range() != other_buffer.get_range()) {
-
112 throw std::range_error("The target buffer has not the same size as the grid");
-
113 }
-
114 sycl::host_accessor buffer_ac(buffer, sycl::write_only);
-
115 sycl::host_accessor other_ac(other_buffer, sycl::read_only);
-
116 std::memcpy(buffer_ac.get_pointer(), other_ac.get_pointer(), buffer_ac.byte_size());
-
117 }
-
-
118
-
-
128 void copy_to_buffer(sycl::buffer<Cell, 2> other_buffer) {
-
129 if (buffer.get_range() != other_buffer.get_range()) {
-
130 throw std::range_error("The target buffer has not the same size as the grid");
-
131 }
-
132 sycl::host_accessor buffer_ac(buffer, sycl::read_only);
-
133 sycl::host_accessor other_ac(other_buffer, sycl::write_only);
-
134 std::memcpy(other_ac.get_pointer(), buffer_ac.get_pointer(), buffer_ac.byte_size());
-
135 }
-
-
136
-
146 template <sycl::access::mode access_mode = sycl::access::mode::read_write>
-
-
147 class GridAccessor : public sycl::host_accessor<Cell, Grid::dimensions, access_mode> {
-
148 public:
-
- -
153 : sycl::host_accessor<Cell, Grid::dimensions, access_mode>(grid.buffer) {}
-
-
154 };
-
-
155
-
159 uindex_t get_grid_width() const { return buffer.get_range()[0]; }
-
160
-
164 uindex_t get_grid_height() const { return buffer.get_range()[1]; }
-
165
- -
170
-
171 sycl::buffer<Cell, 2> &get_buffer() { return buffer; }
-
172
-
173 private:
-
174 sycl::buffer<Cell, 2> buffer;
-
175};
-
-
176} // namespace cpu
-
-
177} // namespace stencil
-
An accessor for the grid.
Definition Grid.hpp:147
-
GridAccessor(Grid &grid)
Create a new accessor to the given grid.
Definition Grid.hpp:152
-
A grid class for the CPU backend.
Definition Grid.hpp:51
-
Grid(uindex_t c, uindex_t r)
Create a new, uninitialized grid with the given dimensions.
Definition Grid.hpp:67
-
void copy_to_buffer(sycl::buffer< Cell, 2 > other_buffer)
Copy the contents of the grid into the SYCL buffer.
Definition Grid.hpp:128
-
Grid(sycl::range< 2 > range)
Create a new, uninitialized grid with the given dimensions.
Definition Grid.hpp:75
-
void copy_from_buffer(sycl::buffer< Cell, 2 > other_buffer)
Copy the contents of the SYCL buffer into the grid.
Definition Grid.hpp:110
-
Grid(Grid const &other_grid)
Create a new reference to the given grid.
Definition Grid.hpp:98
-
Grid make_similar() const
Create an new, uninitialized grid with the same size as the current one.
Definition Grid.hpp:169
-
sycl::buffer< Cell, 2 > & get_buffer()
Definition Grid.hpp:171
-
uindex_t get_grid_height() const
Return the height, or number of rows, of the grid.
Definition Grid.hpp:164
-
uindex_t get_grid_width() const
Return the width, or number of columns, of the grid.
Definition Grid.hpp:159
-
static constexpr uindex_t dimensions
The number of dimensions of the grid.
Definition Grid.hpp:58
-
Grid(sycl::buffer< Cell, 2 > other_buffer)
Create a new grid with the same size and contents as the given SYCL buffer.
Definition Grid.hpp:85
-
Definition AccessorSubscript.hpp:24
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-
- - - - diff --git a/cpu_2StencilUpdate_8hpp.html b/cpu_2StencilUpdate_8hpp.html deleted file mode 100644 index b625ce3..0000000 --- a/cpu_2StencilUpdate_8hpp.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -StencilStream: StencilStream/cpu/StencilUpdate.hpp File Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
-Classes | -Namespaces
-
StencilUpdate.hpp File Reference
-
-
-
#include "../Concepts.hpp"
-#include "../Stencil.hpp"
-#include "Grid.hpp"
-#include <chrono>
-
-Include dependency graph for StencilUpdate.hpp:
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - -

-Classes

class  stencil::cpu::StencilUpdate< F >
 A grid updater that applies an iterative stencil code to a grid. More...
 
struct  stencil::cpu::StencilUpdate< F >::Params
 Parameters for the stencil updater. More...
 
- - - - - -

-Namespaces

namespace  stencil
 
namespace  stencil::cpu
 
-
- - - - diff --git a/cpu_2StencilUpdate_8hpp__incl.map b/cpu_2StencilUpdate_8hpp__incl.map deleted file mode 100644 index 2b4d4a1..0000000 --- a/cpu_2StencilUpdate_8hpp__incl.map +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cpu_2StencilUpdate_8hpp__incl.md5 b/cpu_2StencilUpdate_8hpp__incl.md5 deleted file mode 100644 index e3c7a62..0000000 --- a/cpu_2StencilUpdate_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f34662be499d7b6e51092f8f8a36b415 \ No newline at end of file diff --git a/cpu_2StencilUpdate_8hpp__incl.png b/cpu_2StencilUpdate_8hpp__incl.png deleted file mode 100644 index 439e863..0000000 Binary files a/cpu_2StencilUpdate_8hpp__incl.png and /dev/null differ diff --git a/cpu_2StencilUpdate_8hpp_source.html b/cpu_2StencilUpdate_8hpp_source.html deleted file mode 100644 index 15f94d5..0000000 --- a/cpu_2StencilUpdate_8hpp_source.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - -StencilStream: StencilStream/cpu/StencilUpdate.hpp Source File - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
StencilUpdate.hpp
-
-
-Go to the documentation of this file.
1/*
-
2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
-
3 * University
-
4 *
-
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
6 * of this software and associated documentation files (the “Software”), to deal
-
7 * in the Software without restriction, including without limitation the rights
-
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
9 * copies of the Software, and to permit persons to whom the Software is
-
10 * furnished to do so, subject to the following conditions:
-
11 *
-
12 * The above copyright notice and this permission notice shall be included in
-
13 * all copies or substantial portions of the Software.
-
14 *
-
15 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
21 * SOFTWARE.
-
22 */
-
23#pragma once
-
24#include "../Concepts.hpp"
-
25#include "../Stencil.hpp"
-
26#include "Grid.hpp"
-
27#include <chrono>
-
28
-
29namespace stencil {
-
30namespace cpu {
-
31
-
-
40template <concepts::TransitionFunction F> class StencilUpdate {
-
41 private:
-
42 using Cell = F::Cell;
-
43
-
44 public:
- -
47
-
-
51 struct Params {
- -
58
-
62 Cell halo_value = Cell();
-
63
- -
71
- -
76
-
80 sycl::device device = sycl::device();
-
81
-
91 bool blocking = false;
-
92 };
-
-
93
-
97 StencilUpdate(Params params) : params(params), n_processed_cells(0), walltime(0.0) {}
-
98
-
- -
110 GridImpl swap_grid_a = source_grid.make_similar();
-
111 GridImpl swap_grid_b = source_grid.make_similar();
-
112 GridImpl *pass_source = &source_grid;
-
113 GridImpl *pass_target = &swap_grid_b;
-
114
-
115 sycl::queue queue(params.device);
-
116 auto walltime_start = std::chrono::high_resolution_clock::now();
-
117
-
118 for (uindex_t i_iter = 0; i_iter < params.n_iterations; i_iter++) {
-
119 for (uindex_t i_subiter = 0; i_subiter < F::n_subiterations; i_subiter++) {
-
120 run_iter(queue, pass_source, pass_target, params.iteration_offset + i_iter,
-
121 i_subiter);
-
122 if (i_iter == 0 && i_subiter == 0) {
-
123 pass_source = &swap_grid_b;
-
124 pass_target = &swap_grid_a;
-
125 } else {
-
126 std::swap(pass_source, pass_target);
-
127 }
-
128 }
-
129 }
-
130
-
131 if (params.blocking) {
-
132 queue.wait();
-
133 }
-
134
-
135 auto walltime_end = std::chrono::high_resolution_clock::now();
-
136 std::chrono::duration<double> walltime = walltime_end - walltime_start;
-
137 this->walltime += walltime.count();
-
138 n_processed_cells +=
-
139 params.n_iterations * source_grid.get_grid_width() * source_grid.get_grid_height();
-
140
-
141 return *pass_source;
-
142 }
-
-
143
-
149 Params &get_params() { return params; }
-
150
-
158 uindex_t get_n_processed_cells() const { return n_processed_cells; }
-
159
-
166 double get_walltime() const { return walltime; }
-
167
-
168 private:
-
185 void run_iter(sycl::queue queue, GridImpl *pass_source, GridImpl *pass_target, uindex_t i_iter,
-
186 uindex_t i_subiter) {
-
187 using TDV = typename F::TimeDependentValue;
-
188 using StencilImpl = Stencil<Cell, F::stencil_radius, TDV>;
-
189
-
190 queue.submit([&](sycl::handler &cgh) {
-
191 sycl::accessor source_ac(pass_source->get_buffer(), cgh, sycl::read_only);
-
192 sycl::accessor target_ac(pass_target->get_buffer(), cgh, sycl::write_only);
-
193 index_t grid_width = source_ac.get_range()[0];
-
194 index_t grid_height = source_ac.get_range()[1];
-
195 index_t stencil_radius = index_t(F::stencil_radius);
-
196 Cell halo_value = params.halo_value;
-
197 F transition_function = params.transition_function;
-
198 TDV tdv = transition_function.get_time_dependent_value(i_iter);
-
199
-
200 auto kernel = [=](sycl::id<2> id) {
-
201 StencilImpl stencil(ID(id[0], id[1]), UID(grid_width, grid_height), i_iter,
-
202 i_subiter, tdv);
-
203
-
204 for (index_t rel_c = -stencil_radius; rel_c <= stencil_radius; rel_c++) {
-
205 for (index_t rel_r = -stencil_radius; rel_r <= stencil_radius; rel_r++) {
-
206 index_t c = rel_c + id[0];
-
207 index_t r = rel_r + id[1];
-
208 bool within_grid = c >= 0 && r >= 0 && c < grid_width && r < grid_height;
-
209 stencil[ID(rel_c, rel_r)] = (within_grid) ? source_ac[c][r] : halo_value;
-
210 }
-
211 }
-
212
-
213 target_ac[id] = transition_function(stencil);
-
214 };
-
215
-
216 cgh.parallel_for(source_ac.get_range(), kernel);
-
217 });
-
218 }
-
219
-
220 Params params;
-
221 uindex_t n_processed_cells;
-
222 double walltime;
-
223};
-
-
224} // namespace cpu
-
225} // namespace stencil
-
The stencil buffer.
Definition Stencil.hpp:48
-
A grid class for the CPU backend.
Definition Grid.hpp:51
-
Grid make_similar() const
Create an new, uninitialized grid with the same size as the current one.
Definition Grid.hpp:169
-
uindex_t get_grid_height() const
Return the height, or number of rows, of the grid.
Definition Grid.hpp:164
-
uindex_t get_grid_width() const
Return the width, or number of columns, of the grid.
Definition Grid.hpp:159
-
A grid updater that applies an iterative stencil code to a grid.
Definition StencilUpdate.hpp:40
-
StencilUpdate(Params params)
Create a new stencil updater object.
Definition StencilUpdate.hpp:97
-
uindex_t get_n_processed_cells() const
Return the accumulated total number of cells processed by this updater.
Definition StencilUpdate.hpp:158
-
Grid< Cell > GridImpl
Shorthand for the used and supported grid type.
Definition StencilUpdate.hpp:46
-
Params & get_params()
Return a reference to the parameters.
Definition StencilUpdate.hpp:149
-
double get_walltime() const
Return the accumulated runtime of the updater, measured from the host side.
Definition StencilUpdate.hpp:166
-
GridImpl operator()(GridImpl &source_grid)
Compute a new grid based on the source grid, using the configured transition function.
Definition StencilUpdate.hpp:109
-
Definition AccessorSubscript.hpp:24
-
GenericID< uindex_t > UID
An unsigned, two-dimensional index.
Definition GenericID.hpp:80
-
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42
-
GenericID< index_t > ID
A signed, two-dimensional index.
Definition GenericID.hpp:75
-
BOOST_PP_CAT(BOOST_PP_CAT(int, STENCIL_INDEX_WIDTH), _t) index_t
A signed integer of configurable width.
Definition Index.hpp:56
-
Parameters for the stencil updater.
Definition StencilUpdate.hpp:51
-
uindex_t iteration_offset
The iteration index offset.
Definition StencilUpdate.hpp:70
-
Cell halo_value
The cell value to present for cells outside of the grid.
Definition StencilUpdate.hpp:62
-
bool blocking
Should the stencil updater block until completion, or return immediately after all kernels have been ...
Definition StencilUpdate.hpp:91
-
uindex_t n_iterations
The number of iterations to compute.
Definition StencilUpdate.hpp:75
-
sycl::device device
The device to use for computations.
Definition StencilUpdate.hpp:80
-
F transition_function
An instance of the transition function type.
Definition StencilUpdate.hpp:57
- -
- - - - diff --git a/dir_000001_000003.html b/dir_000001_000003.html deleted file mode 100644 index 0087483..0000000 --- a/dir_000001_000003.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -StencilStream: StencilStream/monotile -> tdv Relation - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-

monotile → tdv Relation

File in StencilStream/monotileIncludes file in StencilStream/tdv
StencilUpdate.hppSinglePassStrategies.hpp
- - - - diff --git a/dir_000004_000003.html b/dir_000004_000003.html deleted file mode 100644 index d3f0d31..0000000 --- a/dir_000004_000003.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -StencilStream: StencilStream/tiling -> tdv Relation - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-

tiling → tdv Relation

File in StencilStream/tilingIncludes file in StencilStream/tdv
StencilUpdate.hppSinglePassStrategies.hpp
- - - - diff --git a/dir_05934bb813e37030ffeb5fd4f84c0e0c.html b/dir_05934bb813e37030ffeb5fd4f84c0e0c.html deleted file mode 100644 index cba6542..0000000 --- a/dir_05934bb813e37030ffeb5fd4f84c0e0c.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -StencilStream: StencilStream/monotile Directory Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
monotile Directory Reference
-
-
-
-Directory dependency graph for monotile:
-
-
StencilStream/monotile
- - - - - - - -
- - - - - - -

-Files

 Grid.hpp
 
 StencilUpdate.hpp
 
-
- - - - diff --git a/dir_05934bb813e37030ffeb5fd4f84c0e0c_dep.map b/dir_05934bb813e37030ffeb5fd4f84c0e0c_dep.map deleted file mode 100644 index 107d714..0000000 --- a/dir_05934bb813e37030ffeb5fd4f84c0e0c_dep.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/dir_05934bb813e37030ffeb5fd4f84c0e0c_dep.md5 b/dir_05934bb813e37030ffeb5fd4f84c0e0c_dep.md5 deleted file mode 100644 index 9d5495b..0000000 --- a/dir_05934bb813e37030ffeb5fd4f84c0e0c_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -d3a0129428f163a47b60696f36c9f817 \ No newline at end of file diff --git a/dir_05934bb813e37030ffeb5fd4f84c0e0c_dep.png b/dir_05934bb813e37030ffeb5fd4f84c0e0c_dep.png deleted file mode 100644 index 4e250c5..0000000 Binary files a/dir_05934bb813e37030ffeb5fd4f84c0e0c_dep.png and /dev/null differ diff --git a/dir_2bbcefc313a5aaefe7ac1cd4adfe39da.html b/dir_2bbcefc313a5aaefe7ac1cd4adfe39da.html deleted file mode 100644 index 4982994..0000000 --- a/dir_2bbcefc313a5aaefe7ac1cd4adfe39da.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -StencilStream: StencilStream/tiling Directory Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
tiling Directory Reference
-
-
-
-Directory dependency graph for tiling:
-
-
StencilStream/tiling
- - - - - - - -
- - - - - - -

-Files

 Grid.hpp
 
 StencilUpdate.hpp
 
-
- - - - diff --git a/dir_2bbcefc313a5aaefe7ac1cd4adfe39da_dep.map b/dir_2bbcefc313a5aaefe7ac1cd4adfe39da_dep.map deleted file mode 100644 index 66d431d..0000000 --- a/dir_2bbcefc313a5aaefe7ac1cd4adfe39da_dep.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/dir_2bbcefc313a5aaefe7ac1cd4adfe39da_dep.md5 b/dir_2bbcefc313a5aaefe7ac1cd4adfe39da_dep.md5 deleted file mode 100644 index 34d8234..0000000 --- a/dir_2bbcefc313a5aaefe7ac1cd4adfe39da_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -c1fed4c1b5d46d1949fe53c6dfa8a8be \ No newline at end of file diff --git a/dir_2bbcefc313a5aaefe7ac1cd4adfe39da_dep.png b/dir_2bbcefc313a5aaefe7ac1cd4adfe39da_dep.png deleted file mode 100644 index a984e12..0000000 Binary files a/dir_2bbcefc313a5aaefe7ac1cd4adfe39da_dep.png and /dev/null differ diff --git a/dir_47884370eb8f763e1c3ccacbbac53ba9.html b/dir_47884370eb8f763e1c3ccacbbac53ba9.html deleted file mode 100644 index ba92045..0000000 --- a/dir_47884370eb8f763e1c3ccacbbac53ba9.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -StencilStream: StencilStream/cpu Directory Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
cpu Directory Reference
-
-
-
-Directory dependency graph for cpu:
-
-
StencilStream/cpu
- - - - -
- - - - - - -

-Files

 Grid.hpp
 
 StencilUpdate.hpp
 
-
- - - - diff --git a/dir_47884370eb8f763e1c3ccacbbac53ba9_dep.map b/dir_47884370eb8f763e1c3ccacbbac53ba9_dep.map deleted file mode 100644 index f506762..0000000 --- a/dir_47884370eb8f763e1c3ccacbbac53ba9_dep.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/dir_47884370eb8f763e1c3ccacbbac53ba9_dep.md5 b/dir_47884370eb8f763e1c3ccacbbac53ba9_dep.md5 deleted file mode 100644 index b4f4c08..0000000 --- a/dir_47884370eb8f763e1c3ccacbbac53ba9_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -5fd2629b375c05dfc162153b3b8939f8 \ No newline at end of file diff --git a/dir_47884370eb8f763e1c3ccacbbac53ba9_dep.png b/dir_47884370eb8f763e1c3ccacbbac53ba9_dep.png deleted file mode 100644 index ecc03bd..0000000 Binary files a/dir_47884370eb8f763e1c3ccacbbac53ba9_dep.png and /dev/null differ diff --git a/dir_5e2394f53400ec3b819dca9374f90d55.html b/dir_5e2394f53400ec3b819dca9374f90d55.html deleted file mode 100644 index b167023..0000000 --- a/dir_5e2394f53400ec3b819dca9374f90d55.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -StencilStream: StencilStream Directory Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
StencilStream Directory Reference
-
-
-
-Directory dependency graph for StencilStream:
-
-
StencilStream
- - - - - - - - - - - -
- - - - - - - - - - -

-Directories

 cpu
 
 monotile
 
 tdv
 
 tiling
 
- - - - - - - - - - - - - - - -

-Files

 AccessorSubscript.hpp
 
 BaseTransitionFunction.hpp
 
 Concepts.hpp
 
 GenericID.hpp
 
 Helpers.hpp
 
 Index.hpp
 
 Stencil.hpp
 
-
- - - - diff --git a/dir_5e2394f53400ec3b819dca9374f90d55_dep.map b/dir_5e2394f53400ec3b819dca9374f90d55_dep.map deleted file mode 100644 index d866cf1..0000000 --- a/dir_5e2394f53400ec3b819dca9374f90d55_dep.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dir_5e2394f53400ec3b819dca9374f90d55_dep.md5 b/dir_5e2394f53400ec3b819dca9374f90d55_dep.md5 deleted file mode 100644 index d934110..0000000 --- a/dir_5e2394f53400ec3b819dca9374f90d55_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -b7ed3f6e43c7fe11bd2aef34795666d4 \ No newline at end of file diff --git a/dir_5e2394f53400ec3b819dca9374f90d55_dep.png b/dir_5e2394f53400ec3b819dca9374f90d55_dep.png deleted file mode 100644 index 11b4800..0000000 Binary files a/dir_5e2394f53400ec3b819dca9374f90d55_dep.png and /dev/null differ diff --git a/dir_dbac940d53c03450098e8012f2701f82.html b/dir_dbac940d53c03450098e8012f2701f82.html deleted file mode 100644 index abbcc8c..0000000 --- a/dir_dbac940d53c03450098e8012f2701f82.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -StencilStream: StencilStream/tdv Directory Reference - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
tdv Directory Reference
-
-
-
-Directory dependency graph for tdv:
-
-
StencilStream/tdv
- - - - -
- - - - -

-Files

 SinglePassStrategies.hpp
 
-
- - - - diff --git a/dir_dbac940d53c03450098e8012f2701f82_dep.map b/dir_dbac940d53c03450098e8012f2701f82_dep.map deleted file mode 100644 index bc97444..0000000 --- a/dir_dbac940d53c03450098e8012f2701f82_dep.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/dir_dbac940d53c03450098e8012f2701f82_dep.md5 b/dir_dbac940d53c03450098e8012f2701f82_dep.md5 deleted file mode 100644 index a47d176..0000000 --- a/dir_dbac940d53c03450098e8012f2701f82_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -7403b539dab2e2a2fad505df233798f4 \ No newline at end of file diff --git a/dir_dbac940d53c03450098e8012f2701f82_dep.png b/dir_dbac940d53c03450098e8012f2701f82_dep.png deleted file mode 100644 index 72a5d5e..0000000 Binary files a/dir_dbac940d53c03450098e8012f2701f82_dep.png and /dev/null differ diff --git a/doc.svg b/doc.svg deleted file mode 100644 index 0b928a5..0000000 --- a/doc.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/docd.svg b/docd.svg deleted file mode 100644 index ac18b27..0000000 --- a/docd.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/doxygen.css b/doxygen.css deleted file mode 100644 index 009a9b5..0000000 --- a/doxygen.css +++ /dev/null @@ -1,2045 +0,0 @@ -/* The standard CSS for doxygen 1.9.8*/ - -html { -/* page base colors */ ---page-background-color: white; ---page-foreground-color: black; ---page-link-color: #3D578C; ---page-visited-link-color: #4665A2; - -/* index */ ---index-odd-item-bg-color: #F8F9FC; ---index-even-item-bg-color: white; ---index-header-color: black; ---index-separator-color: #A0A0A0; - -/* header */ ---header-background-color: #F9FAFC; ---header-separator-color: #C4CFE5; ---header-gradient-image: url('nav_h.png'); ---group-header-separator-color: #879ECB; ---group-header-color: #354C7B; ---inherit-header-color: gray; - ---footer-foreground-color: #2A3D61; ---footer-logo-width: 104px; ---citation-label-color: #334975; ---glow-color: cyan; - ---title-background-color: white; ---title-separator-color: #5373B4; ---directory-separator-color: #9CAFD4; ---separator-color: #4A6AAA; - ---blockquote-background-color: #F7F8FB; ---blockquote-border-color: #9CAFD4; - ---scrollbar-thumb-color: #9CAFD4; ---scrollbar-background-color: #F9FAFC; - ---icon-background-color: #728DC1; ---icon-foreground-color: white; ---icon-doc-image: url('doc.svg'); ---icon-folder-open-image: url('folderopen.svg'); ---icon-folder-closed-image: url('folderclosed.svg'); - -/* brief member declaration list */ ---memdecl-background-color: #F9FAFC; ---memdecl-separator-color: #DEE4F0; ---memdecl-foreground-color: #555; ---memdecl-template-color: #4665A2; - -/* detailed member list */ ---memdef-border-color: #A8B8D9; ---memdef-title-background-color: #E2E8F2; ---memdef-title-gradient-image: url('nav_f.png'); ---memdef-proto-background-color: #DFE5F1; ---memdef-proto-text-color: #253555; ---memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); ---memdef-doc-background-color: white; ---memdef-param-name-color: #602020; ---memdef-template-color: #4665A2; - -/* tables */ ---table-cell-border-color: #2D4068; ---table-header-background-color: #374F7F; ---table-header-foreground-color: #FFFFFF; - -/* labels */ ---label-background-color: #728DC1; ---label-left-top-border-color: #5373B4; ---label-right-bottom-border-color: #C4CFE5; ---label-foreground-color: white; - -/** navigation bar/tree/menu */ ---nav-background-color: #F9FAFC; ---nav-foreground-color: #364D7C; ---nav-gradient-image: url('tab_b.png'); ---nav-gradient-hover-image: url('tab_h.png'); ---nav-gradient-active-image: url('tab_a.png'); ---nav-gradient-active-image-parent: url("../tab_a.png"); ---nav-separator-image: url('tab_s.png'); ---nav-breadcrumb-image: url('bc_s.png'); ---nav-breadcrumb-border-color: #C2CDE4; ---nav-splitbar-image: url('splitbar.png'); ---nav-font-size-level1: 13px; ---nav-font-size-level2: 10px; ---nav-font-size-level3: 9px; ---nav-text-normal-color: #283A5D; ---nav-text-hover-color: white; ---nav-text-active-color: white; ---nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); ---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-menu-button-color: #364D7C; ---nav-menu-background-color: white; ---nav-menu-foreground-color: #555555; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.5); ---nav-arrow-color: #9CAFD4; ---nav-arrow-selected-color: #9CAFD4; - -/* table of contents */ ---toc-background-color: #F4F6FA; ---toc-border-color: #D8DFEE; ---toc-header-color: #4665A2; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); - -/** search field */ ---search-background-color: white; ---search-foreground-color: #909090; ---search-magnification-image: url('mag.svg'); ---search-magnification-select-image: url('mag_sel.svg'); ---search-active-color: black; ---search-filter-background-color: #F9FAFC; ---search-filter-foreground-color: black; ---search-filter-border-color: #90A5CE; ---search-filter-highlight-text-color: white; ---search-filter-highlight-bg-color: #3D578C; ---search-results-foreground-color: #425E97; ---search-results-background-color: #EEF1F7; ---search-results-border-color: black; ---search-box-shadow: inset 0.5px 0.5px 3px 0px #555; - -/** code fragments */ ---code-keyword-color: #008000; ---code-type-keyword-color: #604020; ---code-flow-keyword-color: #E08000; ---code-comment-color: #800000; ---code-preprocessor-color: #806020; ---code-string-literal-color: #002080; ---code-char-literal-color: #008080; ---code-xml-cdata-color: black; ---code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #000000; ---code-vhdl-keyword-color: #700070; ---code-vhdl-logic-color: #FF0000; ---code-link-color: #4665A2; ---code-external-link-color: #4665A2; ---fragment-foreground-color: black; ---fragment-background-color: #FBFCFD; ---fragment-border-color: #C4CFE5; ---fragment-lineno-border-color: #00FF00; ---fragment-lineno-background-color: #E8E8E8; ---fragment-lineno-foreground-color: black; ---fragment-lineno-link-fg-color: #4665A2; ---fragment-lineno-link-bg-color: #D8D8D8; ---fragment-lineno-link-hover-fg-color: #4665A2; ---fragment-lineno-link-hover-bg-color: #C8C8C8; ---tooltip-foreground-color: black; ---tooltip-background-color: white; ---tooltip-border-color: gray; ---tooltip-doc-color: grey; ---tooltip-declaration-color: #006318; ---tooltip-link-color: #4665A2; ---tooltip-shadow: 1px 1px 7px gray; ---fold-line-color: #808080; ---fold-minus-image: url('minus.svg'); ---fold-plus-image: url('plus.svg'); ---fold-minus-image-relpath: url('../../minus.svg'); ---fold-plus-image-relpath: url('../../plus.svg'); - -/** font-family */ ---font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; ---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: Tahoma,Arial,sans-serif; ---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; ---font-family-search: Arial,Verdana,sans-serif; ---font-family-icon: Arial,Helvetica; ---font-family-tooltip: Roboto,sans-serif; - -} - -@media (prefers-color-scheme: dark) { - html:not(.dark-mode) { - color-scheme: dark; - -/* page base colors */ ---page-background-color: black; ---page-foreground-color: #C9D1D9; ---page-link-color: #90A5CE; ---page-visited-link-color: #A3B4D7; - -/* index */ ---index-odd-item-bg-color: #0B101A; ---index-even-item-bg-color: black; ---index-header-color: #C4CFE5; ---index-separator-color: #334975; - -/* header */ ---header-background-color: #070B11; ---header-separator-color: #141C2E; ---header-gradient-image: url('nav_hd.png'); ---group-header-separator-color: #283A5D; ---group-header-color: #90A5CE; ---inherit-header-color: #A0A0A0; - ---footer-foreground-color: #5B7AB7; ---footer-logo-width: 60px; ---citation-label-color: #90A5CE; ---glow-color: cyan; - ---title-background-color: #090D16; ---title-separator-color: #354C79; ---directory-separator-color: #283A5D; ---separator-color: #283A5D; - ---blockquote-background-color: #101826; ---blockquote-border-color: #283A5D; - ---scrollbar-thumb-color: #283A5D; ---scrollbar-background-color: #070B11; - ---icon-background-color: #334975; ---icon-foreground-color: #C4CFE5; ---icon-doc-image: url('docd.svg'); ---icon-folder-open-image: url('folderopend.svg'); ---icon-folder-closed-image: url('folderclosedd.svg'); - -/* brief member declaration list */ ---memdecl-background-color: #0B101A; ---memdecl-separator-color: #2C3F65; ---memdecl-foreground-color: #BBB; ---memdecl-template-color: #7C95C6; - -/* detailed member list */ ---memdef-border-color: #233250; ---memdef-title-background-color: #1B2840; ---memdef-title-gradient-image: url('nav_fd.png'); ---memdef-proto-background-color: #19243A; ---memdef-proto-text-color: #9DB0D4; ---memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); ---memdef-doc-background-color: black; ---memdef-param-name-color: #D28757; ---memdef-template-color: #7C95C6; - -/* tables */ ---table-cell-border-color: #283A5D; ---table-header-background-color: #283A5D; ---table-header-foreground-color: #C4CFE5; - -/* labels */ ---label-background-color: #354C7B; ---label-left-top-border-color: #4665A2; ---label-right-bottom-border-color: #283A5D; ---label-foreground-color: #CCCCCC; - -/** navigation bar/tree/menu */ ---nav-background-color: #101826; ---nav-foreground-color: #364D7C; ---nav-gradient-image: url('tab_bd.png'); ---nav-gradient-hover-image: url('tab_hd.png'); ---nav-gradient-active-image: url('tab_ad.png'); ---nav-gradient-active-image-parent: url("../tab_ad.png"); ---nav-separator-image: url('tab_sd.png'); ---nav-breadcrumb-image: url('bc_sd.png'); ---nav-breadcrumb-border-color: #2A3D61; ---nav-splitbar-image: url('splitbard.png'); ---nav-font-size-level1: 13px; ---nav-font-size-level2: 10px; ---nav-font-size-level3: 9px; ---nav-text-normal-color: #B6C4DF; ---nav-text-hover-color: #DCE2EF; ---nav-text-active-color: #DCE2EF; ---nav-text-normal-shadow: 0px 1px 1px black; ---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-menu-button-color: #B6C4DF; ---nav-menu-background-color: #05070C; ---nav-menu-foreground-color: #BBBBBB; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.2); ---nav-arrow-color: #334975; ---nav-arrow-selected-color: #90A5CE; - -/* table of contents */ ---toc-background-color: #151E30; ---toc-border-color: #202E4A; ---toc-header-color: #A3B4D7; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); - -/** search field */ ---search-background-color: black; ---search-foreground-color: #C5C5C5; ---search-magnification-image: url('mag_d.svg'); ---search-magnification-select-image: url('mag_seld.svg'); ---search-active-color: #C5C5C5; ---search-filter-background-color: #101826; ---search-filter-foreground-color: #90A5CE; ---search-filter-border-color: #7C95C6; ---search-filter-highlight-text-color: #BCC9E2; ---search-filter-highlight-bg-color: #283A5D; ---search-results-background-color: #101826; ---search-results-foreground-color: #90A5CE; ---search-results-border-color: #7C95C6; ---search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; - -/** code fragments */ ---code-keyword-color: #CC99CD; ---code-type-keyword-color: #AB99CD; ---code-flow-keyword-color: #E08000; ---code-comment-color: #717790; ---code-preprocessor-color: #65CABE; ---code-string-literal-color: #7EC699; ---code-char-literal-color: #00E0F0; ---code-xml-cdata-color: #C9D1D9; ---code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #C0C0C0; ---code-vhdl-keyword-color: #CF53C9; ---code-vhdl-logic-color: #FF0000; ---code-link-color: #79C0FF; ---code-external-link-color: #79C0FF; ---fragment-foreground-color: #C9D1D9; ---fragment-background-color: black; ---fragment-border-color: #30363D; ---fragment-lineno-border-color: #30363D; ---fragment-lineno-background-color: black; ---fragment-lineno-foreground-color: #6E7681; ---fragment-lineno-link-fg-color: #6E7681; ---fragment-lineno-link-bg-color: #303030; ---fragment-lineno-link-hover-fg-color: #8E96A1; ---fragment-lineno-link-hover-bg-color: #505050; ---tooltip-foreground-color: #C9D1D9; ---tooltip-background-color: #202020; ---tooltip-border-color: #C9D1D9; ---tooltip-doc-color: #D9E1E9; ---tooltip-declaration-color: #20C348; ---tooltip-link-color: #79C0FF; ---tooltip-shadow: none; ---fold-line-color: #808080; ---fold-minus-image: url('minusd.svg'); ---fold-plus-image: url('plusd.svg'); ---fold-minus-image-relpath: url('../../minusd.svg'); ---fold-plus-image-relpath: url('../../plusd.svg'); - -/** font-family */ ---font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; ---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: Tahoma,Arial,sans-serif; ---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; ---font-family-search: Arial,Verdana,sans-serif; ---font-family-icon: Arial,Helvetica; ---font-family-tooltip: Roboto,sans-serif; - -}} -body { - background-color: var(--page-background-color); - color: var(--page-foreground-color); -} - -body, table, div, p, dl { - font-weight: 400; - font-size: 14px; - font-family: var(--font-family-normal); - line-height: 22px; -} - -/* @group Heading Levels */ - -.title { - font-weight: 400; - font-size: 14px; - font-family: var(--font-family-normal); - line-height: 28px; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h1.groupheader { - font-size: 150%; -} - -h2.groupheader { - border-bottom: 1px solid var(--group-header-separator-color); - color: var(--group-header-color); - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px var(--glow-color); -} - -dt { - font-weight: bold; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -th p.starttd, th p.intertd, th p.endtd { - font-size: 100%; - font-weight: 700; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.navtab { - padding-right: 15px; - text-align: right; - line-height: 110%; -} - -div.navtab table { - border-spacing: 0; -} - -td.navtab { - padding-right: 6px; - padding-left: 6px; -} - -td.navtabHL { - background-image: var(--nav-gradient-active-image); - background-repeat:repeat-x; - padding-right: 6px; - padding-left: 6px; -} - -td.navtabHL a, td.navtabHL a:visited { - color: var(--nav-text-hover-color); - text-shadow: var(--nav-text-hover-shadow); -} - -a.navtab { - font-weight: bold; -} - -div.qindex{ - text-align: center; - width: 100%; - line-height: 140%; - font-size: 130%; - color: var(--index-separator-color); -} - -#main-menu a:focus { - outline: auto; - z-index: 10; - position: relative; -} - -dt.alphachar{ - font-size: 180%; - font-weight: bold; -} - -.alphachar a{ - color: var(--index-header-color); -} - -.alphachar a:hover, .alphachar a:visited{ - text-decoration: none; -} - -.classindex dl { - padding: 25px; - column-count:1 -} - -.classindex dd { - display:inline-block; - margin-left: 50px; - width: 90%; - line-height: 1.15em; -} - -.classindex dl.even { - background-color: var(--index-even-item-bg-color); -} - -.classindex dl.odd { - background-color: var(--index-odd-item-bg-color); -} - -@media(min-width: 1120px) { - .classindex dl { - column-count:2 - } -} - -@media(min-width: 1320px) { - .classindex dl { - column-count:3 - } -} - - -/* @group Link Styling */ - -a { - color: var(--page-link-color); - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: var(--page-visited-link-color); -} - -a:hover { - text-decoration: underline; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: var(--code-link-color); -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: var(--code-external-link-color); -} - -a.code.hl_class { /* style for links to class names in code snippets */ } -a.code.hl_struct { /* style for links to struct names in code snippets */ } -a.code.hl_union { /* style for links to union names in code snippets */ } -a.code.hl_interface { /* style for links to interface names in code snippets */ } -a.code.hl_protocol { /* style for links to protocol names in code snippets */ } -a.code.hl_category { /* style for links to category names in code snippets */ } -a.code.hl_exception { /* style for links to exception names in code snippets */ } -a.code.hl_service { /* style for links to service names in code snippets */ } -a.code.hl_singleton { /* style for links to singleton names in code snippets */ } -a.code.hl_concept { /* style for links to concept names in code snippets */ } -a.code.hl_namespace { /* style for links to namespace names in code snippets */ } -a.code.hl_package { /* style for links to package names in code snippets */ } -a.code.hl_define { /* style for links to macro names in code snippets */ } -a.code.hl_function { /* style for links to function names in code snippets */ } -a.code.hl_variable { /* style for links to variable names in code snippets */ } -a.code.hl_typedef { /* style for links to typedef names in code snippets */ } -a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } -a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } -a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } -a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } -a.code.hl_friend { /* style for links to friend names in code snippets */ } -a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } -a.code.hl_property { /* style for links to property names in code snippets */ } -a.code.hl_event { /* style for links to event names in code snippets */ } -a.code.hl_sequence { /* style for links to sequence names in code snippets */ } -a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul { - overflow: visible; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; - list-style-type: none; -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ - overflow-y: hidden; -} - -pre.fragment { - border: 1px solid var(--fragment-border-color); - background-color: var(--fragment-background-color); - color: var(--fragment-foreground-color); - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: var(--font-family-monospace); - font-size: 105%; -} - -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - color: var(--fragment-foreground-color); - background-color: var(--fragment-background-color); - border: 1px solid var(--fragment-border-color); -} - -div.line { - font-family: var(--font-family-monospace); - font-size: 13px; - min-height: 13px; - line-height: 1.2; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: var(--glow-color); - box-shadow: 0 0 10px var(--glow-color); -} - -span.fold { - margin-left: 5px; - margin-right: 1px; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; - display: inline-block; - width: 12px; - height: 12px; - background-repeat:no-repeat; - background-position:center; -} - -span.lineno { - padding-right: 4px; - margin-right: 9px; - text-align: right; - border-right: 2px solid var(--fragment-lineno-border-color); - color: var(--fragment-lineno-foreground-color); - background-color: var(--fragment-lineno-background-color); - white-space: pre; -} -span.lineno a, span.lineno a:visited { - color: var(--fragment-lineno-link-fg-color); - background-color: var(--fragment-lineno-link-bg-color); -} - -span.lineno a:hover { - color: var(--fragment-lineno-link-hover-fg-color); - background-color: var(--fragment-lineno-link-hover-bg-color); -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - color: var(--page-foreground-color); - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -p.formulaDsp { - text-align: center; -} - -img.dark-mode-visible { - display: none; -} -img.light-mode-visible { - display: none; -} - -img.formulaDsp { - -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; - width: var(--footer-logo-width); -} - -.compoundTemplParams { - color: var(--memdecl-template-color); - font-size: 80%; - line-height: 120%; -} - -/* @group Code Colorization */ - -span.keyword { - color: var(--code-keyword-color); -} - -span.keywordtype { - color: var(--code-type-keyword-color); -} - -span.keywordflow { - color: var(--code-flow-keyword-color); -} - -span.comment { - color: var(--code-comment-color); -} - -span.preprocessor { - color: var(--code-preprocessor-color); -} - -span.stringliteral { - color: var(--code-string-literal-color); -} - -span.charliteral { - color: var(--code-char-literal-color); -} - -span.xmlcdata { - color: var(--code-xml-cdata-color); -} - -span.vhdldigit { - color: var(--code-vhdl-digit-color); -} - -span.vhdlchar { - color: var(--code-vhdl-char-color); -} - -span.vhdlkeyword { - color: var(--code-vhdl-keyword-color); -} - -span.vhdllogic { - color: var(--code-vhdl-logic-color); -} - -blockquote { - background-color: var(--blockquote-background-color); - border-left: 2px solid var(--blockquote-border-color); - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid var(--table-cell-border-color); -} - -th.dirtab { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid var(--separator-color); -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: var(--glow-color); - box-shadow: 0 0 15px var(--glow-color); -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: var(--memdecl-background-color); - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: var(--memdecl-foreground-color); -} - -.memSeparator { - border-bottom: 1px solid var(--memdecl-separator-color); - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight, .memTemplItemRight { - width: 100%; -} - -.memTemplParams { - color: var(--memdecl-template-color); - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: var(--memdef-title-gradient-image); - background-repeat: repeat-x; - background-color: var(--memdef-title-background-color); - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: var(--memdef-template-color); - font-weight: normal; - margin-left: 9px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px var(--glow-color); -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - padding: 6px 0px 6px 0px; - color: var(--memdef-proto-text-color); - font-weight: bold; - text-shadow: var(--memdef-proto-text-shadow); - background-color: var(--memdef-proto-background-color); - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; -} - -.overload { - font-family: var(--font-family-monospace); - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - padding: 6px 10px 2px 10px; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: var(--memdef-doc-background-color); - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: var(--memdef-param-name-color); - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: var(--font-family-monospace); - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: var(--label-background-color); - border-top:1px solid var(--label-left-top-border-color); - border-left:1px solid var(--label-left-top-border-color); - border-right:1px solid var(--label-right-bottom-border-color); - border-bottom:1px solid var(--label-right-bottom-border-color); - text-shadow: none; - color: var(--label-foreground-color); - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid var(--directory-separator-color); - border-bottom: 1px solid var(--directory-separator-color); - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.odd { - padding-left: 6px; - background-color: var(--index-odd-item-bg-color); -} - -.directory tr.even { - padding-left: 6px; - background-color: var(--index-even-item-bg-color); -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: var(--page-link-color); -} - -.arrow { - color: var(--nav-arrow-color); - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: var(--font-family-icon); - line-height: normal; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: var(--icon-background-color); - color: var(--icon-foreground-color); - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-folder-open-image); - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-folder-closed-image); - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-doc-image); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: var(--footer-foreground-color); -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid var(--table-cell-border-color); - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - margin-bottom: 10px; - border: 1px solid var(--memdef-border-color); - border-spacing: 0px; - border-radius: 4px; - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid var(--memdef-border-color); - border-bottom: 1px solid var(--memdef-border-color); - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid var(--memdef-border-color); -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image: var(--memdef-title-gradient-image); - background-repeat:repeat-x; - background-color: var(--memdef-title-background-color); - font-size: 90%; - color: var(--memdef-proto-text-color); - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid var(--memdef-border-color); -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: var(--nav-gradient-image); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image: var(--nav-gradient-image); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:var(--nav-text-normal-color); - border:solid 1px var(--nav-breadcrumb-border-color); - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:var(--nav-breadcrumb-image); - background-repeat:no-repeat; - background-position:right; - color: var(--nav-foreground-color); -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: var(--nav-text-normal-color); - font-family: var(--font-family-nav); - text-shadow: var(--nav-text-normal-shadow); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color: var(--nav-text-hover-color); - text-shadow: var(--nav-text-hover-shadow); -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color: var(--footer-foreground-color); - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image: var(--header-gradient-image); - background-repeat:repeat-x; - background-color: var(--header-background-color); - margin: 0px; - border-bottom: 1px solid var(--header-separator-color); -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectrow -{ - height: 56px; -} - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; - padding-left: 0.5em; -} - -#projectname -{ - font-size: 200%; - font-family: var(--font-family-title); - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font-size: 90%; - font-family: var(--font-family-title); - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font-size: 50%; - font-family: 50% var(--font-family-title); - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid var(--title-separator-color); - background-color: var(--title-background-color); -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:var(--citation-label-color); - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; - text-align:right; - width:52px; -} - -dl.citelist dd { - margin:2px 0 2px 72px; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: var(--toc-background-color); - border: 1px solid var(--toc-border-color); - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -div.toc li { - background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; - font: 10px/1.2 var(--font-family-toc); - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 var(--font-family-toc); - color: var(--toc-header-color); - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 15px; -} - -div.toc li.level4 { - margin-left: 15px; -} - -span.emoji { - /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html - * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; - */ -} - -span.obfuscator { - display: none; -} - -.inherit_header { - font-weight: bold; - color: var(--inherit-header-color); - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - /*white-space: nowrap;*/ - color: var(--tooltip-foreground-color); - background-color: var(--tooltip-background-color); - border: 1px solid var(--tooltip-border-color); - border-radius: 4px 4px 4px 4px; - box-shadow: var(--tooltip-shadow); - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: var(--tooltip-doc-color); - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip a { - color: var(--tooltip-link-color); -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: var(--tooltip-declaration-color); -} - -#powerTip div { - margin: 0px; - padding: 0px; - font-size: 12px; - font-family: var(--font-family-tooltip); - line-height: 16px; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: var(--tooltip-background-color); - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { - border-top-color: var(--tooltip-border-color); - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: var(--tooltip-background-color); - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: var(--tooltip-border-color); - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: var(--tooltip-border-color); - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: var(--tooltip-border-color); - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: var(--tooltip-border-color); - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: var(--tooltip-border-color); - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid var(--table-cell-border-color); - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -tt, code, kbd, samp -{ - display: inline-block; -} -/* @end */ - -u { - text-decoration: underline; -} - -details>summary { - list-style-type: none; -} - -details > summary::-webkit-details-marker { - display: none; -} - -details>summary::before { - content: "\25ba"; - padding-right:4px; - font-size: 80%; -} - -details[open]>summary::before { - content: "\25bc"; - padding-right:4px; - font-size: 80%; -} - -body { - scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); -} - -::-webkit-scrollbar { - background-color: var(--scrollbar-background-color); - height: 12px; - width: 12px; -} -::-webkit-scrollbar-thumb { - border-radius: 6px; - box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); - border: solid 2px transparent; -} -::-webkit-scrollbar-corner { - background-color: var(--scrollbar-background-color); -} - diff --git a/doxygen.svg b/doxygen.svg deleted file mode 100644 index 79a7635..0000000 --- a/doxygen.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dynsections.js b/dynsections.js deleted file mode 100644 index b73c828..0000000 --- a/dynsections.js +++ /dev/null @@ -1,192 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); - $('table.directory tr'). - removeClass('odd').filter(':visible:odd').addClass('odd'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l'); - // add vertical lines to other rows - $('span[class=lineno]').not(':eq(0)').append(''); - // add toggle controls to lines with fold divs - $('div[class=foldopen]').each(function() { - // extract specific id to use - var id = $(this).attr('id').replace('foldopen',''); - // extract start and end foldable fragment attributes - var start = $(this).attr('data-start'); - var end = $(this).attr('data-end'); - // replace normal fold span with controls for the first line of a foldable fragment - $(this).find('span[class=fold]:first').replaceWith(''); - // append div for folded (closed) representation - $(this).after(''); - // extract the first line from the "open" section to represent closed content - var line = $(this).children().first().clone(); - // remove any glow that might still be active on the original line - $(line).removeClass('glow'); - if (start) { - // if line already ends with a start marker (e.g. trailing {), remove it - $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); - } - // replace minus with plus symbol - $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); - // append ellipsis - $(line).append(' '+start+''+end); - // insert constructed line into closed div - $('#foldclosed'+id).html(line); - }); -} - -/* @license-end */ diff --git a/files.html b/files.html deleted file mode 100644 index 6765f29..0000000 --- a/files.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -StencilStream: File List - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
File List
-
-
-
Here is a list of all files with brief descriptions:
-
- - - - diff --git a/folderclosed.svg b/folderclosed.svg deleted file mode 100644 index b04bed2..0000000 --- a/folderclosed.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/folderclosedd.svg b/folderclosedd.svg deleted file mode 100644 index 52f0166..0000000 --- a/folderclosedd.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/folderopen.svg b/folderopen.svg deleted file mode 100644 index f6896dd..0000000 --- a/folderopen.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - diff --git a/folderopend.svg b/folderopend.svg deleted file mode 100644 index 2d1f06e..0000000 --- a/folderopend.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/functions.html b/functions.html deleted file mode 100644 index 2bfd6f8..0000000 --- a/functions.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - -StencilStream: Class Members - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Here is a list of all class members with links to the classes they belong to:
- -

- a -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- g -

- - -

- h -

- - -

- i -

- - -

- k -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

-
- - - - diff --git a/functions_func.html b/functions_func.html deleted file mode 100644 index ee8d88d..0000000 --- a/functions_func.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -StencilStream: Class Members - Functions - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Here is a list of all functions with links to the classes they belong to:
- -

- a -

- - -

- c -

- - -

- g -

- - -

- k -

- - -

- l -

- - -

- m -

- - -

- o -

- - -

- s -

-
- - - - diff --git a/functions_type.html b/functions_type.html deleted file mode 100644 index 7248766..0000000 --- a/functions_type.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -StencilStream: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Here is a list of all typedefs with links to the classes they belong to:
-
- - - - diff --git a/functions_vars.html b/functions_vars.html deleted file mode 100644 index e07196b..0000000 --- a/functions_vars.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - -StencilStream: Class Members - Variables - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Here is a list of all variables with links to the classes they belong to:
- -

- b -

- - -

- c -

- - -

- d -

- - -

- g -

- - -

- h -

- - -

- i -

- - -

- n -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- v -

-
- - - - diff --git a/globals.html b/globals.html deleted file mode 100644 index d2d7802..0000000 --- a/globals.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -StencilStream: File Members - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Here is a list of all file members with links to the files they belong to:
-
- - - - diff --git a/globals_defs.html b/globals_defs.html deleted file mode 100644 index b40e75d..0000000 --- a/globals_defs.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -StencilStream: File Members - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Here is a list of all macros with links to the files they belong to:
-
- - - - diff --git a/globals_vars.html b/globals_vars.html deleted file mode 100644 index 739891d..0000000 --- a/globals_vars.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -StencilStream: File Members - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Here is a list of all variables with links to the files they belong to:
-
- - - - diff --git a/graph_legend.html b/graph_legend.html deleted file mode 100644 index 7573af3..0000000 --- a/graph_legend.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -StencilStream: Graph Legend - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Graph Legend
-
-
-

This page explains how to interpret the graphs that are generated by doxygen.

-

Consider the following example:

/*! Invisible class because of truncation */
-
class Invisible { };
-
-
/*! Truncated class, inheritance relation is hidden */
-
class Truncated : public Invisible { };
-
-
/* Class not documented with doxygen comments */
-
class Undocumented { };
-
-
/*! Class that is inherited using public inheritance */
-
class PublicBase : public Truncated { };
-
-
/*! A template class */
-
template<class T> class Templ { };
-
-
/*! Class that is inherited using protected inheritance */
-
class ProtectedBase { };
-
-
/*! Class that is inherited using private inheritance */
-
class PrivateBase { };
-
-
/*! Class that is used by the Inherited class */
-
class Used { };
-
-
/*! Super class that inherits a number of other classes */
-
class Inherited : public PublicBase,
-
protected ProtectedBase,
-
private PrivateBase,
-
public Undocumented,
-
public Templ<int>
-
{
-
private:
-
Used *m_usedClass;
-
};
-

This will result in the following graph:

-

The boxes in the above graph have the following meaning:

- -

The arrows have the following meaning:

- -
- - - - diff --git a/graph_legend.md5 b/graph_legend.md5 deleted file mode 100644 index 1bc6c74..0000000 --- a/graph_legend.md5 +++ /dev/null @@ -1 +0,0 @@ -de6dfe8ad97023d8b34bd1305542c349 \ No newline at end of file diff --git a/graph_legend.png b/graph_legend.png deleted file mode 100644 index 9fd8831..0000000 Binary files a/graph_legend.png and /dev/null differ diff --git a/hierarchy.html b/hierarchy.html deleted file mode 100644 index d4c44c5..0000000 --- a/hierarchy.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -StencilStream: Class Hierarchy - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Class Hierarchy
-
-
-
-

Go to the graphical class hierarchy

-This inheritance list is sorted roughly, but not completely, alphabetically:
-
[detail level 12]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Cstencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >A helper class to support the double-subscript idiom for GridAccessors
 Cstencil::BaseTransitionFunctionBase class for transition functions that disables advanced features
 Cstencil::GenericID< T >A generic, two-dimensional index
 Cstencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >
 Cstencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >
 Cstencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >
 Cstencil::cpu::Grid< Cell >A grid class for the CPU backend
 Cstencil::monotile::Grid< Cell, word_size >A grid class for the monotile architecture
 Cstencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >A grid class for the tiling architecture
 Cstencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >An accessor for the monotile grid
 Cstencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >An accessor for the monotile grid
 Csycl::host_accessor
 Cstencil::cpu::Grid< Cell >::GridAccessor< access_mode >An accessor for the grid
 Cstencil::tdv::single_pass::InlineStrategyA TDV implementation strategy that inlines the TDV function into the transition function
 Cstencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument
 Cstencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument
 Cstencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument
 Cstencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState
 Cstencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState
 Cstencil::Padded< T >A container with padding to the next power of two
 Cstencil::cpu::StencilUpdate< F >::ParamsParameters for the stencil updater
 Cstencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::ParamsParameters for the stencil updater
 Cstencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::ParamsParameters for the stencil updater
 Cstencil::tdv::single_pass::PrecomputeOnDeviceStrategyA TDV implementation strategy that precomputes TDVs on the device
 Cstencil::tdv::single_pass::PrecomputeOnHostStrategyA TDV implementation strategy that precomputes TDVs on the host
 Cstencil::Stencil< Cell, stencil_radius, TimeDependentValue >The stencil buffer
 Cstencil::cpu::StencilUpdate< F >A grid updater that applies an iterative stencil code to a grid
 Cstencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >A grid updater that applies an iterative stencil code to a grid
 Cstencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >A grid updater that applies an iterative stencil code to a grid
 Cstencil::monotile::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, max_grid_width, max_grid_height, in_pipe, out_pipe >The execution kernel of the monotile architecture
 Cstencil::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
-
-
- - - - diff --git a/index.html b/index.html deleted file mode 100644 index 1d6ebfa..0000000 --- a/index.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - -StencilStream: StencilStream - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
StencilStream
-
-
-

-

StencilStream is a SYCL-based simulation framework for iterative stencil codes, primarily targeting FPGAs. With StencilStream, application developers and domain scientists can merely write down their stencil code definition and obtain a fully functional and optimized, FPGA-accelerated application.

-

-Design Goals

-

There are many stencil acceleration frameworks available, even for FPGAs. However, many of them use customized toolchains to support domain-specific languages, which makes them both hard to use for real-world applications and hard to extend. Therefore, StencilStream uses the SYCL/oneAPI framework and C++ templates, so that it is:

-
    -
  • Simple: The first steps don't take much and one can build and verify a simple app very quickly.
  • -
  • Versatile: Actual applications have special needs and properties, and StencilStream supports them.
  • -
  • Performant: Domain Scientists usually aren't FPGA experts or performance engineers. With StencilStream, they don't have to be and still get highly performant applications.
  • -
-

-Examples

-

We have implemented multiple example applications. One is a simple sketch to show how to get started, one is a benchmark, and two are proper applications that use StencilStream's advanced features. They are presented in the following:

-

-Conway's Game of Life

-

Our implementation of Conway's Game of Life is found in the subfolder examples/conway. It reads in the current state of a grid from standard-in, computes a requested number of iterations, and then writes it out again.

-

-HotSpot

-

This our implementation of the HotSpot benchmark from the Rodinia Benchmark Suite, found in the subfolder examples/hotspot. It achieves an arithmetic throughput of more than 1 TFLOPS on a Bittware 520N accelerator using an Intel Stratic 10 X 2800 FPGA.

-

-FDTD

-

The FDTD application in examples/fdtd is used to simulate the behavior of electro-magnetic waves within micro-cavities. The computed experiment is highly configurable, using configuration files written in JSON. Computationally, it is interesting because it utilizes StencilStream's time-dependent value feature to precompute the source wave and the sub-iterations feature to alternate between a electric and a magnetic field update. Below, you find a rendering of the final magnetic field, computed for the "Max Grid" experiment:

-
- -
-Magnetic field within a micro-cavity, computed by the FDTD app
-

-Convection

-

The convection app, found in examples/convection, simulates the convection within Earth's Mantle. It is a port of an example app for the ParallelStencil.jl framework and can also be configured using a JSON file. Below, you find the animated output of the default experiment.

-
- -
-A video showing convection, computed by the Convection app
-

-Performance & Hardware Usage

- - - - - - - - - - - - - - - - - - - - - - - -
Metric HotSpot (Monotile) HotSpot (Tiling) FDTD (Monotile) FDTD (Tiling) Convection (Monotile)
Replications (Total PEs) 280 (280) 224 (224) 100 (200) 95 (190) 8 (24)
Grid Size (height × width) 720 × 1024 16384 × 16384 512 × 512 4608 × 4608 512 × 1536
No. of Iterations 280 1120 204580 184911 100
Modeled Update Rate 73.51 GCells/s 48.23 GCells/s 21.79 GCells/s 14.30 GCells/s 1.26 GCells/s
Measured Update Rate 73.40 GCells/s 37.54 GCells/s 21.09 GCells/s 14.20 GCells/s 0.83 GCells/s
Throughput [GFLOPS] 1085.97 563.11 421.80 284.00 54.78
Clock Frequency 337.50 MHz 317.50 MHz 308.33 MHz 284.38 MHz 335.00 MHz
ALMs (% of 706k) 426k (60.4%) 481k (68.1%) 304k (43.2%) 444k (62.9%) 462k (65.5%)
BRAMs (% of 9094) 3415 (37.6%) 6025 (66.3%) 4073 (44.8%) 6780 (74.6%) 2848 (31.3%)
DSPs (% of 4713) 2522 (53.5%) 2240 (47.5%) 1725 (36.7%) 1734 (38.8%) 1031 (22.1%)
-

All applications were built and benchmarked at commit 5d82883fe3302f6bbf7a1adcc353ed464dd1d35e, using Intel OneAPI 23.2.0, Boost 1.81.0, and the Bittware 520N HPC board support package 20.4.0.

-

-Licensing & Citing

-

StencilStream is published under MIT license, as found in LICENSE.md. When using StencilStream for a scientific publication, please cite the following:

-
@inproceedings{opdenhoevel2024stencilstream,
-
author = {Opdenhövel, Jan-Oliver and Alt, Christoph and Plessl, Christian and Kenter, Tobias},
-
title = {StencilStream: A SYCL-based Stencil Simulation Framework Targeting FPGAs},
-
booktitle = {Proc. Int. Conf. on Field Programmable Logic and Applications (FPL)},
-
year = {2024}
-
}
-
-
- - - - diff --git a/inherit_graph_0.map b/inherit_graph_0.map deleted file mode 100644 index 95a618c..0000000 --- a/inherit_graph_0.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_0.md5 b/inherit_graph_0.md5 deleted file mode 100644 index 2d4dcde..0000000 --- a/inherit_graph_0.md5 +++ /dev/null @@ -1 +0,0 @@ -1ca4a4c000ef9e0d13f3c8e3f50baa3a \ No newline at end of file diff --git a/inherit_graph_0.png b/inherit_graph_0.png deleted file mode 100644 index f324bda..0000000 Binary files a/inherit_graph_0.png and /dev/null differ diff --git a/inherit_graph_1.map b/inherit_graph_1.map deleted file mode 100644 index b3705d8..0000000 --- a/inherit_graph_1.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_1.md5 b/inherit_graph_1.md5 deleted file mode 100644 index e3dbbb2..0000000 --- a/inherit_graph_1.md5 +++ /dev/null @@ -1 +0,0 @@ -930d6987acafac79fe9b0d088b0e4655 \ No newline at end of file diff --git a/inherit_graph_1.png b/inherit_graph_1.png deleted file mode 100644 index c62525d..0000000 Binary files a/inherit_graph_1.png and /dev/null differ diff --git a/inherit_graph_10.map b/inherit_graph_10.map deleted file mode 100644 index e2729bd..0000000 --- a/inherit_graph_10.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_10.md5 b/inherit_graph_10.md5 deleted file mode 100644 index 536d4f7..0000000 --- a/inherit_graph_10.md5 +++ /dev/null @@ -1 +0,0 @@ -a39e7073965dd65d236f5b187e2217f2 \ No newline at end of file diff --git a/inherit_graph_10.png b/inherit_graph_10.png deleted file mode 100644 index c2a8542..0000000 Binary files a/inherit_graph_10.png and /dev/null differ diff --git a/inherit_graph_11.map b/inherit_graph_11.map deleted file mode 100644 index 8210a8a..0000000 --- a/inherit_graph_11.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_11.md5 b/inherit_graph_11.md5 deleted file mode 100644 index 6ec5297..0000000 --- a/inherit_graph_11.md5 +++ /dev/null @@ -1 +0,0 @@ -6727d04c1b7783b654088db97edd7a65 \ No newline at end of file diff --git a/inherit_graph_11.png b/inherit_graph_11.png deleted file mode 100644 index c1b8866..0000000 Binary files a/inherit_graph_11.png and /dev/null differ diff --git a/inherit_graph_12.map b/inherit_graph_12.map deleted file mode 100644 index 0b2ba75..0000000 --- a/inherit_graph_12.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_12.md5 b/inherit_graph_12.md5 deleted file mode 100644 index a631556..0000000 --- a/inherit_graph_12.md5 +++ /dev/null @@ -1 +0,0 @@ -c2966d41619f008c32a784a831860231 \ No newline at end of file diff --git a/inherit_graph_12.png b/inherit_graph_12.png deleted file mode 100644 index 199e4db..0000000 Binary files a/inherit_graph_12.png and /dev/null differ diff --git a/inherit_graph_13.map b/inherit_graph_13.map deleted file mode 100644 index ecc7c7e..0000000 --- a/inherit_graph_13.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_13.md5 b/inherit_graph_13.md5 deleted file mode 100644 index 0d41502..0000000 --- a/inherit_graph_13.md5 +++ /dev/null @@ -1 +0,0 @@ -4bbbc5221259c4ddb33dbf32192f2d3c \ No newline at end of file diff --git a/inherit_graph_13.png b/inherit_graph_13.png deleted file mode 100644 index a33bf1e..0000000 Binary files a/inherit_graph_13.png and /dev/null differ diff --git a/inherit_graph_14.map b/inherit_graph_14.map deleted file mode 100644 index af96d49..0000000 --- a/inherit_graph_14.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_14.md5 b/inherit_graph_14.md5 deleted file mode 100644 index eb8a3b0..0000000 --- a/inherit_graph_14.md5 +++ /dev/null @@ -1 +0,0 @@ -56d23ed5e9be834bb31e5e7ae6963dfd \ No newline at end of file diff --git a/inherit_graph_14.png b/inherit_graph_14.png deleted file mode 100644 index c107641..0000000 Binary files a/inherit_graph_14.png and /dev/null differ diff --git a/inherit_graph_15.map b/inherit_graph_15.map deleted file mode 100644 index 282fc01..0000000 --- a/inherit_graph_15.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_15.md5 b/inherit_graph_15.md5 deleted file mode 100644 index 0c1661a..0000000 --- a/inherit_graph_15.md5 +++ /dev/null @@ -1 +0,0 @@ -5f4e4723042d457fd83151e2faf3b47a \ No newline at end of file diff --git a/inherit_graph_15.png b/inherit_graph_15.png deleted file mode 100644 index 432e07e..0000000 Binary files a/inherit_graph_15.png and /dev/null differ diff --git a/inherit_graph_16.map b/inherit_graph_16.map deleted file mode 100644 index d2e0e7f..0000000 --- a/inherit_graph_16.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_16.md5 b/inherit_graph_16.md5 deleted file mode 100644 index 21f5123..0000000 --- a/inherit_graph_16.md5 +++ /dev/null @@ -1 +0,0 @@ -da925711be6966476f124b037e8a90ef \ No newline at end of file diff --git a/inherit_graph_16.png b/inherit_graph_16.png deleted file mode 100644 index 2c8bd7a..0000000 Binary files a/inherit_graph_16.png and /dev/null differ diff --git a/inherit_graph_17.map b/inherit_graph_17.map deleted file mode 100644 index 07360ca..0000000 --- a/inherit_graph_17.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_17.md5 b/inherit_graph_17.md5 deleted file mode 100644 index 1d75da8..0000000 --- a/inherit_graph_17.md5 +++ /dev/null @@ -1 +0,0 @@ -2a28e3ac578248365ed11c3bd644db3e \ No newline at end of file diff --git a/inherit_graph_17.png b/inherit_graph_17.png deleted file mode 100644 index c5274af..0000000 Binary files a/inherit_graph_17.png and /dev/null differ diff --git a/inherit_graph_18.map b/inherit_graph_18.map deleted file mode 100644 index 396799f..0000000 --- a/inherit_graph_18.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_18.md5 b/inherit_graph_18.md5 deleted file mode 100644 index 457cd70..0000000 --- a/inherit_graph_18.md5 +++ /dev/null @@ -1 +0,0 @@ -750b8c55aaeebb0e728b30896232b21d \ No newline at end of file diff --git a/inherit_graph_18.png b/inherit_graph_18.png deleted file mode 100644 index 35c5a82..0000000 Binary files a/inherit_graph_18.png and /dev/null differ diff --git a/inherit_graph_19.map b/inherit_graph_19.map deleted file mode 100644 index 51864b4..0000000 --- a/inherit_graph_19.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_19.md5 b/inherit_graph_19.md5 deleted file mode 100644 index 946f7ea..0000000 --- a/inherit_graph_19.md5 +++ /dev/null @@ -1 +0,0 @@ -2ac2b5f78581cc2c38423daa654bc446 \ No newline at end of file diff --git a/inherit_graph_19.png b/inherit_graph_19.png deleted file mode 100644 index 02395eb..0000000 Binary files a/inherit_graph_19.png and /dev/null differ diff --git a/inherit_graph_2.map b/inherit_graph_2.map deleted file mode 100644 index 72252ec..0000000 --- a/inherit_graph_2.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_2.md5 b/inherit_graph_2.md5 deleted file mode 100644 index b8cbcaa..0000000 --- a/inherit_graph_2.md5 +++ /dev/null @@ -1 +0,0 @@ -eaf972b57973d5b87f9518e3b7dc7058 \ No newline at end of file diff --git a/inherit_graph_2.png b/inherit_graph_2.png deleted file mode 100644 index 236290a..0000000 Binary files a/inherit_graph_2.png and /dev/null differ diff --git a/inherit_graph_20.map b/inherit_graph_20.map deleted file mode 100644 index b7f9f4f..0000000 --- a/inherit_graph_20.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_20.md5 b/inherit_graph_20.md5 deleted file mode 100644 index dc242c6..0000000 --- a/inherit_graph_20.md5 +++ /dev/null @@ -1 +0,0 @@ -e55394175538d0135087fa96b809fd41 \ No newline at end of file diff --git a/inherit_graph_20.png b/inherit_graph_20.png deleted file mode 100644 index 27e16a4..0000000 Binary files a/inherit_graph_20.png and /dev/null differ diff --git a/inherit_graph_21.map b/inherit_graph_21.map deleted file mode 100644 index 476f324..0000000 --- a/inherit_graph_21.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_21.md5 b/inherit_graph_21.md5 deleted file mode 100644 index 22bc9fa..0000000 --- a/inherit_graph_21.md5 +++ /dev/null @@ -1 +0,0 @@ -86f1c8c1d60d85b8dd901cd7baee9f70 \ No newline at end of file diff --git a/inherit_graph_21.png b/inherit_graph_21.png deleted file mode 100644 index 49f838d..0000000 Binary files a/inherit_graph_21.png and /dev/null differ diff --git a/inherit_graph_22.map b/inherit_graph_22.map deleted file mode 100644 index 87c413e..0000000 --- a/inherit_graph_22.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_22.md5 b/inherit_graph_22.md5 deleted file mode 100644 index 90b75f7..0000000 --- a/inherit_graph_22.md5 +++ /dev/null @@ -1 +0,0 @@ -1f5c0a0b4caa2dc1fa347a640b2620ff \ No newline at end of file diff --git a/inherit_graph_22.png b/inherit_graph_22.png deleted file mode 100644 index 118b433..0000000 Binary files a/inherit_graph_22.png and /dev/null differ diff --git a/inherit_graph_23.map b/inherit_graph_23.map deleted file mode 100644 index ccd81bf..0000000 --- a/inherit_graph_23.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_23.md5 b/inherit_graph_23.md5 deleted file mode 100644 index 0a0f6e7..0000000 --- a/inherit_graph_23.md5 +++ /dev/null @@ -1 +0,0 @@ -f6afb8d873adb178fd36e471f8599895 \ No newline at end of file diff --git a/inherit_graph_23.png b/inherit_graph_23.png deleted file mode 100644 index 880c942..0000000 Binary files a/inherit_graph_23.png and /dev/null differ diff --git a/inherit_graph_24.map b/inherit_graph_24.map deleted file mode 100644 index d33c42b..0000000 --- a/inherit_graph_24.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_24.md5 b/inherit_graph_24.md5 deleted file mode 100644 index 4b52bff..0000000 --- a/inherit_graph_24.md5 +++ /dev/null @@ -1 +0,0 @@ -994b27aa8e07737b97ab996ef4783187 \ No newline at end of file diff --git a/inherit_graph_24.png b/inherit_graph_24.png deleted file mode 100644 index 4816ecc..0000000 Binary files a/inherit_graph_24.png and /dev/null differ diff --git a/inherit_graph_25.map b/inherit_graph_25.map deleted file mode 100644 index 6830857..0000000 --- a/inherit_graph_25.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_25.md5 b/inherit_graph_25.md5 deleted file mode 100644 index 61ddec7..0000000 --- a/inherit_graph_25.md5 +++ /dev/null @@ -1 +0,0 @@ -10339f74556b6e6ef88607f09ccaec37 \ No newline at end of file diff --git a/inherit_graph_25.png b/inherit_graph_25.png deleted file mode 100644 index 553953c..0000000 Binary files a/inherit_graph_25.png and /dev/null differ diff --git a/inherit_graph_26.map b/inherit_graph_26.map deleted file mode 100644 index 9f5a908..0000000 --- a/inherit_graph_26.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_26.md5 b/inherit_graph_26.md5 deleted file mode 100644 index acda755..0000000 --- a/inherit_graph_26.md5 +++ /dev/null @@ -1 +0,0 @@ -8de8294a44c2e103384c227780091978 \ No newline at end of file diff --git a/inherit_graph_26.png b/inherit_graph_26.png deleted file mode 100644 index 1dd986f..0000000 Binary files a/inherit_graph_26.png and /dev/null differ diff --git a/inherit_graph_27.map b/inherit_graph_27.map deleted file mode 100644 index 00aad57..0000000 --- a/inherit_graph_27.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_27.md5 b/inherit_graph_27.md5 deleted file mode 100644 index f40a85e..0000000 --- a/inherit_graph_27.md5 +++ /dev/null @@ -1 +0,0 @@ -49dc4f6e3697ec2005ad792f290992d9 \ No newline at end of file diff --git a/inherit_graph_27.png b/inherit_graph_27.png deleted file mode 100644 index a53a702..0000000 Binary files a/inherit_graph_27.png and /dev/null differ diff --git a/inherit_graph_28.map b/inherit_graph_28.map deleted file mode 100644 index 1a4e651..0000000 --- a/inherit_graph_28.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_28.md5 b/inherit_graph_28.md5 deleted file mode 100644 index c7b9d21..0000000 --- a/inherit_graph_28.md5 +++ /dev/null @@ -1 +0,0 @@ -0b695e8be756126e1d78dc647c266cef \ No newline at end of file diff --git a/inherit_graph_28.png b/inherit_graph_28.png deleted file mode 100644 index 57fb84e..0000000 Binary files a/inherit_graph_28.png and /dev/null differ diff --git a/inherit_graph_29.map b/inherit_graph_29.map deleted file mode 100644 index cc15e0e..0000000 --- a/inherit_graph_29.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/inherit_graph_29.md5 b/inherit_graph_29.md5 deleted file mode 100644 index 0554b1f..0000000 --- a/inherit_graph_29.md5 +++ /dev/null @@ -1 +0,0 @@ -b2f2442bed9220fe9c4292fdb687eeed \ No newline at end of file diff --git a/inherit_graph_29.png b/inherit_graph_29.png deleted file mode 100644 index de46657..0000000 Binary files a/inherit_graph_29.png and /dev/null differ diff --git a/inherit_graph_3.map b/inherit_graph_3.map deleted file mode 100644 index 8c0b114..0000000 --- a/inherit_graph_3.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_3.md5 b/inherit_graph_3.md5 deleted file mode 100644 index 978182c..0000000 --- a/inherit_graph_3.md5 +++ /dev/null @@ -1 +0,0 @@ -65ceb51932929a4d745de39449e3a4dd \ No newline at end of file diff --git a/inherit_graph_3.png b/inherit_graph_3.png deleted file mode 100644 index 3e50c1b..0000000 Binary files a/inherit_graph_3.png and /dev/null differ diff --git a/inherit_graph_4.map b/inherit_graph_4.map deleted file mode 100644 index 19744da..0000000 --- a/inherit_graph_4.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_4.md5 b/inherit_graph_4.md5 deleted file mode 100644 index 64e3dda..0000000 --- a/inherit_graph_4.md5 +++ /dev/null @@ -1 +0,0 @@ -b063ecdb17ababa1700feca37ded9de4 \ No newline at end of file diff --git a/inherit_graph_4.png b/inherit_graph_4.png deleted file mode 100644 index bd1dbeb..0000000 Binary files a/inherit_graph_4.png and /dev/null differ diff --git a/inherit_graph_5.map b/inherit_graph_5.map deleted file mode 100644 index 23fb9b1..0000000 --- a/inherit_graph_5.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_5.md5 b/inherit_graph_5.md5 deleted file mode 100644 index e7d4128..0000000 --- a/inherit_graph_5.md5 +++ /dev/null @@ -1 +0,0 @@ -67f7c21bd11dd8cdb7eaf23a0832cebc \ No newline at end of file diff --git a/inherit_graph_5.png b/inherit_graph_5.png deleted file mode 100644 index 8c432c6..0000000 Binary files a/inherit_graph_5.png and /dev/null differ diff --git a/inherit_graph_6.map b/inherit_graph_6.map deleted file mode 100644 index a6306b4..0000000 --- a/inherit_graph_6.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_6.md5 b/inherit_graph_6.md5 deleted file mode 100644 index 501cf4a..0000000 --- a/inherit_graph_6.md5 +++ /dev/null @@ -1 +0,0 @@ -78fafd03f2f7657abf44252e5d181bae \ No newline at end of file diff --git a/inherit_graph_6.png b/inherit_graph_6.png deleted file mode 100644 index 8db495f..0000000 Binary files a/inherit_graph_6.png and /dev/null differ diff --git a/inherit_graph_7.map b/inherit_graph_7.map deleted file mode 100644 index 5472a06..0000000 --- a/inherit_graph_7.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_7.md5 b/inherit_graph_7.md5 deleted file mode 100644 index 4c268bb..0000000 --- a/inherit_graph_7.md5 +++ /dev/null @@ -1 +0,0 @@ -0859834b066ce094d0ced5c5bfb97a75 \ No newline at end of file diff --git a/inherit_graph_7.png b/inherit_graph_7.png deleted file mode 100644 index 45c96d2..0000000 Binary files a/inherit_graph_7.png and /dev/null differ diff --git a/inherit_graph_8.map b/inherit_graph_8.map deleted file mode 100644 index cb9d260..0000000 --- a/inherit_graph_8.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_8.md5 b/inherit_graph_8.md5 deleted file mode 100644 index dd06228..0000000 --- a/inherit_graph_8.md5 +++ /dev/null @@ -1 +0,0 @@ -2632785e0ac85e9e0c17cbc3f67154b4 \ No newline at end of file diff --git a/inherit_graph_8.png b/inherit_graph_8.png deleted file mode 100644 index 69e3d70..0000000 Binary files a/inherit_graph_8.png and /dev/null differ diff --git a/inherit_graph_9.map b/inherit_graph_9.map deleted file mode 100644 index ec02e9a..0000000 --- a/inherit_graph_9.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/inherit_graph_9.md5 b/inherit_graph_9.md5 deleted file mode 100644 index 13568d8..0000000 --- a/inherit_graph_9.md5 +++ /dev/null @@ -1 +0,0 @@ -b20185524d820bf43063d26ba06f2950 \ No newline at end of file diff --git a/inherit_graph_9.png b/inherit_graph_9.png deleted file mode 100644 index b84b054..0000000 Binary files a/inherit_graph_9.png and /dev/null differ diff --git a/inherits.html b/inherits.html deleted file mode 100644 index 4f6773d..0000000 --- a/inherits.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - -StencilStream: Class Hierarchy - - - - - - - - - -
-
- - - - - - - -
-
StencilStream v3.0.0 -
-
SYCL-based Stencil Simulation Framework Targeting FPGAs
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Class Hierarchy
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - - - -
-
- - - - diff --git a/jquery.js b/jquery.js deleted file mode 100644 index 1dffb65..0000000 --- a/jquery.js +++ /dev/null @@ -1,34 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/logo for doxygen.png b/logo for doxygen.png deleted file mode 100755 index 959d94e..0000000 Binary files a/logo for doxygen.png and /dev/null differ diff --git a/menu.js b/menu.js deleted file mode 100644 index b0b2693..0000000 --- a/menu.js +++ /dev/null @@ -1,136 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+='
    '; - for (var i in data.children) { - var url; - var link; - link = data.children[i].url; - if (link.substring(0,1)=='^') { - url = link.substring(1); - } else { - url = relPath+link; - } - result+='
  • '+ - data.children[i].text+''+ - makeTree(data.children[i],relPath)+'
  • '; - } - result+='
'; - } - return result; - } - var searchBoxHtml; - if (searchEnabled) { - if (serverSide) { - searchBoxHtml='
'+ - '
'+ - '
 '+ - ''+ - '
'+ - '
'+ - '
'+ - '
'; - } else { - searchBoxHtml='
'+ - ''+ - ' '+ - ''+ - ''+ - ''+ - ''+ - ''+ - '
'; - } - } - - $('#main-nav').before('
'+ - ''+ - ''+ - '
'); - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchBoxHtml) { - $('#main-menu').append('
  • '); - } - var $mainMenuState = $('#main-menu-state'); - var prevWidth = 0; - if ($mainMenuState.length) { - function initResizableIfExists() { - if (typeof initResizable==='function') initResizable(); - } - // animate mobile menu - $mainMenuState.change(function(e) { - var $menu = $('#main-menu'); - var options = { duration: 250, step: initResizableIfExists }; - if (this.checked) { - options['complete'] = function() { $menu.css('display', 'block') }; - $menu.hide().slideDown(options); - } else { - options['complete'] = function() { $menu.css('display', 'none') }; - $menu.show().slideUp(options); - } - }); - // set default menu visibility - function resetState() { - var $menu = $('#main-menu'); - var $mainMenuState = $('#main-menu-state'); - var newWidth = $(window).outerWidth(); - if (newWidth!=prevWidth) { - if ($(window).outerWidth()<768) { - $mainMenuState.prop('checked',false); $menu.hide(); - $('#searchBoxPos1').html(searchBoxHtml); - $('#searchBoxPos2').hide(); - } else { - $menu.show(); - $('#searchBoxPos1').empty(); - $('#searchBoxPos2').html(searchBoxHtml); - $('#searchBoxPos2').show(); - } - if (typeof searchBox!=='undefined') { - searchBox.CloseResultsWindow(); - } - prevWidth = newWidth; - } - } - $(window).ready(function() { resetState(); initResizableIfExists(); }); - $(window).resize(resetState); - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/menudata.js b/menudata.js deleted file mode 100644 index d51c01d..0000000 --- a/menudata.js +++ /dev/null @@ -1,86 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Namespaces",url:"namespaces.html",children:[ -{text:"Namespace List",url:"namespaces.html"}, -{text:"Namespace Members",url:"namespacemembers.html",children:[ -{text:"All",url:"namespacemembers.html"}, -{text:"Functions",url:"namespacemembers_func.html"}, -{text:"Typedefs",url:"namespacemembers_type.html"}]}]}, -{text:"Concepts",url:"concepts.html"}, -{text:"Classes",url:"annotated.html",children:[ -{text:"Class List",url:"annotated.html"}, -{text:"Class Index",url:"classes.html"}, -{text:"Class Hierarchy",url:"inherits.html"}, -{text:"Class Members",url:"functions.html",children:[ -{text:"All",url:"functions.html",children:[ -{text:"a",url:"functions.html#index_a"}, -{text:"b",url:"functions.html#index_b"}, -{text:"c",url:"functions.html#index_c"}, -{text:"d",url:"functions.html#index_d"}, -{text:"g",url:"functions.html#index_g"}, -{text:"h",url:"functions.html#index_h"}, -{text:"i",url:"functions.html#index_i"}, -{text:"k",url:"functions.html#index_k"}, -{text:"l",url:"functions.html#index_l"}, -{text:"m",url:"functions.html#index_m"}, -{text:"n",url:"functions.html#index_n"}, -{text:"o",url:"functions.html#index_o"}, -{text:"p",url:"functions.html#index_p"}, -{text:"r",url:"functions.html#index_r"}, -{text:"s",url:"functions.html#index_s"}, -{text:"t",url:"functions.html#index_t"}, -{text:"u",url:"functions.html#index_u"}, -{text:"v",url:"functions.html#index_v"}]}, -{text:"Functions",url:"functions_func.html",children:[ -{text:"a",url:"functions_func.html#index_a"}, -{text:"c",url:"functions_func.html#index_c"}, -{text:"g",url:"functions_func.html#index_g"}, -{text:"k",url:"functions_func.html#index_k"}, -{text:"l",url:"functions_func.html#index_l"}, -{text:"m",url:"functions_func.html#index_m"}, -{text:"o",url:"functions_func.html#index_o"}, -{text:"s",url:"functions_func.html#index_s"}]}, -{text:"Variables",url:"functions_vars.html",children:[ -{text:"b",url:"functions_vars.html#index_b"}, -{text:"c",url:"functions_vars.html#index_c"}, -{text:"d",url:"functions_vars.html#index_d"}, -{text:"g",url:"functions_vars.html#index_g"}, -{text:"h",url:"functions_vars.html#index_h"}, -{text:"i",url:"functions_vars.html#index_i"}, -{text:"n",url:"functions_vars.html#index_n"}, -{text:"p",url:"functions_vars.html#index_p"}, -{text:"r",url:"functions_vars.html#index_r"}, -{text:"s",url:"functions_vars.html#index_s"}, -{text:"t",url:"functions_vars.html#index_t"}, -{text:"v",url:"functions_vars.html#index_v"}]}, -{text:"Typedefs",url:"functions_type.html"}]}]}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}, -{text:"File Members",url:"globals.html",children:[ -{text:"All",url:"globals.html"}, -{text:"Variables",url:"globals_vars.html"}, -{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/minus.svg b/minus.svg deleted file mode 100644 index f70d0c1..0000000 --- a/minus.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/minusd.svg b/minusd.svg deleted file mode 100644 index 5f8e879..0000000 --- a/minusd.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/monotile_2Grid_8hpp.html b/monotile_2Grid_8hpp.html deleted file mode 100644 index 7d2f5e7..0000000 --- a/monotile_2Grid_8hpp.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - -StencilStream: StencilStream/monotile/Grid.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    Grid.hpp File Reference
    -
    -
    -
    #include "../AccessorSubscript.hpp"
    -#include "../Concepts.hpp"
    -
    -Include dependency graph for Grid.hpp:
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    class  stencil::monotile::Grid< Cell, word_size >
     A grid class for the monotile architecture. More...
     
    class  stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >
     An accessor for the monotile grid. More...
     
    - - - - - -

    -Namespaces

    namespace  stencil
     
    namespace  stencil::monotile
     
    -
    - - - - diff --git a/monotile_2Grid_8hpp__dep__incl.map b/monotile_2Grid_8hpp__dep__incl.map deleted file mode 100644 index c8ca6d8..0000000 --- a/monotile_2Grid_8hpp__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/monotile_2Grid_8hpp__dep__incl.md5 b/monotile_2Grid_8hpp__dep__incl.md5 deleted file mode 100644 index 51b6d46..0000000 --- a/monotile_2Grid_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -7b623543817503ed079ad21d6fe2dc36 \ No newline at end of file diff --git a/monotile_2Grid_8hpp__dep__incl.png b/monotile_2Grid_8hpp__dep__incl.png deleted file mode 100644 index 7aa7d20..0000000 Binary files a/monotile_2Grid_8hpp__dep__incl.png and /dev/null differ diff --git a/monotile_2Grid_8hpp__incl.map b/monotile_2Grid_8hpp__incl.map deleted file mode 100644 index e1b57cb..0000000 --- a/monotile_2Grid_8hpp__incl.map +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/monotile_2Grid_8hpp__incl.md5 b/monotile_2Grid_8hpp__incl.md5 deleted file mode 100644 index 3535a64..0000000 --- a/monotile_2Grid_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c33b811cf55fe8f0959b58d230a608cd \ No newline at end of file diff --git a/monotile_2Grid_8hpp__incl.png b/monotile_2Grid_8hpp__incl.png deleted file mode 100644 index 9967948..0000000 Binary files a/monotile_2Grid_8hpp__incl.png and /dev/null differ diff --git a/monotile_2Grid_8hpp_source.html b/monotile_2Grid_8hpp_source.html deleted file mode 100644 index 358e441..0000000 --- a/monotile_2Grid_8hpp_source.html +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - - -StencilStream: StencilStream/monotile/Grid.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    Grid.hpp
    -
    -
    -Go to the documentation of this file.
    1/*
    -
    2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
    -
    3 * University
    -
    4 *
    -
    5 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
    -
    6 * associated documentation files (the “Software”), to deal in the Software without restriction,
    -
    7 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
    -
    8 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
    -
    9 * furnished to do so, subject to the following conditions:
    -
    10 *
    -
    11 * The above copyright notice and this permission notice shall be included in all copies or
    -
    12 * substantial portions of the Software.
    -
    13 *
    -
    14 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
    -
    15 * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    -
    16 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    -
    17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -
    18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    -
    19 */
    -
    20#pragma once
    -
    21#include "../AccessorSubscript.hpp"
    -
    22#include "../Concepts.hpp"
    -
    23
    -
    24namespace stencil {
    -
    -
    25namespace monotile {
    -
    26
    -
    -
    58template <class Cell, uindex_t word_size = 64> class Grid {
    -
    59 private:
    -
    60 static constexpr uindex_t word_length =
    -
    61 std::lcm(sizeof(Padded<Cell>), word_size) / sizeof(Padded<Cell>);
    -
    62 using IOWord = std::array<Padded<Cell>, word_length>;
    -
    63
    -
    64 public:
    -
    70 static constexpr uindex_t dimensions = 2;
    -
    71
    -
    -
    79 Grid(uindex_t grid_width, uindex_t grid_height)
    -
    80 : tile_buffer(sycl::range<1>(n_cells_to_n_words(grid_width * grid_height, word_length))),
    -
    81 grid_width(grid_width), grid_height(grid_height) {}
    -
    -
    82
    -
    -
    89 Grid(sycl::range<2> range)
    -
    90 : tile_buffer(sycl::range<1>(n_cells_to_n_words(range[0] * range[1], word_length))),
    -
    91 grid_width(range[0]), grid_height(range[1]) {}
    -
    -
    92
    -
    -
    101 Grid(sycl::buffer<Cell, 2> buffer)
    -
    102 : tile_buffer(1), grid_width(buffer.get_range()[0]), grid_height(buffer.get_range()[1]) {
    -
    103 tile_buffer = sycl::range<1>(n_cells_to_n_words(grid_width * grid_height, word_length));
    -
    104 copy_from_buffer(buffer);
    -
    105 }
    -
    -
    106
    -
    -
    116 Grid(Grid const &other_grid)
    -
    117 : tile_buffer(other_grid.tile_buffer), grid_width(other_grid.grid_width),
    -
    118 grid_height(other_grid.grid_height) {}
    -
    -
    119
    -
    123 Grid make_similar() const { return Grid(grid_width, grid_height); }
    -
    124
    -
    128 uindex_t get_grid_width() const { return grid_width; }
    -
    129
    -
    133 uindex_t get_grid_height() const { return grid_height; }
    -
    134
    -
    -
    144 template <sycl::access::mode access_mode = sycl::access::mode::read_write> class GridAccessor {
    -
    145 private:
    -
    146 using accessor_t = sycl::host_accessor<IOWord, 1, access_mode>;
    -
    147
    -
    148 public:
    - -
    153
    -
    - -
    158 : ac(grid.tile_buffer), grid_width(grid.get_grid_width()),
    -
    159 grid_height(grid.get_grid_height()) {}
    -
    -
    160
    - -
    165
    - -
    174
    -
    -
    181 Cell const &operator[](sycl::id<2> id)
    -
    182 requires(access_mode == sycl::access::mode::read)
    -
    183 {
    -
    184 uindex_t word_i = (id[0] * grid_height + id[1]) / word_length;
    -
    185 uindex_t cell_i = (id[0] * grid_height + id[1]) % word_length;
    -
    186 return ac[word_i][cell_i].value;
    -
    187 }
    -
    -
    188
    -
    -
    195 Cell &operator[](sycl::id<2> id)
    -
    196 requires(access_mode != sycl::access::mode::read)
    -
    197 {
    -
    198 uindex_t word_i = (id[0] * grid_height + id[1]) / word_length;
    -
    199 uindex_t cell_i = (id[0] * grid_height + id[1]) % word_length;
    -
    200 return ac[word_i][cell_i].value;
    -
    201 }
    -
    -
    202
    -
    203 private:
    -
    204 accessor_t ac;
    -
    205 uindex_t grid_width, grid_height;
    -
    206 };
    -
    -
    207
    -
    -
    218 void copy_from_buffer(sycl::buffer<Cell, 2> input_buffer) {
    -
    219 uindex_t width = this->get_grid_width();
    -
    220 uindex_t height = this->get_grid_height();
    -
    221
    -
    222 if (input_buffer.get_range() != sycl::range<2>(width, height)) {
    -
    223 throw std::range_error("The target buffer has not the same size as the grid");
    -
    224 }
    -
    225
    -
    226 sycl::host_accessor in_ac(input_buffer, sycl::read_only);
    - -
    228 for (uindex_t c = 0; c < width; c++) {
    -
    229 for (uindex_t r = 0; r < height; r++) {
    -
    230 tile_ac[c][r] = in_ac[c][r];
    -
    231 }
    -
    232 }
    -
    233 }
    -
    -
    234
    -
    -
    244 void copy_to_buffer(sycl::buffer<Cell, 2> output_buffer) {
    -
    245 uindex_t width = this->get_grid_width();
    -
    246 uindex_t height = this->get_grid_height();
    -
    247
    -
    248 if (output_buffer.get_range() != sycl::range<2>(width, height)) {
    -
    249 throw std::range_error("The target buffer has not the same size as the grid");
    -
    250 }
    -
    251
    - -
    253 sycl::host_accessor out_ac(output_buffer, sycl::write_only);
    -
    254 for (uindex_t c = 0; c < width; c++) {
    -
    255 for (uindex_t r = 0; r < height; r++) {
    -
    256 out_ac[c][r] = in_ac[c][r];
    -
    257 }
    -
    258 }
    -
    259 }
    -
    -
    260
    -
    -
    277 template <typename in_pipe> sycl::event submit_read(sycl::queue queue) {
    -
    278 return queue.submit([&](sycl::handler &cgh) {
    -
    279 sycl::accessor ac(tile_buffer, cgh, sycl::read_only);
    -
    280 uindex_t n_cells = grid_width * grid_height;
    -
    281
    -
    282 cgh.single_task([=]() {
    -
    283 IOWord cache;
    -
    284
    -
    285 uindex_t word_i = 0;
    -
    286 uindex_t cell_i = word_length;
    -
    287 for (uindex_t i = 0; i < n_cells; i++) {
    -
    288 if (cell_i == word_length) {
    -
    289 cache = ac[word_i];
    -
    290 word_i++;
    -
    291 cell_i = 0;
    -
    292 }
    -
    293 in_pipe::write(cache[cell_i].value);
    -
    294 cell_i++;
    -
    295 }
    -
    296 });
    -
    297 });
    -
    298 }
    -
    -
    299
    -
    -
    317 template <typename out_pipe> sycl::event submit_write(sycl::queue queue) {
    -
    318 return queue.submit([&](sycl::handler &cgh) {
    -
    319 sycl::accessor ac(tile_buffer, cgh, sycl::write_only);
    -
    320 uindex_t n_cells = grid_width * grid_height;
    -
    321
    -
    322 cgh.single_task([=]() {
    -
    323 IOWord cache;
    -
    324
    -
    325 uindex_t word_i = 0;
    -
    326 uindex_t cell_i = 0;
    -
    327 for (uindex_t i = 0; i < n_cells; i++) {
    -
    328 cache[cell_i].value = out_pipe::read();
    -
    329 cell_i++;
    -
    330 if (cell_i == word_length || i == n_cells - 1) {
    -
    331 ac[word_i] = cache;
    -
    332 cell_i = 0;
    -
    333 word_i++;
    -
    334 }
    -
    335 }
    -
    336 });
    -
    337 });
    -
    338 }
    -
    -
    339
    -
    340 private:
    -
    341 sycl::buffer<IOWord, 1> tile_buffer;
    -
    342 uindex_t grid_width, grid_height;
    -
    343};
    -
    -
    344} // namespace monotile
    -
    -
    345} // namespace stencil
    -
    T value
    Definition Helpers.hpp:0
    -
    A helper class to support the double-subscript idiom for GridAccessors.
    Definition AccessorSubscript.hpp:49
    -
    An accessor for the monotile grid.
    Definition Grid.hpp:144
    -
    GridAccessor(Grid &grid)
    Create a new accessor to the given grid.
    Definition Grid.hpp:157
    -
    Cell const & operator[](sycl::id< 2 > id)
    Access a cell of the grid.
    Definition Grid.hpp:181
    -
    BaseSubscript operator[](uindex_t i)
    Access/Dereference the first dimension.
    Definition Grid.hpp:173
    -
    static constexpr uindex_t dimensions
    The number of dimensions of the underlying grid.
    Definition Grid.hpp:152
    -
    Cell & operator[](sycl::id< 2 > id)
    Access a cell of the grid.
    Definition Grid.hpp:195
    -
    AccessorSubscript< Cell, GridAccessor, access_mode > BaseSubscript
    Shorthand for the used subscript type.
    Definition Grid.hpp:164
    -
    A grid class for the monotile architecture.
    Definition Grid.hpp:58
    -
    sycl::event submit_read(sycl::queue queue)
    Submit a kernel that sends the contents of the grid into a pipe.
    Definition Grid.hpp:277
    -
    static constexpr uindex_t dimensions
    The number of dimensions of the grid.
    Definition Grid.hpp:70
    -
    Grid(sycl::range< 2 > range)
    Create a new, uninitialized grid with the given dimensions.
    Definition Grid.hpp:89
    -
    void copy_from_buffer(sycl::buffer< Cell, 2 > input_buffer)
    Copy the contents of the SYCL buffer into the grid.
    Definition Grid.hpp:218
    -
    Grid make_similar() const
    Create an new, uninitialized grid with the same size as the current one.
    Definition Grid.hpp:123
    -
    Grid(sycl::buffer< Cell, 2 > buffer)
    Create a new grid with the same size and contents as the given SYCL buffer.
    Definition Grid.hpp:101
    -
    uindex_t get_grid_width() const
    Return the width, or number of columns, of the grid.
    Definition Grid.hpp:128
    -
    Grid(uindex_t grid_width, uindex_t grid_height)
    Create a new, uninitialized grid with the given dimensions.
    Definition Grid.hpp:79
    -
    uindex_t get_grid_height() const
    Return the height, or number of rows, of the grid.
    Definition Grid.hpp:133
    -
    void copy_to_buffer(sycl::buffer< Cell, 2 > output_buffer)
    Copy the contents of the grid into the SYCL buffer.
    Definition Grid.hpp:244
    -
    Grid(Grid const &other_grid)
    Create a new reference to the given grid.
    Definition Grid.hpp:116
    -
    sycl::event submit_write(sycl::queue queue)
    Submit a kernel that receives cells from the pipe and writes them to the grid.
    Definition Grid.hpp:317
    -
    Definition AccessorSubscript.hpp:24
    -
    BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
    An unsigned integer of configurable width.
    Definition Index.hpp:42
    -
    constexpr uindex_t n_cells_to_n_words(uindex_t n_cells, uindex_t word_length)
    Compute the number of words necessary to store a given number of cells.
    Definition Helpers.hpp:34
    -
    A container with padding to the next power of two.
    Definition Helpers.hpp:45
    -
    - - - - diff --git a/monotile_2StencilUpdate_8hpp.html b/monotile_2StencilUpdate_8hpp.html deleted file mode 100644 index c9f26ec..0000000 --- a/monotile_2StencilUpdate_8hpp.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -StencilStream: StencilStream/monotile/StencilUpdate.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    StencilUpdate.hpp File Reference
    -
    -
    -
    #include "../Concepts.hpp"
    -#include "../GenericID.hpp"
    -#include "../Helpers.hpp"
    -#include "../Index.hpp"
    -#include "../tdv/SinglePassStrategies.hpp"
    -#include "Grid.hpp"
    -#include <chrono>
    -#include <type_traits>
    -
    -Include dependency graph for StencilUpdate.hpp:
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Classes

    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. More...
     
    class  stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >
     A grid updater that applies an iterative stencil code to a grid. More...
     
    struct  stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params
     Parameters for the stencil updater. More...
     
    - - - - - -

    -Namespaces

    namespace  stencil
     
    namespace  stencil::monotile
     
    -
    - - - - diff --git a/monotile_2StencilUpdate_8hpp__incl.map b/monotile_2StencilUpdate_8hpp__incl.map deleted file mode 100644 index 026fb29..0000000 --- a/monotile_2StencilUpdate_8hpp__incl.map +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/monotile_2StencilUpdate_8hpp__incl.md5 b/monotile_2StencilUpdate_8hpp__incl.md5 deleted file mode 100644 index cbbafe3..0000000 --- a/monotile_2StencilUpdate_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -00026180ee6d66ea82a1dd02a1b48d42 \ No newline at end of file diff --git a/monotile_2StencilUpdate_8hpp__incl.png b/monotile_2StencilUpdate_8hpp__incl.png deleted file mode 100644 index 30bc3f9..0000000 Binary files a/monotile_2StencilUpdate_8hpp__incl.png and /dev/null differ diff --git a/monotile_2StencilUpdate_8hpp_source.html b/monotile_2StencilUpdate_8hpp_source.html deleted file mode 100644 index c1059fd..0000000 --- a/monotile_2StencilUpdate_8hpp_source.html +++ /dev/null @@ -1,534 +0,0 @@ - - - - - - - -StencilStream: StencilStream/monotile/StencilUpdate.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    StencilUpdate.hpp
    -
    -
    -Go to the documentation of this file.
    1/*
    -
    2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
    -
    3 * University
    -
    4 *
    -
    5 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
    -
    6 * associated documentation files (the “Software”), to deal in the Software without restriction,
    -
    7 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
    -
    8 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
    -
    9 * furnished to do so, subject to the following conditions:
    -
    10 *
    -
    11 * The above copyright notice and this permission notice shall be included in all copies or
    -
    12 * substantial portions of the Software.
    -
    13 *
    -
    14 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
    -
    15 * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    -
    16 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    -
    17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -
    18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    -
    19 */
    -
    20#pragma once
    -
    21#include "../Concepts.hpp"
    -
    22#include "../GenericID.hpp"
    -
    23#include "../Helpers.hpp"
    -
    24#include "../Index.hpp"
    -
    25#include "../tdv/SinglePassStrategies.hpp"
    -
    26#include "Grid.hpp"
    -
    27#include <chrono>
    -
    28#include <type_traits>
    -
    29
    -
    30namespace stencil {
    -
    31namespace monotile {
    -
    32
    -
    61template <concepts::TransitionFunction TransFunc,
    -
    62 tdv::single_pass::KernelArgument<TransFunc> TDVKernelArgument,
    -
    63 uindex_t n_processing_elements, uindex_t max_grid_width, uindex_t max_grid_height,
    -
    64 typename in_pipe, typename out_pipe>
    -
    65 requires(n_processing_elements % TransFunc::n_subiterations == 0)
    -
    - -
    67 private:
    -
    68 using Cell = typename TransFunc::Cell;
    -
    69 using TDV = typename TransFunc::TimeDependentValue;
    -
    70 using TDVLocalState = typename TDVKernelArgument::LocalState;
    - -
    72
    -
    76 static constexpr uindex_t stencil_diameter = StencilImpl::diameter;
    -
    77
    -
    78 static constexpr uindex_t iters_per_pass = n_processing_elements / TransFunc::n_subiterations;
    -
    79
    -
    80 static constexpr uindex_t calc_pipeline_latency(uindex_t grid_height) {
    -
    81 return n_processing_elements * TransFunc::stencil_radius * (grid_height + 1);
    -
    82 }
    -
    83
    -
    84 static constexpr uindex_t calc_n_iterations(uindex_t grid_width, uindex_t grid_height) {
    -
    85 return grid_width * grid_height + calc_pipeline_latency(grid_height);
    -
    86 }
    -
    87
    -
    88 using index_stencil_t = typename StencilImpl::index_stencil_t;
    -
    89 using uindex_stencil_t = typename StencilImpl::uindex_stencil_t;
    -
    90 using StencilID = typename StencilImpl::StencilID;
    -
    91 using StencilUID = typename StencilImpl::StencilUID;
    -
    92
    -
    93 static constexpr unsigned long bits_1d =
    -
    94 std::bit_width(std::max(max_grid_width, max_grid_height));
    -
    95 using index_1d_t = ac_int<bits_1d + 1, true>;
    -
    96 using uindex_1d_t = ac_int<bits_1d, false>;
    -
    97
    -
    98 static constexpr unsigned long bits_2d = 2 * bits_1d;
    -
    99 using index_2d_t = ac_int<bits_2d + 1, true>;
    -
    100 using uindex_2d_t = ac_int<bits_2d, false>;
    -
    101
    -
    102 static constexpr unsigned long bits_pes =
    -
    103 std::max<int>(2, std::bit_width(n_processing_elements));
    -
    104 using index_pes_t = ac_int<bits_pes + 1, true>;
    -
    105 using uindex_pes_t = ac_int<bits_pes, false>;
    -
    106
    -
    107 static constexpr unsigned long bits_n_iterations =
    -
    108 std::bit_width(calc_n_iterations(max_grid_width, max_grid_height));
    -
    109 using index_n_iterations_t = ac_int<bits_n_iterations + 1, true>;
    -
    110 using uindex_n_iterations_t = ac_int<bits_n_iterations, false>;
    -
    111
    -
    112 public:
    -
    -
    133 StencilUpdateKernel(TransFunc trans_func, uindex_t i_iteration, uindex_t target_i_iteration,
    -
    134 uindex_t grid_width, uindex_t grid_height, Cell halo_value,
    -
    135 TDVKernelArgument tdv_kernel_argument)
    -
    136 : trans_func(trans_func), i_iteration(i_iteration), target_i_iteration(target_i_iteration),
    -
    137 grid_width(grid_width), grid_height(grid_height), halo_value(halo_value),
    -
    138 tdv_kernel_argument(tdv_kernel_argument) {
    -
    139 assert(grid_height <= max_grid_height);
    -
    140 }
    -
    -
    141
    -
    -
    145 void operator()() const {
    -
    146 [[intel::fpga_register]] index_1d_t c[n_processing_elements];
    -
    147 [[intel::fpga_register]] index_1d_t r[n_processing_elements];
    -
    148 TDVLocalState tdv_local_state(tdv_kernel_argument);
    -
    149
    -
    150 // Initializing (output) column and row counters.
    -
    151 index_1d_t prev_c = 0;
    -
    152 index_1d_t prev_r = 0;
    -
    153#pragma unroll
    -
    154 for (uindex_pes_t i = 0; i < uindex_pes_t(n_processing_elements); i++) {
    -
    155 c[i] = prev_c - TransFunc::stencil_radius;
    -
    156 r[i] = prev_r - TransFunc::stencil_radius;
    -
    157 if (r[i] < index_pes_t(0)) {
    -
    158 r[i] += grid_height;
    -
    159 c[i] -= 1;
    -
    160 }
    -
    161 prev_c = c[i];
    -
    162 prev_r = r[i];
    -
    163 }
    -
    164
    -
    165 /*
    -
    166 * The intel::numbanks attribute requires a power of two as it's argument and if the
    -
    167 * number of processing elements isn't a power of two, it would produce an error. Therefore,
    -
    168 * we calculate the next power of two and use it to allocate the cache. The compiler is
    -
    169 * smart enough to see that these additional banks in the cache aren't used and therefore
    -
    170 * optimizes them away.
    -
    171 */
    -
    172 [[intel::fpga_memory,
    -
    173 intel::numbanks(2 * std::bit_ceil(n_processing_elements))]] Padded<Cell>
    -
    174 cache[2][max_grid_height][std::bit_ceil(n_processing_elements)][stencil_diameter - 1];
    -
    175 [[intel::fpga_register]] Cell stencil_buffer[n_processing_elements][stencil_diameter]
    -
    176 [stencil_diameter];
    -
    177
    -
    178 uindex_n_iterations_t n_iterations = calc_n_iterations(grid_width, grid_height);
    -
    179 for (uindex_n_iterations_t i = 0; i < n_iterations; i++) {
    -
    180 Cell carry;
    -
    181 if (i < uindex_n_iterations_t(grid_width * grid_height)) {
    -
    182 carry = in_pipe::read();
    -
    183 } else {
    -
    184 carry = halo_value;
    -
    185 }
    -
    186
    -
    187#pragma unroll
    -
    188 for (uindex_pes_t i_processing_element = 0;
    -
    189 i_processing_element < uindex_pes_t(n_processing_elements);
    -
    190 i_processing_element++) {
    -
    191#pragma unroll
    -
    192 for (uindex_stencil_t r = 0; r < uindex_stencil_t(stencil_diameter - 1); r++) {
    -
    193#pragma unroll
    -
    194 for (uindex_stencil_t c = 0; c < uindex_stencil_t(stencil_diameter); c++) {
    -
    195 stencil_buffer[i_processing_element][c][r] =
    -
    196 stencil_buffer[i_processing_element][c][r + 1];
    -
    197 }
    -
    198 }
    -
    199
    -
    200 // Update the stencil buffer and cache with previous cache contents and the new
    -
    201 // input cell.
    -
    202#pragma unroll
    -
    203 for (uindex_stencil_t cache_c = 0; cache_c < uindex_stencil_t(stencil_diameter);
    -
    204 cache_c++) {
    -
    205 Cell new_value;
    -
    206 if (cache_c == uindex_stencil_t(stencil_diameter - 1)) {
    -
    207 new_value = carry;
    -
    208 } else {
    -
    209 new_value = cache[c[i_processing_element][0]][r[i_processing_element]]
    -
    210 [i_processing_element][cache_c]
    -
    211 .value;
    -
    212 }
    -
    213
    -
    214 stencil_buffer[i_processing_element][cache_c][stencil_diameter - 1] = new_value;
    -
    215 if (cache_c > 0) {
    -
    216 cache[(~c[i_processing_element])[0]][r[i_processing_element]]
    -
    217 [i_processing_element][cache_c - 1]
    -
    218 .value = new_value;
    -
    219 }
    -
    220 }
    -
    221
    -
    222 uindex_t pe_iteration =
    -
    223 (i_iteration + i_processing_element / TransFunc::n_subiterations).to_uint();
    -
    224 uindex_t pe_subiteration =
    -
    225 (i_processing_element % TransFunc::n_subiterations).to_uint();
    -
    226
    -
    227 if (pe_iteration < target_i_iteration) {
    -
    228 TDV tdv = tdv_local_state.get_time_dependent_value(
    -
    229 (i_processing_element / TransFunc::n_subiterations).to_uint());
    -
    230 StencilImpl stencil(ID(c[i_processing_element], r[i_processing_element]),
    -
    231 UID(grid_width, grid_height), pe_iteration, pe_subiteration,
    -
    232 tdv);
    -
    233
    -
    234 bool h_halo_mask[stencil_diameter];
    -
    235 bool v_halo_mask[stencil_diameter];
    -
    236#pragma unroll
    -
    237 for (uindex_stencil_t mask_i = 0; mask_i < uindex_stencil_t(stencil_diameter);
    -
    238 mask_i++) {
    -
    239 // These computation assume that the central cell is in the grid. If it's
    -
    240 // not, the resulting value of this processing element will be discarded
    -
    241 // anyways, so this is safe.
    -
    242 if (mask_i < uindex_stencil_t(TransFunc::stencil_radius)) {
    -
    243 h_halo_mask[mask_i] = c[i_processing_element] >=
    -
    244 index_1d_t(TransFunc::stencil_radius - mask_i);
    -
    245 v_halo_mask[mask_i] = r[i_processing_element] >=
    -
    246 index_1d_t(TransFunc::stencil_radius - mask_i);
    -
    247 } else if (mask_i == uindex_stencil_t(TransFunc::stencil_radius)) {
    -
    248 h_halo_mask[mask_i] = true;
    -
    249 v_halo_mask[mask_i] = true;
    -
    250 } else {
    -
    251 h_halo_mask[mask_i] =
    -
    252 c[i_processing_element] <
    -
    253 grid_width + index_1d_t(TransFunc::stencil_radius - mask_i);
    -
    254 v_halo_mask[mask_i] =
    -
    255 r[i_processing_element] <
    -
    256 grid_height + index_1d_t(TransFunc::stencil_radius - mask_i);
    -
    257 }
    -
    258 }
    -
    259
    -
    260#pragma unroll
    -
    261 for (uindex_stencil_t cell_c = 0; cell_c < uindex_stencil_t(stencil_diameter);
    -
    262 cell_c++) {
    -
    263#pragma unroll
    -
    264 for (uindex_stencil_t cell_r = 0;
    -
    265 cell_r < uindex_stencil_t(stencil_diameter); cell_r++) {
    -
    266 if (h_halo_mask[cell_c] && v_halo_mask[cell_r]) {
    -
    267 stencil[StencilUID(cell_c, cell_r)] =
    -
    268 stencil_buffer[i_processing_element][cell_c][cell_r];
    -
    269 } else {
    -
    270 stencil[StencilUID(cell_c, cell_r)] = halo_value;
    -
    271 }
    -
    272 }
    -
    273 }
    -
    274
    -
    275 carry = trans_func(stencil);
    -
    276 } else {
    -
    277 carry = stencil_buffer[i_processing_element][TransFunc::stencil_radius]
    -
    278 [TransFunc::stencil_radius];
    -
    279 }
    -
    280
    -
    281 r[i_processing_element] += 1;
    -
    282 if (r[i_processing_element] == index_1d_t(grid_height)) {
    -
    283 r[i_processing_element] = 0;
    -
    284 c[i_processing_element] += 1;
    -
    285 }
    -
    286 }
    -
    287
    -
    288 if (i >= uindex_n_iterations_t(calc_pipeline_latency(grid_height))) {
    -
    289 out_pipe::write(carry);
    -
    290 }
    -
    291 }
    -
    292 }
    -
    -
    293
    -
    294 private:
    -
    295 TransFunc trans_func;
    -
    296 uindex_t i_iteration;
    -
    297 uindex_t target_i_iteration;
    -
    298 uindex_t grid_width;
    -
    299 uindex_t grid_height;
    -
    300 Cell halo_value;
    -
    301 TDVKernelArgument tdv_kernel_argument;
    -
    302};
    -
    -
    303
    -
    334template <concepts::TransitionFunction F, uindex_t n_processing_elements = 1,
    -
    335 uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024,
    - - -
    338 uindex_t word_size = 64>
    -
    - -
    340 private:
    -
    341 using Cell = F::Cell;
    -
    342 using TDV = typename F::TimeDependentValue;
    -
    343
    -
    344 public:
    - -
    347
    -
    -
    351 struct Params {
    - -
    358
    -
    362 Cell halo_value = Cell();
    -
    363
    - -
    371
    - -
    376
    -
    385 sycl::device device = sycl::device();
    -
    386
    -
    396 bool blocking = false;
    -
    397
    -
    405 bool profiling = false;
    -
    406 };
    -
    -
    407
    -
    - -
    412 : params(params), n_processed_cells(0), work_events(), walltime(0.0) {}
    -
    -
    413
    -
    419 Params &get_params() { return params; }
    -
    420
    -
    - -
    432 if (source_grid.get_grid_height() > max_grid_height) {
    -
    433 throw std::range_error("The grid is too tall for the stencil update kernel.");
    -
    434 }
    -
    435 if (source_grid.get_grid_width() > max_grid_width) {
    -
    436 throw std::range_error("The grid is too wide for the stencil update kernel.");
    -
    437 }
    -
    438 using in_pipe = sycl::pipe<class monotile_in_pipe, Cell>;
    -
    439 using out_pipe = sycl::pipe<class monotile_out_pipe, Cell>;
    -
    440
    -
    441 constexpr uindex_t iters_per_pass = n_processing_elements / F::n_subiterations;
    -
    442
    -
    443 using TDVGlobalState = TDVStrategy::template GlobalState<F, iters_per_pass>;
    -
    444 using TDVKernelArgument = typename TDVGlobalState::KernelArgument;
    -
    445 using ExecutionKernelImpl =
    -
    446 StencilUpdateKernel<F, TDVKernelArgument, n_processing_elements, max_grid_width,
    -
    447 max_grid_height, in_pipe, out_pipe>;
    -
    448
    -
    449 sycl::queue input_kernel_queue =
    -
    450 sycl::queue(params.device, {sycl::property::queue::in_order{}});
    -
    451 sycl::queue output_kernel_queue =
    -
    452 sycl::queue(params.device, {sycl::property::queue::in_order{}});
    -
    453
    -
    454 sycl::queue update_kernel_queue =
    -
    455 sycl::queue(params.device, {cl::sycl::property::queue::enable_profiling{},
    -
    456 sycl::property::queue::in_order{}});
    -
    457
    -
    458 GridImpl swap_grid_a = source_grid.make_similar();
    -
    459 GridImpl swap_grid_b = source_grid.make_similar();
    -
    460
    -
    461 GridImpl *pass_source = &source_grid;
    -
    462 GridImpl *pass_target = &swap_grid_b;
    -
    463
    -
    464 F trans_func = params.transition_function;
    -
    465 TDVGlobalState tdv_global_state(trans_func, params.iteration_offset, params.n_iterations);
    -
    466
    -
    467 auto walltime_start = std::chrono::high_resolution_clock::now();
    -
    468
    -
    469 uindex_t target_n_iterations = params.iteration_offset + params.n_iterations;
    -
    470 for (uindex_t i = params.iteration_offset; i < target_n_iterations; i += iters_per_pass) {
    -
    471 pass_source->template submit_read<in_pipe>(input_kernel_queue);
    -
    472 uindex_t iters_in_this_pass = std::min(iters_per_pass, target_n_iterations - i);
    -
    473
    -
    474 sycl::event work_event = update_kernel_queue.submit([&](sycl::handler &cgh) {
    -
    475 TDVKernelArgument tdv_kernel_argument(tdv_global_state, cgh, i, iters_in_this_pass);
    -
    476 ExecutionKernelImpl exec_kernel(
    -
    477 trans_func, i, target_n_iterations, source_grid.get_grid_width(),
    -
    478 source_grid.get_grid_height(), params.halo_value, tdv_kernel_argument);
    -
    479 cgh.single_task<ExecutionKernelImpl>(exec_kernel);
    -
    480 });
    -
    481 if (params.profiling) {
    -
    482 work_events.push_back(work_event);
    -
    483 }
    -
    484
    -
    485 pass_target->template submit_write<out_pipe>(output_kernel_queue);
    -
    486
    -
    487 if (i == params.iteration_offset) {
    -
    488 pass_source = &swap_grid_b;
    -
    489 pass_target = &swap_grid_a;
    -
    490 } else {
    -
    491 std::swap(pass_source, pass_target);
    -
    492 }
    -
    493 }
    -
    494
    -
    495 if (params.blocking) {
    -
    496 output_kernel_queue.wait();
    -
    497 }
    -
    498
    -
    499 auto walltime_end = std::chrono::high_resolution_clock::now();
    -
    500 std::chrono::duration<double> walltime = walltime_end - walltime_start;
    -
    501 this->walltime += walltime.count();
    -
    502
    -
    503 n_processed_cells +=
    -
    504 params.n_iterations * source_grid.get_grid_width() * source_grid.get_grid_height();
    -
    505
    -
    506 return *pass_source;
    -
    507 }
    -
    -
    508
    -
    516 uindex_t get_n_processed_cells() const { return n_processed_cells; }
    -
    517
    -
    -
    524 double get_kernel_runtime() const {
    -
    525 double kernel_runtime = 0.0;
    -
    526 for (sycl::event work_event : work_events) {
    -
    527 const double timesteps_per_second = 1000000000.0;
    -
    528 double start =
    -
    529 double(work_event
    -
    530 .get_profiling_info<cl::sycl::info::event_profiling::command_start>()) /
    -
    531 timesteps_per_second;
    -
    532 double end =
    -
    533 double(
    -
    534 work_event.get_profiling_info<cl::sycl::info::event_profiling::command_end>()) /
    -
    535 timesteps_per_second;
    -
    536 kernel_runtime += end - start;
    -
    537 }
    -
    538 return kernel_runtime;
    -
    539 }
    -
    -
    540
    -
    547 double get_walltime() const { return walltime; }
    -
    548
    -
    549 private:
    -
    550 Params params;
    -
    551 uindex_t n_processed_cells;
    -
    552 double walltime;
    -
    553 std::vector<sycl::event> work_events;
    -
    554};
    -
    -
    555
    -
    556} // namespace monotile
    -
    557} // namespace stencil
    -
    T value
    Definition Helpers.hpp:0
    -
    A generic, two-dimensional index.
    Definition GenericID.hpp:32
    -
    The stencil buffer.
    Definition Stencil.hpp:48
    -
    ac_int< bits_stencil, false > uindex_stencil_t
    An unsigned index type for column and row indices in this stencil.
    Definition Stencil.hpp:60
    -
    ac_int< bits_stencil, true > index_stencil_t
    A signed index type for column and row indices in this stencil.
    Definition Stencil.hpp:57
    -
    A grid class for the monotile architecture.
    Definition Grid.hpp:58
    -
    uindex_t get_grid_width() const
    Return the width, or number of columns, of the grid.
    Definition Grid.hpp:128
    -
    uindex_t get_grid_height() const
    Return the height, or number of rows, of the grid.
    Definition Grid.hpp:133
    -
    The execution kernel of the monotile architecture.
    Definition StencilUpdate.hpp:66
    -
    void operator()() const
    Execute the kernel.
    Definition StencilUpdate.hpp:145
    -
    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.
    Definition StencilUpdate.hpp:133
    -
    A grid updater that applies an iterative stencil code to a grid.
    Definition StencilUpdate.hpp:339
    -
    double get_kernel_runtime() const
    Return the accumulated total runtime of the execution kernel.
    Definition StencilUpdate.hpp:524
    -
    double get_walltime() const
    Return the accumulated runtime of the updater, measured from the host side.
    Definition StencilUpdate.hpp:547
    -
    Params & get_params()
    Return a reference to the parameters.
    Definition StencilUpdate.hpp:419
    -
    StencilUpdate(Params params)
    Create a new stencil updater object.
    Definition StencilUpdate.hpp:411
    -
    GridImpl operator()(GridImpl &source_grid)
    Compute a new grid based on the source grid, using the configured transition function.
    Definition StencilUpdate.hpp:431
    -
    uindex_t get_n_processed_cells() const
    Return the accumulated total number of cells processed by this updater.
    Definition StencilUpdate.hpp:516
    -
    A technical definition of a stencil transition function.
    Definition Concepts.hpp:62
    -
    Requirements for a TDV implementation strategy.
    Definition SinglePassStrategies.hpp:99
    -
    Definition AccessorSubscript.hpp:24
    -
    GenericID< uindex_t > UID
    An unsigned, two-dimensional index.
    Definition GenericID.hpp:80
    -
    BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
    An unsigned integer of configurable width.
    Definition Index.hpp:42
    -
    GenericID< index_t > ID
    A signed, two-dimensional index.
    Definition GenericID.hpp:75
    -
    A container with padding to the next power of two.
    Definition Helpers.hpp:45
    -
    Parameters for the stencil updater.
    Definition StencilUpdate.hpp:351
    -
    uindex_t n_iterations
    The number of iterations to compute.
    Definition StencilUpdate.hpp:375
    -
    uindex_t iteration_offset
    The iteration index offset.
    Definition StencilUpdate.hpp:370
    -
    bool profiling
    Enable profiling.
    Definition StencilUpdate.hpp:405
    -
    sycl::device device
    The device to use for computations.
    Definition StencilUpdate.hpp:385
    -
    Cell halo_value
    The cell value to present for cells outside of the grid.
    Definition StencilUpdate.hpp:362
    -
    bool blocking
    Should the stencil updater block until completion, or return immediately after all kernels have been ...
    Definition StencilUpdate.hpp:396
    -
    F transition_function
    An instance of the transition function type.
    Definition StencilUpdate.hpp:357
    -
    A TDV implementation strategy that inlines the TDV function into the transition function.
    Definition SinglePassStrategies.hpp:114
    - -
    - - - - diff --git a/namespacemembers.html b/namespacemembers.html deleted file mode 100644 index ce1cf1d..0000000 --- a/namespacemembers.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -StencilStream: Namespace Members - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Here is a list of all namespace members with links to the namespace documentation for each member:
    -
    - - - - diff --git a/namespacemembers_func.html b/namespacemembers_func.html deleted file mode 100644 index f686d75..0000000 --- a/namespacemembers_func.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -StencilStream: Namespace Members - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    -
    - - - - diff --git a/namespacemembers_type.html b/namespacemembers_type.html deleted file mode 100644 index 316962a..0000000 --- a/namespacemembers_type.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -StencilStream: Namespace Members - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Here is a list of all namespace typedefs with links to the namespace documentation for each typedef:
    -
    - - - - diff --git a/namespaces.html b/namespaces.html deleted file mode 100644 index 4d90c03..0000000 --- a/namespaces.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -StencilStream: Namespace List - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Namespace List
    -
    -
    -
    Here is a list of all namespaces with brief descriptions:
    -
    [detail level 1234567]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     Nstencil
     Nconcepts
     RTransitionFunctionA technical definition of a stencil transition function
     RGridAccessorAn accessor for a two-dimensional grid
     RGridA regular grid of cells
     RStencilUpdateA grid updater that repeatedly applies stencil updates to each cell
     Ncpu
     CGridA grid class for the CPU backend
     CGridAccessorAn accessor for the grid
     CStencilUpdateA grid updater that applies an iterative stencil code to a grid
     CParamsParameters for the stencil updater
     Nmonotile
     CGridA grid class for the monotile architecture
     CGridAccessorAn accessor for the monotile grid
     CStencilUpdateA grid updater that applies an iterative stencil code to a grid
     CParamsParameters for the stencil updater
     CStencilUpdateKernelThe execution kernel of the monotile architecture
     Ntdv
     Nsingle_passImplementations of the TDV system for single-pass backends
     CInlineStrategyA TDV implementation strategy that inlines the TDV function into the transition function
     CGlobalState
     CKernelArgument
     CPrecomputeOnDeviceStrategyA TDV implementation strategy that precomputes TDVs on the device
     CGlobalState
     CKernelArgument
     CLocalState
     CPrecomputeOnHostStrategyA TDV implementation strategy that precomputes TDVs on the host
     CGlobalState
     CKernelArgument
     CLocalState
     RLocalStateThe requirements for a pass-local TDV system state
     RKernelArgumentThe requirements for a TDV kernel argument
     RGlobalStateThe requirements for a TDV system's global state
     RStrategyRequirements for a TDV implementation strategy
     Ntiling
     CGridA grid class for the tiling architecture
     CGridAccessorAn accessor for the monotile grid
     CStencilUpdateA grid updater that applies an iterative stencil code to a grid
     CParamsParameters for the stencil updater
     CStencilUpdateKernelA kernel that executes a stencil transition function on a tile
     CAccessorSubscriptA helper class to support the double-subscript idiom for GridAccessors
     CBaseTransitionFunctionBase class for transition functions that disables advanced features
     CGenericIDA generic, two-dimensional index
     CPaddedA container with padding to the next power of two
     CStencilThe stencil buffer
    -
    -
    - - - - diff --git a/namespacestencil.html b/namespacestencil.html deleted file mode 100644 index 830d97d..0000000 --- a/namespacestencil.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - -StencilStream: stencil Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    - -
    stencil Namespace Reference
    -
    -
    - - - - - - - - - - - - -

    -Namespaces

    namespace  concepts
     
    namespace  cpu
     
    namespace  monotile
     
    namespace  tdv
     
    namespace  tiling
     
    - - - - - - - - - - - - - - - - -

    -Classes

    class  AccessorSubscript
     A helper class to support the double-subscript idiom for GridAccessors. More...
     
    class  BaseTransitionFunction
     Base class for transition functions that disables advanced features. More...
     
    class  GenericID
     A generic, two-dimensional index. More...
     
    struct  Padded
     A container with padding to the next power of two. More...
     
    class  Stencil
     The stencil buffer. More...
     
    - - - - - - - - - - - - - -

    -Typedefs

    typedef GenericID< index_tID
     A signed, two-dimensional index.
     
    typedef GenericID< uindex_tUID
     An unsigned, two-dimensional index.
     
    using uindex_t = BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t)
     An unsigned integer of configurable width.
     
    using index_t = BOOST_PP_CAT(BOOST_PP_CAT(int, STENCIL_INDEX_WIDTH), _t)
     A signed integer of configurable width.
     
    - - - - - - - -

    -Functions

    constexpr uindex_t n_cells_to_n_words (uindex_t n_cells, uindex_t word_length)
     Compute the number of words necessary to store a given number of cells.
     
    template<typename T >
    struct stencil::Padded __attribute__ ((aligned(std::bit_ceil(sizeof(T)))))
     
    -

    Typedef Documentation

    - -

    ◆ ID

    - -
    -
    - - - - -
    typedef GenericID<index_t> stencil::ID
    -
    - -

    A signed, two-dimensional index.

    - -
    -
    - -

    ◆ index_t

    - -
    -
    - - - - -
    using stencil::index_t = typedef BOOST_PP_CAT(BOOST_PP_CAT(int, STENCIL_INDEX_WIDTH), _t)
    -
    - -

    A signed integer of configurable width.

    -

    This integer type is used in StencilStream to indicate cell positions and iterations, among others. Its width can be configured using the STENCIL_INDEX_WIDTH macro, which defaults to 64.

    -

    Note that this type is likely to be replaced by std::ptrdiff_t in a future update. Most performance-critical indices already use custom-precision integers tailored to their specific users, so the need to customize the width of the remaining indices is relatively low. In addition, using std::ptrdiff_t as a general index type would allow better compatibility with SYCL and other libraries.

    - -
    -
    - -

    ◆ UID

    - -
    -
    - - - - -
    typedef GenericID<uindex_t> stencil::UID
    -
    - -

    An unsigned, two-dimensional index.

    - -
    -
    - -

    ◆ uindex_t

    - -
    -
    - - - - -
    using stencil::uindex_t = typedef BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t)
    -
    - -

    An unsigned integer of configurable width.

    -

    This integer type is used in StencilStream to indicate cell positions and iterations, among others. Its width can be configured using the STENCIL_INDEX_WIDTH macro, which defaults to 64.

    -

    Note that this type is likely to be replaced by std::size_t in a future update. Most performance-critical indices already use custom-precision integers tailored to their specific users, so the need to customize the width of the remaining indices is relatively low. In addition, using std::size_t as a general index type would allow better compatibility with SYCL and other libraries.

    - -
    -
    -

    Function Documentation

    - -

    ◆ __attribute__()

    - -
    -
    -
    -template<typename T >
    - - - - - - - - -
    struct stencil::Padded stencil::__attribute__ ((aligned(std::bit_ceil(sizeof(T)))) )
    -
    - -
    -
    - -

    ◆ n_cells_to_n_words()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    constexpr uindex_t stencil::n_cells_to_n_words (uindex_t n_cells,
    uindex_t word_length 
    )
    -
    -inlineconstexpr
    -
    - -

    Compute the number of words necessary to store a given number of cells.

    -

    Some backends store cells in groups called words. Each word contains a certain number of cells, and this function computes how many words are needed to store a certain number of cells. This is the total number of cells divided by the number of cells in a word, plus one additional word if the word length doesn't divide the total number of cells.

    - -
    -
    -
    - - - - diff --git a/namespacestencil_1_1concepts.html b/namespacestencil_1_1concepts.html deleted file mode 100644 index 5d3c3de..0000000 --- a/namespacestencil_1_1concepts.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -StencilStream: stencil::concepts Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::concepts Namespace Reference
    -
    -
    - - - - - - - - - - - - - - -

    -Concepts

    concept  TransitionFunction
     A technical definition of a stencil transition function.
     
    concept  GridAccessor
     An accessor for a two-dimensional grid.
     
    concept  Grid
     A regular grid of cells.
     
    concept  StencilUpdate
     A grid updater that repeatedly applies stencil updates to each cell.
     
    -
    - - - - diff --git a/namespacestencil_1_1cpu.html b/namespacestencil_1_1cpu.html deleted file mode 100644 index 64344ba..0000000 --- a/namespacestencil_1_1cpu.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -StencilStream: stencil::cpu Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::cpu Namespace Reference
    -
    -
    - - - - - - - - -

    -Classes

    class  Grid
     A grid class for the CPU backend. More...
     
    class  StencilUpdate
     A grid updater that applies an iterative stencil code to a grid. More...
     
    -
    - - - - diff --git a/namespacestencil_1_1monotile.html b/namespacestencil_1_1monotile.html deleted file mode 100644 index 2d40f81..0000000 --- a/namespacestencil_1_1monotile.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -StencilStream: stencil::monotile Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::monotile Namespace Reference
    -
    -
    - - - - - - - - - - - -

    -Classes

    class  Grid
     A grid class for the monotile architecture. More...
     
    class  StencilUpdate
     A grid updater that applies an iterative stencil code to a grid. More...
     
    class  StencilUpdateKernel
     The execution kernel of the monotile architecture. More...
     
    -
    - - - - diff --git a/namespacestencil_1_1tdv.html b/namespacestencil_1_1tdv.html deleted file mode 100644 index 956c79c..0000000 --- a/namespacestencil_1_1tdv.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tdv Namespace Reference
    -
    -
    - - - - - -

    -Namespaces

    namespace  single_pass
     Implementations of the TDV system for single-pass backends.
     
    -
    - - - - diff --git a/namespacestencil_1_1tdv_1_1single__pass.html b/namespacestencil_1_1tdv_1_1single__pass.html deleted file mode 100644 index 02bde5c..0000000 --- a/namespacestencil_1_1tdv_1_1single__pass.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tdv::single_pass Namespace Reference
    -
    -
    - -

    Implementations of the TDV system for single-pass backends. -More...

    - - - - - - - - - - - -

    -Classes

    struct  InlineStrategy
     A TDV implementation strategy that inlines the TDV function into the transition function. More...
     
    struct  PrecomputeOnDeviceStrategy
     A TDV implementation strategy that precomputes TDVs on the device. More...
     
    struct  PrecomputeOnHostStrategy
     A TDV implementation strategy that precomputes TDVs on the host. More...
     
    - - - - - - - - - - - - - -

    -Concepts

    concept  LocalState
     The requirements for a pass-local TDV system state.
     
    concept  KernelArgument
     The requirements for a TDV kernel argument.
     
    concept  GlobalState
     The requirements for a TDV system's global state.
     
    concept  Strategy
     Requirements for a TDV implementation strategy.
     
    -

    Detailed Description

    -

    Implementations of the TDV system for single-pass backends.

    -

    These include the tiling and monotile FPGA backends as well as the CPU backend.

    -
    - - - - diff --git a/namespacestencil_1_1tiling.html b/namespacestencil_1_1tiling.html deleted file mode 100644 index 0b73112..0000000 --- a/namespacestencil_1_1tiling.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -StencilStream: stencil::tiling Namespace Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tiling Namespace Reference
    -
    -
    - - - - - - - - - - - -

    -Classes

    class  Grid
     A grid class for the tiling architecture. More...
     
    class  StencilUpdate
     A grid updater that applies an iterative stencil code to a grid. More...
     
    class  StencilUpdateKernel
     A kernel that executes a stencil transition function on a tile. More...
     
    -
    - - - - diff --git a/nav_f.png b/nav_f.png deleted file mode 100644 index 72a58a5..0000000 Binary files a/nav_f.png and /dev/null differ diff --git a/nav_fd.png b/nav_fd.png deleted file mode 100644 index 032fbdd..0000000 Binary files a/nav_fd.png and /dev/null differ diff --git a/nav_g.png b/nav_g.png deleted file mode 100644 index 2093a23..0000000 Binary files a/nav_g.png and /dev/null differ diff --git a/nav_h.png b/nav_h.png deleted file mode 100644 index 33389b1..0000000 Binary files a/nav_h.png and /dev/null differ diff --git a/nav_hd.png b/nav_hd.png deleted file mode 100644 index de80f18..0000000 Binary files a/nav_hd.png and /dev/null differ diff --git a/open.png b/open.png deleted file mode 100644 index 30f75c7..0000000 Binary files a/open.png and /dev/null differ diff --git a/plus.svg b/plus.svg deleted file mode 100644 index 0752016..0000000 --- a/plus.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/plusd.svg b/plusd.svg deleted file mode 100644 index 0c65bfe..0000000 --- a/plusd.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/search/all_0.js b/search/all_0.js deleted file mode 100644 index ea4f340..0000000 --- a/search/all_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_5f_5fattribute_5f_5f_0',['__attribute__',['../namespacestencil.html#adcfd9218c3f16d2a33a864335579513c',1,'stencil']]] -]; diff --git a/search/all_1.js b/search/all_1.js deleted file mode 100644 index 9e3c823..0000000 --- a/search/all_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['accessorsubscript_0',['accessorsubscript',['../classstencil_1_1AccessorSubscript.html',1,'stencil::AccessorSubscript< Cell, Accessor, access_mode, current_subdim >'],['../classstencil_1_1AccessorSubscript.html#a435bf8b5c0cd4800dfd5c104e547e880',1,'stencil::AccessorSubscript::AccessorSubscript(Accessor &ac, uindex_t i)'],['../classstencil_1_1AccessorSubscript.html#a64e37ae29e1dd16d257dc25a4d239457',1,'stencil::AccessorSubscript::AccessorSubscript(Accessor &ac, sycl::id< dimensions > id_prefix, uindex_t i)']]], - ['accessorsubscript_2ehpp_1',['AccessorSubscript.hpp',['../AccessorSubscript_8hpp.html',1,'']]] -]; diff --git a/search/all_10.js b/search/all_10.js deleted file mode 100644 index cf92ff8..0000000 --- a/search/all_10.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['r_0',['r',['../classstencil_1_1GenericID.html#aec43f7ef1ae03330b4cd5c6d09138e60',1,'stencil::GenericID']]], - ['readme_2emd_1',['README.md',['../README_8md.html',1,'']]] -]; diff --git a/search/all_11.js b/search/all_11.js deleted file mode 100644 index c033ec9..0000000 --- a/search/all_11.js +++ /dev/null @@ -1,32 +0,0 @@ -var searchData= -[ - ['s_20game_20of_20life_0',['Conway's Game of Life',['../index.html#autotoc_md2',1,'']]], - ['singlepassstrategies_2ehpp_1',['SinglePassStrategies.hpp',['../SinglePassStrategies_8hpp.html',1,'']]], - ['stencil_2',['stencil',['../classstencil_1_1Stencil.html',1,'stencil::Stencil< Cell, stencil_radius, TimeDependentValue >'],['../classstencil_1_1Stencil.html#a2d5a7c6324ee87fccbc3bd44b6124d5b',1,'stencil::Stencil::Stencil(ID id, UID grid_range, uindex_t iteration, uindex_t subiteration, TimeDependentValue tdv, Cell raw[diameter][diameter])'],['../classstencil_1_1Stencil.html#aaa6a789a8e49ad82a7c276bb41203820',1,'stencil::Stencil::Stencil(ID id, UID grid_range, uindex_t iteration, uindex_t subiteration, TimeDependentValue tdv)'],['../namespacestencil.html',1,'stencil']]], - ['stencil_2ehpp_3',['Stencil.hpp',['../Stencil_8hpp.html',1,'']]], - ['stencil_3a_3aconcepts_4',['concepts',['../namespacestencil_1_1concepts.html',1,'stencil']]], - ['stencil_3a_3aconcepts_3a_3agrid_5',['Grid',['../conceptstencil_1_1concepts_1_1Grid.html',1,'stencil::concepts']]], - ['stencil_3a_3aconcepts_3a_3agridaccessor_6',['GridAccessor',['../conceptstencil_1_1concepts_1_1GridAccessor.html',1,'stencil::concepts']]], - ['stencil_3a_3aconcepts_3a_3astencilupdate_7',['StencilUpdate',['../conceptstencil_1_1concepts_1_1StencilUpdate.html',1,'stencil::concepts']]], - ['stencil_3a_3aconcepts_3a_3atransitionfunction_8',['TransitionFunction',['../conceptstencil_1_1concepts_1_1TransitionFunction.html',1,'stencil::concepts']]], - ['stencil_3a_3acpu_9',['cpu',['../namespacestencil_1_1cpu.html',1,'stencil']]], - ['stencil_3a_3amonotile_10',['monotile',['../namespacestencil_1_1monotile.html',1,'stencil']]], - ['stencil_3a_3atdv_11',['tdv',['../namespacestencil_1_1tdv.html',1,'stencil']]], - ['stencil_3a_3atdv_3a_3asingle_5fpass_12',['single_pass',['../namespacestencil_1_1tdv_1_1single__pass.html',1,'stencil::tdv']]], - ['stencil_3a_3atdv_3a_3asingle_5fpass_3a_3aglobalstate_13',['GlobalState',['../conceptstencil_1_1tdv_1_1single__pass_1_1GlobalState.html',1,'stencil::tdv::single_pass']]], - ['stencil_3a_3atdv_3a_3asingle_5fpass_3a_3akernelargument_14',['KernelArgument',['../conceptstencil_1_1tdv_1_1single__pass_1_1KernelArgument.html',1,'stencil::tdv::single_pass']]], - ['stencil_3a_3atdv_3a_3asingle_5fpass_3a_3alocalstate_15',['LocalState',['../conceptstencil_1_1tdv_1_1single__pass_1_1LocalState.html',1,'stencil::tdv::single_pass']]], - ['stencil_3a_3atdv_3a_3asingle_5fpass_3a_3astrategy_16',['Strategy',['../conceptstencil_1_1tdv_1_1single__pass_1_1Strategy.html',1,'stencil::tdv::single_pass']]], - ['stencil_3a_3atiling_17',['tiling',['../namespacestencil_1_1tiling.html',1,'stencil']]], - ['stencil_5findex_5fwidth_18',['STENCIL_INDEX_WIDTH',['../Index_8hpp.html#a906d430e27ba11fb6fb4d3fd162b798d',1,'Index.hpp']]], - ['stencil_5fradius_19',['stencil_radius',['../classstencil_1_1BaseTransitionFunction.html#a15adf6fd45a98c7aa4e65ac8f7a7c7c7',1,'stencil::BaseTransitionFunction']]], - ['stencilid_20',['StencilID',['../classstencil_1_1Stencil.html#a2e433eac6aa0408350f47c6a0f495072',1,'stencil::Stencil']]], - ['stencilstream_21',['StencilStream',['../index.html',1,'']]], - ['stenciluid_22',['StencilUID',['../classstencil_1_1Stencil.html#aa028532c869d258061354206bb627d7d',1,'stencil::Stencil']]], - ['stencilupdate_23',['stencilupdate',['../classstencil_1_1monotile_1_1StencilUpdate.html#a7f50b050eb2122cd7e6ad65f670f49ad',1,'stencil::monotile::StencilUpdate::StencilUpdate()'],['../classstencil_1_1cpu_1_1StencilUpdate.html#a06ca27f7a1bd0292234b8ccad2d17991',1,'stencil::cpu::StencilUpdate::StencilUpdate()'],['../classstencil_1_1cpu_1_1StencilUpdate.html',1,'stencil::cpu::StencilUpdate< F >'],['../classstencil_1_1tiling_1_1StencilUpdate.html#a2bf7e62377b5ae4efecc705fbc619b60',1,'stencil::tiling::StencilUpdate::StencilUpdate()'],['../classstencil_1_1tiling_1_1StencilUpdate.html',1,'stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >'],['../classstencil_1_1monotile_1_1StencilUpdate.html',1,'stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >']]], - ['stencilupdate_2ehpp_24',['stencilupdate.hpp',['../tiling_2StencilUpdate_8hpp.html',1,'(Global Namespace)'],['../monotile_2StencilUpdate_8hpp.html',1,'(Global Namespace)'],['../cpu_2StencilUpdate_8hpp.html',1,'(Global Namespace)']]], - ['stencilupdatekernel_25',['stencilupdatekernel',['../classstencil_1_1tiling_1_1StencilUpdateKernel.html',1,'stencil::tiling::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, output_tile_width, output_tile_height, in_pipe, out_pipe >'],['../classstencil_1_1monotile_1_1StencilUpdateKernel.html#ad221da1d7d69a2c711d4fe8905f9526e',1,'stencil::monotile::StencilUpdateKernel::StencilUpdateKernel()'],['../classstencil_1_1tiling_1_1StencilUpdateKernel.html#a8a362a720545d40a61cfaf6ec7ef3fe5',1,'stencil::tiling::StencilUpdateKernel::StencilUpdateKernel()'],['../classstencil_1_1monotile_1_1StencilUpdateKernel.html',1,'stencil::monotile::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, max_grid_width, max_grid_height, in_pipe, out_pipe >']]], - ['subiteration_26',['subiteration',['../classstencil_1_1Stencil.html#ab05d805879209d78be6dae83041ee9f4',1,'stencil::Stencil']]], - ['submit_5fread_27',['submit_read',['../classstencil_1_1monotile_1_1Grid.html#a0dcd2ef236147b4155b9f1d6eefe7602',1,'stencil::monotile::Grid::submit_read()'],['../classstencil_1_1tiling_1_1Grid.html#a935d95d8285b1cc954b01c981e520c50',1,'stencil::tiling::Grid::submit_read()']]], - ['submit_5fwrite_28',['submit_write',['../classstencil_1_1monotile_1_1Grid.html#abe22ee3313629651586cb16ea166a0c5',1,'stencil::monotile::Grid::submit_write()'],['../classstencil_1_1tiling_1_1Grid.html#a899f2d09450542d998695c873775ee55',1,'stencil::tiling::Grid::submit_write()']]] -]; diff --git a/search/all_12.js b/search/all_12.js deleted file mode 100644 index 60000bd..0000000 --- a/search/all_12.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['tdv_0',['tdv',['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState.html#a22b6f2da6c2fe76786c49dc34a6bbc89',1,'stencil::tdv::single_pass::InlineStrategy::GlobalState::TDV'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState.html#aad843a8a2808898ced35d11b86bf0455',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState::TDV'],['../classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState.html#abd6424c017b5b39287c4f21006b64fdf',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState::TDV']]], - ['time_5fdependent_5fvalue_1',['time_dependent_value',['../classstencil_1_1Stencil.html#acffd264870f0737c7572e72c9b840cdf',1,'stencil::Stencil']]], - ['timedependentvalue_2',['TimeDependentValue',['../classstencil_1_1BaseTransitionFunction.html#a60c142abdbb606f20bdfac10dc886ddc',1,'stencil::BaseTransitionFunction']]], - ['transition_5ffunction_3',['transition_function',['../structstencil_1_1cpu_1_1StencilUpdate_1_1Params.html#af0068f29a608198fa8e9a0f9ee26bfd8',1,'stencil::cpu::StencilUpdate::Params::transition_function'],['../structstencil_1_1monotile_1_1StencilUpdate_1_1Params.html#acf20c3043c816e0500169f197e3f4af7',1,'stencil::monotile::StencilUpdate::Params::transition_function'],['../structstencil_1_1tiling_1_1StencilUpdate_1_1Params.html#a8f470dccab062b17d4dadfc3b1248ff0',1,'stencil::tiling::StencilUpdate::Params::transition_function']]] -]; diff --git a/search/all_13.js b/search/all_13.js deleted file mode 100644 index ae261ee..0000000 --- a/search/all_13.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['uid_0',['UID',['../namespacestencil.html#a005093806d49ce9a41d20a4983c9e1de',1,'stencil']]], - ['uindex_5fstencil_5ft_1',['uindex_stencil_t',['../classstencil_1_1Stencil.html#a5b63db7501b0c9fd97ebebe8a2fa8f29',1,'stencil::Stencil']]], - ['uindex_5ft_2',['uindex_t',['../namespacestencil.html#a35bed77d09460d392f62991a2f0ccb3d',1,'stencil']]], - ['usage_3',['Performance & Hardware Usage',['../index.html#autotoc_md6',1,'']]] -]; diff --git a/search/all_14.js b/search/all_14.js deleted file mode 100644 index 0458b00..0000000 --- a/search/all_14.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['value_0',['value',['../structstencil_1_1Padded.html#a3071ffa5069ea57e96129721a7a8f54c',1,'stencil::Padded::value'],['../Helpers_8hpp.html#a4fc7f59e3113e19697159919a5aad095',1,'value: Helpers.hpp']]] -]; diff --git a/search/all_2.js b/search/all_2.js deleted file mode 100644 index 799a664..0000000 --- a/search/all_2.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['basesubscript_0',['basesubscript',['../classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html#afa208bc822fecc8161d3d1b0b309ac48',1,'stencil::monotile::Grid::GridAccessor::BaseSubscript'],['../classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html#aac5c5865903a9248aca45418d523c1ea',1,'stencil::tiling::Grid::GridAccessor::BaseSubscript']]], - ['basetransitionfunction_1',['BaseTransitionFunction',['../classstencil_1_1BaseTransitionFunction.html',1,'stencil']]], - ['basetransitionfunction_2ehpp_2',['BaseTransitionFunction.hpp',['../BaseTransitionFunction_8hpp.html',1,'']]], - ['bits_5fstencil_3',['bits_stencil',['../classstencil_1_1Stencil.html#ac6f7bd8e71f02bf45bf0cf184323d6f5',1,'stencil::Stencil']]], - ['blocking_4',['blocking',['../structstencil_1_1cpu_1_1StencilUpdate_1_1Params.html#a94cd094f6f6da58a2cf1e7355aa7f77d',1,'stencil::cpu::StencilUpdate::Params::blocking'],['../structstencil_1_1monotile_1_1StencilUpdate_1_1Params.html#aa91a3638a9e692d96676c1eaf4690df4',1,'stencil::monotile::StencilUpdate::Params::blocking'],['../structstencil_1_1tiling_1_1StencilUpdate_1_1Params.html#a14eb85ada46533ac48157dc870c2ff32',1,'stencil::tiling::StencilUpdate::Params::blocking']]] -]; diff --git a/search/all_3.js b/search/all_3.js deleted file mode 100644 index 6394e2f..0000000 --- a/search/all_3.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['c_0',['c',['../classstencil_1_1GenericID.html#a3bfb826d3051950dac5ae91e9871b0d2',1,'stencil::GenericID']]], - ['citing_1',['Licensing & Citing',['../index.html#autotoc_md7',1,'']]], - ['concepts_2ehpp_2',['Concepts.hpp',['../Concepts_8hpp.html',1,'']]], - ['convection_3',['Convection',['../index.html#autotoc_md5',1,'']]], - ['conway_20s_20game_20of_20life_4',['Conway's Game of Life',['../index.html#autotoc_md2',1,'']]], - ['copy_5ffrom_5fbuffer_5',['copy_from_buffer',['../classstencil_1_1cpu_1_1Grid.html#a723ec2251b11b22c82f73259da918538',1,'stencil::cpu::Grid::copy_from_buffer()'],['../classstencil_1_1monotile_1_1Grid.html#a365e18ee4962f67420ac41e11906fa35',1,'stencil::monotile::Grid::copy_from_buffer()'],['../classstencil_1_1tiling_1_1Grid.html#a6d490c7694c5942606004f4c448a3d01',1,'stencil::tiling::Grid::copy_from_buffer()']]], - ['copy_5fto_5fbuffer_6',['copy_to_buffer',['../classstencil_1_1cpu_1_1Grid.html#a3d34cc95e40423ad26b396337cfc1577',1,'stencil::cpu::Grid::copy_to_buffer()'],['../classstencil_1_1monotile_1_1Grid.html#a9d2909c1c76a6e8916502d0084e3dcc6',1,'stencil::monotile::Grid::copy_to_buffer()'],['../classstencil_1_1tiling_1_1Grid.html#a01f05e2c1478cfb915ab774f88e59af8',1,'stencil::tiling::Grid::copy_to_buffer()']]] -]; diff --git a/search/all_4.js b/search/all_4.js deleted file mode 100644 index 9be3a80..0000000 --- a/search/all_4.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['design_20goals_0',['Design Goals',['../index.html#autotoc_md0',1,'']]], - ['device_1',['device',['../structstencil_1_1cpu_1_1StencilUpdate_1_1Params.html#acc444e49b93f51d6dfd3d8d99a7e5286',1,'stencil::cpu::StencilUpdate::Params::device'],['../structstencil_1_1monotile_1_1StencilUpdate_1_1Params.html#a8c9d76deea44512abd4437a10dbdc568',1,'stencil::monotile::StencilUpdate::Params::device'],['../structstencil_1_1tiling_1_1StencilUpdate_1_1Params.html#af7b4d6ed81b0a8d5bd40ebb344e2337f',1,'stencil::tiling::StencilUpdate::Params::device']]], - ['diameter_2',['diameter',['../classstencil_1_1Stencil.html#aab6159ffdf319a04a2c8c5602dcf93d9',1,'stencil::Stencil']]], - ['dimensions_3',['dimensions',['../classstencil_1_1AccessorSubscript.html#a8846aebd91bc669a72470b4bc610efe4',1,'stencil::AccessorSubscript::dimensions'],['../classstencil_1_1cpu_1_1Grid.html#ad98fb54cdb652bc0da7ddbd31052c08c',1,'stencil::cpu::Grid::dimensions'],['../classstencil_1_1monotile_1_1Grid.html#a27ccb4d4a11043087ebbf22448a03651',1,'stencil::monotile::Grid::dimensions'],['../classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html#aa6d18c348ac17b52b3d04c67f5650797',1,'stencil::monotile::Grid::GridAccessor::dimensions'],['../classstencil_1_1tiling_1_1Grid.html#a11cfc8d7b7039fa5df7e6134346a7ecb',1,'stencil::tiling::Grid::dimensions'],['../classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html#ab42e41193eb39c25825a690a861b7d39',1,'stencil::tiling::Grid::GridAccessor::dimensions']]] -]; diff --git a/search/all_5.js b/search/all_5.js deleted file mode 100644 index 635d749..0000000 --- a/search/all_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['examples_0',['Examples',['../index.html#autotoc_md1',1,'']]] -]; diff --git a/search/all_6.js b/search/all_6.js deleted file mode 100644 index 4d972d0..0000000 --- a/search/all_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['fdtd_0',['FDTD',['../index.html#autotoc_md4',1,'']]] -]; diff --git a/search/all_7.js b/search/all_7.js deleted file mode 100644 index b2c715c..0000000 --- a/search/all_7.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['game_20of_20life_0',['Conway's Game of Life',['../index.html#autotoc_md2',1,'']]], - ['genericid_1',['genericid',['../classstencil_1_1GenericID.html',1,'stencil::GenericID< T >'],['../classstencil_1_1GenericID.html#a3ffc396e4c50229a9cfeb1f5f4970dda',1,'stencil::GenericID::GenericID(sycl::range< 2 > sycl_range)'],['../classstencil_1_1GenericID.html#a3e3c6ae7b47ec8782f64dc75f7b132ab',1,'stencil::GenericID::GenericID(sycl::id< 2 > sycl_id)'],['../classstencil_1_1GenericID.html#a4fd0af5f4c28c820de4b165395e9abbe',1,'stencil::GenericID::GenericID(T column, T row)'],['../classstencil_1_1GenericID.html#a0ffbe515d7927ba1f9c64a96921fa4a8',1,'stencil::GenericID::GenericID()']]], - ['genericid_2ehpp_2',['GenericID.hpp',['../GenericID_8hpp.html',1,'']]], - ['get_5fbuffer_3',['get_buffer',['../classstencil_1_1cpu_1_1Grid.html#a8150179644eb6c008e4d5946490dae29',1,'stencil::cpu::Grid']]], - ['get_5fgrid_5fheight_4',['get_grid_height',['../classstencil_1_1tiling_1_1Grid.html#ac149251c540131b3f0cbcd7232d6e7d6',1,'stencil::tiling::Grid::get_grid_height()'],['../classstencil_1_1monotile_1_1Grid.html#a8b88e794b8e90f5d1ff39a3262c6f137',1,'stencil::monotile::Grid::get_grid_height()'],['../classstencil_1_1cpu_1_1Grid.html#a8e89809b848ebed2828cd4cb867cc0db',1,'stencil::cpu::Grid::get_grid_height() const']]], - ['get_5fgrid_5fwidth_5',['get_grid_width',['../classstencil_1_1cpu_1_1Grid.html#ad899c4acd6457c7a7d1dc386ee8aad72',1,'stencil::cpu::Grid::get_grid_width()'],['../classstencil_1_1monotile_1_1Grid.html#a54f85a0f21da7e7764ab2d2c7a0996c2',1,'stencil::monotile::Grid::get_grid_width()'],['../classstencil_1_1tiling_1_1Grid.html#a4c7d5fa977b98d847e8435e1be89863c',1,'stencil::tiling::Grid::get_grid_width()']]], - ['get_5fkernel_5fruntime_6',['get_kernel_runtime',['../classstencil_1_1monotile_1_1StencilUpdate.html#a1c61fda77df3acfa5a99fa2046239443',1,'stencil::monotile::StencilUpdate::get_kernel_runtime()'],['../classstencil_1_1tiling_1_1StencilUpdate.html#aa894bca73378fcd199b3969877dd6ef5',1,'stencil::tiling::StencilUpdate::get_kernel_runtime()']]], - ['get_5fn_5fprocessed_5fcells_7',['get_n_processed_cells',['../classstencil_1_1cpu_1_1StencilUpdate.html#a53c77f49cff205a4275f39ca3aac7094',1,'stencil::cpu::StencilUpdate::get_n_processed_cells()'],['../classstencil_1_1monotile_1_1StencilUpdate.html#a988c1427adcd11ec13bde75a2af45dc0',1,'stencil::monotile::StencilUpdate::get_n_processed_cells()'],['../classstencil_1_1tiling_1_1StencilUpdate.html#a60e77268e2e41e988e4e339397127674',1,'stencil::tiling::StencilUpdate::get_n_processed_cells()']]], - ['get_5fparams_8',['get_params',['../classstencil_1_1cpu_1_1StencilUpdate.html#abb3ee2bd9c598f5e03785146e4cbc9a8',1,'stencil::cpu::StencilUpdate::get_params()'],['../classstencil_1_1monotile_1_1StencilUpdate.html#a4605aec7e9f717c91ef3eabe650b7920',1,'stencil::monotile::StencilUpdate::get_params()'],['../classstencil_1_1tiling_1_1StencilUpdate.html#a86721c1eea231862cc21904d67bb7c9b',1,'stencil::tiling::StencilUpdate::get_params()']]], - ['get_5ftile_5frange_9',['get_tile_range',['../classstencil_1_1tiling_1_1Grid.html#a77e1023b2187fb64456a9cd8d72234bd',1,'stencil::tiling::Grid']]], - ['get_5ftime_5fdependent_5fvalue_10',['get_time_dependent_value',['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html#ab95f1caaa6e9d08ab7c0b0ef5cfddbbd',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState::KernelArgument::LocalState::get_time_dependent_value()'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html#ad7c0c36f765373cf499a9d9d46e7be96',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState::KernelArgument::LocalState::get_time_dependent_value()'],['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument.html#a8f2a0cc513739c74ea5a0014af1a0ec3',1,'stencil::tdv::single_pass::InlineStrategy::GlobalState::KernelArgument::get_time_dependent_value()'],['../classstencil_1_1BaseTransitionFunction.html#af2e9722c5ea473890f90d03c1fc809a7',1,'stencil::BaseTransitionFunction::get_time_dependent_value()']]], - ['get_5fwalltime_11',['get_walltime',['../classstencil_1_1tiling_1_1StencilUpdate.html#a288cbbe96655fc95ac4c3cb0c58068e3',1,'stencil::tiling::StencilUpdate::get_walltime()'],['../classstencil_1_1monotile_1_1StencilUpdate.html#a2bb50f6e658302f4500c2c4eb6f2368c',1,'stencil::monotile::StencilUpdate::get_walltime()'],['../classstencil_1_1cpu_1_1StencilUpdate.html#ae231c2dfc27b000087896b38178f95f2',1,'stencil::cpu::StencilUpdate::get_walltime()']]], - ['globalstate_12',['globalstate',['../classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState.html#afcf7f11ba612141a6b9bbf7207e29fd8',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState::GlobalState()'],['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState.html',1,'stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >'],['../classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState.html#aa038a1be0acd11f726334ac24c22ae73',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState::GlobalState()'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState.html#a33bbce8aac215044fee6170ca44feb57',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState::GlobalState()'],['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState.html#aaae9a08cd07f537555b9a5a7e37e7918',1,'stencil::tdv::single_pass::InlineStrategy::GlobalState::GlobalState()'],['../classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState.html',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState.html',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >']]], - ['goals_13',['Design Goals',['../index.html#autotoc_md0',1,'']]], - ['grid_14',['grid',['../classstencil_1_1monotile_1_1Grid.html#a29a98dc36d8c6b424e18ddd17b37e4a2',1,'stencil::monotile::Grid::Grid()'],['../classstencil_1_1tiling_1_1Grid.html#add1cf7427f54a121274cd27194178a5c',1,'stencil::tiling::Grid::Grid(Grid const &other_grid)'],['../classstencil_1_1tiling_1_1Grid.html#ab8a7eab2f33ad73c4c39c916e718d143',1,'stencil::tiling::Grid::Grid(sycl::buffer< Cell, 2 > input_buffer)'],['../classstencil_1_1tiling_1_1Grid.html#afe4a9b25af729051cb38e3e4632603fc',1,'stencil::tiling::Grid::Grid(sycl::range< 2 > range)'],['../classstencil_1_1tiling_1_1Grid.html#abbf5789242083e1c22d3ef823af3f9fa',1,'stencil::tiling::Grid::Grid(uindex_t grid_width, uindex_t grid_height)'],['../classstencil_1_1monotile_1_1Grid.html#aaa4a35ecd0a4a6d81141db11d2e49285',1,'stencil::monotile::Grid::Grid(Grid const &other_grid)'],['../classstencil_1_1monotile_1_1Grid.html#a4cda06f39520c35a163035943b29a907',1,'stencil::monotile::Grid::Grid(sycl::buffer< Cell, 2 > buffer)'],['../classstencil_1_1monotile_1_1Grid.html#a806aa4c920eb2796c702670cb87ff001',1,'stencil::monotile::Grid::Grid(uindex_t grid_width, uindex_t grid_height)'],['../classstencil_1_1cpu_1_1Grid.html#a74c431318f49344be87c717e08b7d623',1,'stencil::cpu::Grid::Grid(Grid const &other_grid)'],['../classstencil_1_1cpu_1_1Grid.html#a56ede0cbd0cc3b0546f6b7939c0ca93a',1,'stencil::cpu::Grid::Grid(sycl::range< 2 > range)'],['../classstencil_1_1cpu_1_1Grid.html',1,'stencil::cpu::Grid< Cell >'],['../classstencil_1_1monotile_1_1Grid.html',1,'stencil::monotile::Grid< Cell, word_size >'],['../classstencil_1_1tiling_1_1Grid.html',1,'stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >'],['../classstencil_1_1cpu_1_1Grid.html#a07cc2e2e9eb03e733699bb801b79b224',1,'stencil::cpu::Grid::Grid(uindex_t c, uindex_t r)'],['../classstencil_1_1cpu_1_1Grid.html#ae55a40831bcb53f682f13e24542c0a4e',1,'stencil::cpu::Grid::Grid(sycl::buffer< Cell, 2 > other_buffer)']]], - ['grid_2ehpp_15',['grid.hpp',['../cpu_2Grid_8hpp.html',1,'(Global Namespace)'],['../tiling_2Grid_8hpp.html',1,'(Global Namespace)'],['../monotile_2Grid_8hpp.html',1,'(Global Namespace)']]], - ['grid_5frange_16',['grid_range',['../classstencil_1_1Stencil.html#a264f8fd654985d5306b0a52de4e60940',1,'stencil::Stencil']]], - ['gridaccessor_17',['gridaccessor',['../classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html',1,'stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >'],['../classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html',1,'stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >'],['../classstencil_1_1cpu_1_1Grid_1_1GridAccessor.html',1,'stencil::cpu::Grid< Cell >::GridAccessor< access_mode >'],['../classstencil_1_1cpu_1_1Grid_1_1GridAccessor.html#a3c554a151275d268af60b6227affee7a',1,'stencil::cpu::Grid::GridAccessor::GridAccessor()'],['../classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html#a6533850fee0f2b9f49a15f5a94e2ae6f',1,'stencil::monotile::Grid::GridAccessor::GridAccessor()'],['../classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html#ac6e6ce5f911c89542795bbadf4435073',1,'stencil::tiling::Grid::GridAccessor::GridAccessor()']]], - ['gridimpl_18',['gridimpl',['../classstencil_1_1cpu_1_1StencilUpdate.html#a5651355c974d6e719b24483b1e3f1738',1,'stencil::cpu::StencilUpdate::GridImpl'],['../classstencil_1_1monotile_1_1StencilUpdate.html#a82fd1ad97d323a6328816c4914c0c9dc',1,'stencil::monotile::StencilUpdate::GridImpl'],['../classstencil_1_1tiling_1_1StencilUpdate.html#a050761fd3400ac0d84c290d3ed7d3c64',1,'stencil::tiling::StencilUpdate::GridImpl']]] -]; diff --git a/search/all_8.js b/search/all_8.js deleted file mode 100644 index 6ab6812..0000000 --- a/search/all_8.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['halo_5fradius_0',['halo_radius',['../classstencil_1_1tiling_1_1StencilUpdate.html#a79b7bd2afeb6d57252a273d87cf33c70',1,'stencil::tiling::StencilUpdate']]], - ['halo_5fvalue_1',['halo_value',['../structstencil_1_1cpu_1_1StencilUpdate_1_1Params.html#a520efa0ad6cba99120c347eef5090349',1,'stencil::cpu::StencilUpdate::Params::halo_value'],['../structstencil_1_1monotile_1_1StencilUpdate_1_1Params.html#aa4ec0f872d89186440975ff2b2059e4c',1,'stencil::monotile::StencilUpdate::Params::halo_value'],['../structstencil_1_1tiling_1_1StencilUpdate_1_1Params.html#a7a2dfb7037d8bb7a7e4ded0bc24f2daf',1,'stencil::tiling::StencilUpdate::Params::halo_value']]], - ['hardware_20usage_2',['Performance & Hardware Usage',['../index.html#autotoc_md6',1,'']]], - ['helpers_2ehpp_3',['Helpers.hpp',['../Helpers_8hpp.html',1,'']]], - ['hotspot_4',['HotSpot',['../index.html#autotoc_md3',1,'']]] -]; diff --git a/search/all_9.js b/search/all_9.js deleted file mode 100644 index c94a594..0000000 --- a/search/all_9.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['id_0',['id',['../classstencil_1_1Stencil.html#a6d4fec2d3646ddfb216cea75c75c18a6',1,'stencil::Stencil::id'],['../namespacestencil.html#a785fb1b1eb6ae33c0be9fa0e39fecab1',1,'stencil::ID']]], - ['index_2ehpp_1',['Index.hpp',['../Index_8hpp.html',1,'']]], - ['index_5fstencil_5ft_2',['index_stencil_t',['../classstencil_1_1Stencil.html#a9e514001b1ed5dd41fc74b270c855fb0',1,'stencil::Stencil']]], - ['index_5ft_3',['index_t',['../namespacestencil.html#add6c8bd56e028e46d55b40623d1f9e8f',1,'stencil']]], - ['inlinestrategy_4',['InlineStrategy',['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy.html',1,'stencil::tdv::single_pass']]], - ['iteration_5',['iteration',['../classstencil_1_1Stencil.html#a9ef96b8cbc11f7e8b98667455bce5b19',1,'stencil::Stencil']]], - ['iteration_5foffset_6',['iteration_offset',['../structstencil_1_1cpu_1_1StencilUpdate_1_1Params.html#a3d649a1a7e0c473ef842706f0bcaae80',1,'stencil::cpu::StencilUpdate::Params::iteration_offset'],['../structstencil_1_1monotile_1_1StencilUpdate_1_1Params.html#a401f2e17a239db86931a1b6df2ddfae0',1,'stencil::monotile::StencilUpdate::Params::iteration_offset'],['../structstencil_1_1tiling_1_1StencilUpdate_1_1Params.html#a1aa849ebca98e6c676557fbcac929783',1,'stencil::tiling::StencilUpdate::Params::iteration_offset']]] -]; diff --git a/search/all_a.js b/search/all_a.js deleted file mode 100644 index a0b9086..0000000 --- a/search/all_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['kernelargument_0',['kernelargument',['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument.html',1,'stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument.html',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument.html',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument'],['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument.html#a7fc2237ac97279b2386dbe2438579ce0',1,'stencil::tdv::single_pass::InlineStrategy::GlobalState::KernelArgument::KernelArgument()'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument.html#a21260e0638acea1b0a9838ad1a358fac',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState::KernelArgument::KernelArgument()'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument.html#ab412eaa8712251eb4c75b73b0f10ab03',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState::KernelArgument::KernelArgument()']]] -]; diff --git a/search/all_b.js b/search/all_b.js deleted file mode 100644 index c651dbf..0000000 --- a/search/all_b.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['licensing_20citing_0',['Licensing & Citing',['../index.html#autotoc_md7',1,'']]], - ['life_1',['Conway's Game of Life',['../index.html#autotoc_md2',1,'']]], - ['localstate_2',['localstate',['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState'],['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument.html#a185e329ee33f3a58f7590473503b36ce',1,'stencil::tdv::single_pass::InlineStrategy::GlobalState::KernelArgument::LocalState'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html#a3e7a86e0cd3f2e16dd03507ed71936f5',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState::KernelArgument::LocalState::LocalState()'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html#aa06633342ca6896e098b01093b5802a3',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState::KernelArgument::LocalState::LocalState()']]] -]; diff --git a/search/all_c.js b/search/all_c.js deleted file mode 100644 index d3908a4..0000000 --- a/search/all_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['make_5fsimilar_0',['make_similar',['../classstencil_1_1cpu_1_1Grid.html#a7d02f8ec80f24d38294551ce1f5d170d',1,'stencil::cpu::Grid::make_similar()'],['../classstencil_1_1monotile_1_1Grid.html#a48ebf5dd14d3db44baf1c295926d1ff1',1,'stencil::monotile::Grid::make_similar()'],['../classstencil_1_1tiling_1_1Grid.html#aaf24b2e7e2f8f7b32e13e63447010844',1,'stencil::tiling::Grid::make_similar()']]] -]; diff --git a/search/all_d.js b/search/all_d.js deleted file mode 100644 index a2fb0fe..0000000 --- a/search/all_d.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['n_5fcells_5fto_5fn_5fwords_0',['n_cells_to_n_words',['../namespacestencil.html#ad756f3810856bc3f9d459885d77c382a',1,'stencil']]], - ['n_5fiterations_1',['n_iterations',['../structstencil_1_1cpu_1_1StencilUpdate_1_1Params.html#a99abefe308e73a323e7b2342996a1a2f',1,'stencil::cpu::StencilUpdate::Params::n_iterations'],['../structstencil_1_1monotile_1_1StencilUpdate_1_1Params.html#a1b5e2644e93eeaa9cc5a72aff44df3e0',1,'stencil::monotile::StencilUpdate::Params::n_iterations'],['../structstencil_1_1tiling_1_1StencilUpdate_1_1Params.html#a4a759d54f50e8cbc956e9817ae2ba0e2',1,'stencil::tiling::StencilUpdate::Params::n_iterations']]], - ['n_5fsubiterations_2',['n_subiterations',['../classstencil_1_1BaseTransitionFunction.html#a19c3ca98162691fcb350aed9a353b9f7',1,'stencil::BaseTransitionFunction']]] -]; diff --git a/search/all_e.js b/search/all_e.js deleted file mode 100644 index ca23e65..0000000 --- a/search/all_e.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['of_20life_0',['Conway's Game of Life',['../index.html#autotoc_md2',1,'']]], - ['operator_28_29_1',['operator()',['../classstencil_1_1monotile_1_1StencilUpdateKernel.html#aba71144f53197120eb6b93831ba4256b',1,'stencil::monotile::StencilUpdateKernel::operator()()'],['../classstencil_1_1tiling_1_1StencilUpdate.html#a9fa10fb8aad1236c220fcd3ab046fce4',1,'stencil::tiling::StencilUpdate::operator()()'],['../classstencil_1_1monotile_1_1StencilUpdate.html#a81f33e224480497d729b33ae958b953d',1,'stencil::monotile::StencilUpdate::operator()()'],['../classstencil_1_1cpu_1_1StencilUpdate.html#afd74e6ab64304f7d47bdcc04cc9f6032',1,'stencil::cpu::StencilUpdate::operator()()'],['../classstencil_1_1tiling_1_1StencilUpdateKernel.html#a2c5a8a4297f5fe946d8e4f6bc8f7d670',1,'stencil::tiling::StencilUpdateKernel::operator()()']]], - ['operator_3d_3d_2',['operator==',['../classstencil_1_1GenericID.html#a56f29c35be0f87a5eb18cd55d4d35873',1,'stencil::GenericID']]], - ['operator_5b_5d_3',['operator[]',['../classstencil_1_1Stencil.html#aae31de9264aef3ef53370dc475d2da0e',1,'stencil::Stencil::operator[]()'],['../classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html#a47401fbc3e1698de06a62503d2726ea2',1,'stencil::tiling::Grid::GridAccessor::operator[](sycl::id< 2 > id)'],['../classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html#a93eaba6e95056bd1614cd2c8fdd4163f',1,'stencil::tiling::Grid::GridAccessor::operator[](sycl::id< 2 > id)'],['../classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html#a1dce934f2f7aa732a79dc9f12693f210',1,'stencil::tiling::Grid::GridAccessor::operator[](uindex_t i)'],['../classstencil_1_1Stencil.html#a4182a31d26db8bcfb04e1116e8bfe617',1,'stencil::Stencil::operator[](StencilUID id)'],['../classstencil_1_1Stencil.html#ad6590fab4513e5c5345e7b13e345a517',1,'stencil::Stencil::operator[](StencilUID id) const'],['../classstencil_1_1Stencil.html#a877ee999c7f57afdbb495c96fd289380',1,'stencil::Stencil::operator[](UID id)'],['../classstencil_1_1Stencil.html#aaa156ac96b7a6f53e4b9c733f397fb53',1,'stencil::Stencil::operator[](UID id) const'],['../classstencil_1_1Stencil.html#adf1304b9cd46128f2a9f5072331f1252',1,'stencil::Stencil::operator[](StencilID id)'],['../classstencil_1_1Stencil.html#a32328cf289ee4fbb76e4ffbee8f9e330',1,'stencil::Stencil::operator[](ID id)'],['../classstencil_1_1Stencil.html#a26d07c9f9886e041d94f3168931b41e6',1,'stencil::Stencil::operator[](ID id) const'],['../classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html#aad9224be4740450892e1089273bd171b',1,'stencil::monotile::Grid::GridAccessor::operator[](sycl::id< 2 > id)'],['../classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html#a7cf0e69fab2890786d1d93b6304f3eee',1,'stencil::monotile::Grid::GridAccessor::operator[](sycl::id< 2 > id)'],['../classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html#a9c7bba9d8799e492f12fb8aa0227ff24',1,'stencil::monotile::Grid::GridAccessor::operator[](uindex_t i)'],['../classstencil_1_1AccessorSubscript.html#a28c97b392888fb6dbfde109615ae3c12',1,'stencil::AccessorSubscript::operator[](uindex_t i)'],['../classstencil_1_1AccessorSubscript.html#a510de3048dda4f10cb4b16fd96677d89',1,'stencil::AccessorSubscript::operator[](uindex_t i)'],['../classstencil_1_1AccessorSubscript.html#a2a1bcd3fc05ffdbb407f2bd90899d255',1,'stencil::AccessorSubscript::operator[](uindex_t i)']]] -]; diff --git a/search/all_f.js b/search/all_f.js deleted file mode 100644 index da3c991..0000000 --- a/search/all_f.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['padded_0',['Padded',['../structstencil_1_1Padded.html',1,'stencil']]], - ['params_1',['params',['../structstencil_1_1cpu_1_1StencilUpdate_1_1Params.html',1,'stencil::cpu::StencilUpdate< F >::Params'],['../structstencil_1_1monotile_1_1StencilUpdate_1_1Params.html',1,'stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params'],['../structstencil_1_1tiling_1_1StencilUpdate_1_1Params.html',1,'stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params']]], - ['performance_20hardware_20usage_2',['Performance & Hardware Usage',['../index.html#autotoc_md6',1,'']]], - ['precomputeondevicestrategy_3',['PrecomputeOnDeviceStrategy',['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy.html',1,'stencil::tdv::single_pass']]], - ['precomputeonhoststrategy_4',['PrecomputeOnHostStrategy',['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy.html',1,'stencil::tdv::single_pass']]], - ['profiling_5',['profiling',['../structstencil_1_1monotile_1_1StencilUpdate_1_1Params.html#a7c1d8784bd4f2fea460bddc9a5e2c32d',1,'stencil::monotile::StencilUpdate::Params::profiling'],['../structstencil_1_1tiling_1_1StencilUpdate_1_1Params.html#ae9c5507370fbfbda30c3c038df62fcdf',1,'stencil::tiling::StencilUpdate::Params::profiling']]] -]; diff --git a/search/classes_0.js b/search/classes_0.js deleted file mode 100644 index 1dcabc7..0000000 --- a/search/classes_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['accessorsubscript_0',['AccessorSubscript',['../classstencil_1_1AccessorSubscript.html',1,'stencil']]] -]; diff --git a/search/classes_1.js b/search/classes_1.js deleted file mode 100644 index 2cd48b8..0000000 --- a/search/classes_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['basetransitionfunction_0',['BaseTransitionFunction',['../classstencil_1_1BaseTransitionFunction.html',1,'stencil']]] -]; diff --git a/search/classes_2.js b/search/classes_2.js deleted file mode 100644 index bf55cdb..0000000 --- a/search/classes_2.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['genericid_0',['GenericID',['../classstencil_1_1GenericID.html',1,'stencil']]], - ['globalstate_1',['globalstate',['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState.html',1,'stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState.html',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >'],['../classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState.html',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >']]], - ['grid_2',['grid',['../classstencil_1_1cpu_1_1Grid.html',1,'stencil::cpu::Grid< Cell >'],['../classstencil_1_1monotile_1_1Grid.html',1,'stencil::monotile::Grid< Cell, word_size >'],['../classstencil_1_1tiling_1_1Grid.html',1,'stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >']]], - ['gridaccessor_3',['gridaccessor',['../classstencil_1_1cpu_1_1Grid_1_1GridAccessor.html',1,'stencil::cpu::Grid< Cell >::GridAccessor< access_mode >'],['../classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html',1,'stencil::monotile::Grid< Cell, word_size >::GridAccessor< access_mode >'],['../classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html',1,'stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >']]] -]; diff --git a/search/classes_3.js b/search/classes_3.js deleted file mode 100644 index 87aeabd..0000000 --- a/search/classes_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['inlinestrategy_0',['InlineStrategy',['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy.html',1,'stencil::tdv::single_pass']]] -]; diff --git a/search/classes_4.js b/search/classes_4.js deleted file mode 100644 index 8f96d3c..0000000 --- a/search/classes_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['kernelargument_0',['kernelargument',['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument.html',1,'stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument.html',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument.html',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument']]] -]; diff --git a/search/classes_5.js b/search/classes_5.js deleted file mode 100644 index 3587287..0000000 --- a/search/classes_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['localstate_0',['localstate',['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState']]] -]; diff --git a/search/classes_6.js b/search/classes_6.js deleted file mode 100644 index d5e30b3..0000000 --- a/search/classes_6.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['padded_0',['Padded',['../structstencil_1_1Padded.html',1,'stencil']]], - ['params_1',['params',['../structstencil_1_1cpu_1_1StencilUpdate_1_1Params.html',1,'stencil::cpu::StencilUpdate< F >::Params'],['../structstencil_1_1monotile_1_1StencilUpdate_1_1Params.html',1,'stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params'],['../structstencil_1_1tiling_1_1StencilUpdate_1_1Params.html',1,'stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params']]], - ['precomputeondevicestrategy_2',['PrecomputeOnDeviceStrategy',['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy.html',1,'stencil::tdv::single_pass']]], - ['precomputeonhoststrategy_3',['PrecomputeOnHostStrategy',['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy.html',1,'stencil::tdv::single_pass']]] -]; diff --git a/search/classes_7.js b/search/classes_7.js deleted file mode 100644 index 8a12160..0000000 --- a/search/classes_7.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['stencil_0',['Stencil',['../classstencil_1_1Stencil.html',1,'stencil']]], - ['stencilupdate_1',['stencilupdate',['../classstencil_1_1cpu_1_1StencilUpdate.html',1,'stencil::cpu::StencilUpdate< F >'],['../classstencil_1_1monotile_1_1StencilUpdate.html',1,'stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >'],['../classstencil_1_1tiling_1_1StencilUpdate.html',1,'stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >']]], - ['stencilupdatekernel_2',['stencilupdatekernel',['../classstencil_1_1monotile_1_1StencilUpdateKernel.html',1,'stencil::monotile::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, max_grid_width, max_grid_height, in_pipe, out_pipe >'],['../classstencil_1_1tiling_1_1StencilUpdateKernel.html',1,'stencil::tiling::StencilUpdateKernel< TransFunc, TDVKernelArgument, n_processing_elements, output_tile_width, output_tile_height, in_pipe, out_pipe >']]] -]; diff --git a/search/close.svg b/search/close.svg deleted file mode 100644 index 337d6cc..0000000 --- a/search/close.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/search/concepts_0.js b/search/concepts_0.js deleted file mode 100644 index 5eec823..0000000 --- a/search/concepts_0.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['stencil_3a_3aconcepts_3a_3agrid_0',['Grid',['../conceptstencil_1_1concepts_1_1Grid.html',1,'stencil::concepts']]], - ['stencil_3a_3aconcepts_3a_3agridaccessor_1',['GridAccessor',['../conceptstencil_1_1concepts_1_1GridAccessor.html',1,'stencil::concepts']]], - ['stencil_3a_3aconcepts_3a_3astencilupdate_2',['StencilUpdate',['../conceptstencil_1_1concepts_1_1StencilUpdate.html',1,'stencil::concepts']]], - ['stencil_3a_3aconcepts_3a_3atransitionfunction_3',['TransitionFunction',['../conceptstencil_1_1concepts_1_1TransitionFunction.html',1,'stencil::concepts']]], - ['stencil_3a_3atdv_3a_3asingle_5fpass_3a_3aglobalstate_4',['GlobalState',['../conceptstencil_1_1tdv_1_1single__pass_1_1GlobalState.html',1,'stencil::tdv::single_pass']]], - ['stencil_3a_3atdv_3a_3asingle_5fpass_3a_3akernelargument_5',['KernelArgument',['../conceptstencil_1_1tdv_1_1single__pass_1_1KernelArgument.html',1,'stencil::tdv::single_pass']]], - ['stencil_3a_3atdv_3a_3asingle_5fpass_3a_3alocalstate_6',['LocalState',['../conceptstencil_1_1tdv_1_1single__pass_1_1LocalState.html',1,'stencil::tdv::single_pass']]], - ['stencil_3a_3atdv_3a_3asingle_5fpass_3a_3astrategy_7',['Strategy',['../conceptstencil_1_1tdv_1_1single__pass_1_1Strategy.html',1,'stencil::tdv::single_pass']]] -]; diff --git a/search/defines_0.js b/search/defines_0.js deleted file mode 100644 index 90c5a00..0000000 --- a/search/defines_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['stencil_5findex_5fwidth_0',['STENCIL_INDEX_WIDTH',['../Index_8hpp.html#a906d430e27ba11fb6fb4d3fd162b798d',1,'Index.hpp']]] -]; diff --git a/search/files_0.js b/search/files_0.js deleted file mode 100644 index ce09ddf..0000000 --- a/search/files_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['accessorsubscript_2ehpp_0',['AccessorSubscript.hpp',['../AccessorSubscript_8hpp.html',1,'']]] -]; diff --git a/search/files_1.js b/search/files_1.js deleted file mode 100644 index d08dcd1..0000000 --- a/search/files_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['basetransitionfunction_2ehpp_0',['BaseTransitionFunction.hpp',['../BaseTransitionFunction_8hpp.html',1,'']]] -]; diff --git a/search/files_2.js b/search/files_2.js deleted file mode 100644 index 5a7b961..0000000 --- a/search/files_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['concepts_2ehpp_0',['Concepts.hpp',['../Concepts_8hpp.html',1,'']]] -]; diff --git a/search/files_3.js b/search/files_3.js deleted file mode 100644 index 0c2f5ef..0000000 --- a/search/files_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['genericid_2ehpp_0',['GenericID.hpp',['../GenericID_8hpp.html',1,'']]], - ['grid_2ehpp_1',['grid.hpp',['../cpu_2Grid_8hpp.html',1,'(Global Namespace)'],['../monotile_2Grid_8hpp.html',1,'(Global Namespace)'],['../tiling_2Grid_8hpp.html',1,'(Global Namespace)']]] -]; diff --git a/search/files_4.js b/search/files_4.js deleted file mode 100644 index c788d03..0000000 --- a/search/files_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['helpers_2ehpp_0',['Helpers.hpp',['../Helpers_8hpp.html',1,'']]] -]; diff --git a/search/files_5.js b/search/files_5.js deleted file mode 100644 index f17af7d..0000000 --- a/search/files_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['index_2ehpp_0',['Index.hpp',['../Index_8hpp.html',1,'']]] -]; diff --git a/search/files_6.js b/search/files_6.js deleted file mode 100644 index 9847676..0000000 --- a/search/files_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]] -]; diff --git a/search/files_7.js b/search/files_7.js deleted file mode 100644 index 119fd6b..0000000 --- a/search/files_7.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['singlepassstrategies_2ehpp_0',['SinglePassStrategies.hpp',['../SinglePassStrategies_8hpp.html',1,'']]], - ['stencil_2ehpp_1',['Stencil.hpp',['../Stencil_8hpp.html',1,'']]], - ['stencilupdate_2ehpp_2',['stencilupdate.hpp',['../cpu_2StencilUpdate_8hpp.html',1,'(Global Namespace)'],['../monotile_2StencilUpdate_8hpp.html',1,'(Global Namespace)'],['../tiling_2StencilUpdate_8hpp.html',1,'(Global Namespace)']]] -]; diff --git a/search/functions_0.js b/search/functions_0.js deleted file mode 100644 index ea4f340..0000000 --- a/search/functions_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_5f_5fattribute_5f_5f_0',['__attribute__',['../namespacestencil.html#adcfd9218c3f16d2a33a864335579513c',1,'stencil']]] -]; diff --git a/search/functions_1.js b/search/functions_1.js deleted file mode 100644 index 7de97c2..0000000 --- a/search/functions_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['accessorsubscript_0',['accessorsubscript',['../classstencil_1_1AccessorSubscript.html#a435bf8b5c0cd4800dfd5c104e547e880',1,'stencil::AccessorSubscript::AccessorSubscript(Accessor &ac, uindex_t i)'],['../classstencil_1_1AccessorSubscript.html#a64e37ae29e1dd16d257dc25a4d239457',1,'stencil::AccessorSubscript::AccessorSubscript(Accessor &ac, sycl::id< dimensions > id_prefix, uindex_t i)']]] -]; diff --git a/search/functions_2.js b/search/functions_2.js deleted file mode 100644 index 18f57fb..0000000 --- a/search/functions_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['copy_5ffrom_5fbuffer_0',['copy_from_buffer',['../classstencil_1_1cpu_1_1Grid.html#a723ec2251b11b22c82f73259da918538',1,'stencil::cpu::Grid::copy_from_buffer()'],['../classstencil_1_1monotile_1_1Grid.html#a365e18ee4962f67420ac41e11906fa35',1,'stencil::monotile::Grid::copy_from_buffer()'],['../classstencil_1_1tiling_1_1Grid.html#a6d490c7694c5942606004f4c448a3d01',1,'stencil::tiling::Grid::copy_from_buffer()']]], - ['copy_5fto_5fbuffer_1',['copy_to_buffer',['../classstencil_1_1cpu_1_1Grid.html#a3d34cc95e40423ad26b396337cfc1577',1,'stencil::cpu::Grid::copy_to_buffer()'],['../classstencil_1_1monotile_1_1Grid.html#a9d2909c1c76a6e8916502d0084e3dcc6',1,'stencil::monotile::Grid::copy_to_buffer()'],['../classstencil_1_1tiling_1_1Grid.html#a01f05e2c1478cfb915ab774f88e59af8',1,'stencil::tiling::Grid::copy_to_buffer()']]] -]; diff --git a/search/functions_3.js b/search/functions_3.js deleted file mode 100644 index 5f2a70a..0000000 --- a/search/functions_3.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['genericid_0',['genericid',['../classstencil_1_1GenericID.html#a4fd0af5f4c28c820de4b165395e9abbe',1,'stencil::GenericID::GenericID(T column, T row)'],['../classstencil_1_1GenericID.html#a3e3c6ae7b47ec8782f64dc75f7b132ab',1,'stencil::GenericID::GenericID(sycl::id< 2 > sycl_id)'],['../classstencil_1_1GenericID.html#a3ffc396e4c50229a9cfeb1f5f4970dda',1,'stencil::GenericID::GenericID(sycl::range< 2 > sycl_range)'],['../classstencil_1_1GenericID.html#a0ffbe515d7927ba1f9c64a96921fa4a8',1,'stencil::GenericID::GenericID()']]], - ['get_5fbuffer_1',['get_buffer',['../classstencil_1_1cpu_1_1Grid.html#a8150179644eb6c008e4d5946490dae29',1,'stencil::cpu::Grid']]], - ['get_5fgrid_5fheight_2',['get_grid_height',['../classstencil_1_1cpu_1_1Grid.html#a8e89809b848ebed2828cd4cb867cc0db',1,'stencil::cpu::Grid::get_grid_height()'],['../classstencil_1_1monotile_1_1Grid.html#a8b88e794b8e90f5d1ff39a3262c6f137',1,'stencil::monotile::Grid::get_grid_height()'],['../classstencil_1_1tiling_1_1Grid.html#ac149251c540131b3f0cbcd7232d6e7d6',1,'stencil::tiling::Grid::get_grid_height()']]], - ['get_5fgrid_5fwidth_3',['get_grid_width',['../classstencil_1_1cpu_1_1Grid.html#ad899c4acd6457c7a7d1dc386ee8aad72',1,'stencil::cpu::Grid::get_grid_width()'],['../classstencil_1_1monotile_1_1Grid.html#a54f85a0f21da7e7764ab2d2c7a0996c2',1,'stencil::monotile::Grid::get_grid_width()'],['../classstencil_1_1tiling_1_1Grid.html#a4c7d5fa977b98d847e8435e1be89863c',1,'stencil::tiling::Grid::get_grid_width()']]], - ['get_5fkernel_5fruntime_4',['get_kernel_runtime',['../classstencil_1_1monotile_1_1StencilUpdate.html#a1c61fda77df3acfa5a99fa2046239443',1,'stencil::monotile::StencilUpdate::get_kernel_runtime()'],['../classstencil_1_1tiling_1_1StencilUpdate.html#aa894bca73378fcd199b3969877dd6ef5',1,'stencil::tiling::StencilUpdate::get_kernel_runtime()']]], - ['get_5fn_5fprocessed_5fcells_5',['get_n_processed_cells',['../classstencil_1_1cpu_1_1StencilUpdate.html#a53c77f49cff205a4275f39ca3aac7094',1,'stencil::cpu::StencilUpdate::get_n_processed_cells()'],['../classstencil_1_1monotile_1_1StencilUpdate.html#a988c1427adcd11ec13bde75a2af45dc0',1,'stencil::monotile::StencilUpdate::get_n_processed_cells()'],['../classstencil_1_1tiling_1_1StencilUpdate.html#a60e77268e2e41e988e4e339397127674',1,'stencil::tiling::StencilUpdate::get_n_processed_cells()']]], - ['get_5fparams_6',['get_params',['../classstencil_1_1cpu_1_1StencilUpdate.html#abb3ee2bd9c598f5e03785146e4cbc9a8',1,'stencil::cpu::StencilUpdate::get_params()'],['../classstencil_1_1monotile_1_1StencilUpdate.html#a4605aec7e9f717c91ef3eabe650b7920',1,'stencil::monotile::StencilUpdate::get_params()'],['../classstencil_1_1tiling_1_1StencilUpdate.html#a86721c1eea231862cc21904d67bb7c9b',1,'stencil::tiling::StencilUpdate::get_params()']]], - ['get_5ftile_5frange_7',['get_tile_range',['../classstencil_1_1tiling_1_1Grid.html#a77e1023b2187fb64456a9cd8d72234bd',1,'stencil::tiling::Grid']]], - ['get_5ftime_5fdependent_5fvalue_8',['get_time_dependent_value',['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html#ab95f1caaa6e9d08ab7c0b0ef5cfddbbd',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState::KernelArgument::LocalState::get_time_dependent_value()'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html#ad7c0c36f765373cf499a9d9d46e7be96',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState::KernelArgument::LocalState::get_time_dependent_value()'],['../classstencil_1_1BaseTransitionFunction.html#af2e9722c5ea473890f90d03c1fc809a7',1,'stencil::BaseTransitionFunction::get_time_dependent_value()'],['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument.html#a8f2a0cc513739c74ea5a0014af1a0ec3',1,'stencil::tdv::single_pass::InlineStrategy::GlobalState::KernelArgument::get_time_dependent_value()']]], - ['get_5fwalltime_9',['get_walltime',['../classstencil_1_1cpu_1_1StencilUpdate.html#ae231c2dfc27b000087896b38178f95f2',1,'stencil::cpu::StencilUpdate::get_walltime()'],['../classstencil_1_1monotile_1_1StencilUpdate.html#a2bb50f6e658302f4500c2c4eb6f2368c',1,'stencil::monotile::StencilUpdate::get_walltime()'],['../classstencil_1_1tiling_1_1StencilUpdate.html#a288cbbe96655fc95ac4c3cb0c58068e3',1,'stencil::tiling::StencilUpdate::get_walltime()']]], - ['globalstate_10',['globalstate',['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState.html#aaae9a08cd07f537555b9a5a7e37e7918',1,'stencil::tdv::single_pass::InlineStrategy::GlobalState::GlobalState()'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState.html#a33bbce8aac215044fee6170ca44feb57',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState::GlobalState()'],['../classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState.html#aa038a1be0acd11f726334ac24c22ae73',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState::GlobalState(TransFunc function, uindex_t iteration_offset, uindex_t n_iterations)'],['../classstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState.html#afcf7f11ba612141a6b9bbf7207e29fd8',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState::GlobalState(GlobalState const &other)']]], - ['grid_11',['grid',['../classstencil_1_1cpu_1_1Grid.html#a74c431318f49344be87c717e08b7d623',1,'stencil::cpu::Grid::Grid()'],['../classstencil_1_1tiling_1_1Grid.html#add1cf7427f54a121274cd27194178a5c',1,'stencil::tiling::Grid::Grid(Grid const &other_grid)'],['../classstencil_1_1tiling_1_1Grid.html#ab8a7eab2f33ad73c4c39c916e718d143',1,'stencil::tiling::Grid::Grid(sycl::buffer< Cell, 2 > input_buffer)'],['../classstencil_1_1tiling_1_1Grid.html#afe4a9b25af729051cb38e3e4632603fc',1,'stencil::tiling::Grid::Grid(sycl::range< 2 > range)'],['../classstencil_1_1tiling_1_1Grid.html#abbf5789242083e1c22d3ef823af3f9fa',1,'stencil::tiling::Grid::Grid(uindex_t grid_width, uindex_t grid_height)'],['../classstencil_1_1monotile_1_1Grid.html#aaa4a35ecd0a4a6d81141db11d2e49285',1,'stencil::monotile::Grid::Grid(Grid const &other_grid)'],['../classstencil_1_1monotile_1_1Grid.html#a4cda06f39520c35a163035943b29a907',1,'stencil::monotile::Grid::Grid(sycl::buffer< Cell, 2 > buffer)'],['../classstencil_1_1monotile_1_1Grid.html#a29a98dc36d8c6b424e18ddd17b37e4a2',1,'stencil::monotile::Grid::Grid(sycl::range< 2 > range)'],['../classstencil_1_1monotile_1_1Grid.html#a806aa4c920eb2796c702670cb87ff001',1,'stencil::monotile::Grid::Grid(uindex_t grid_width, uindex_t grid_height)'],['../classstencil_1_1cpu_1_1Grid.html#ae55a40831bcb53f682f13e24542c0a4e',1,'stencil::cpu::Grid::Grid(sycl::buffer< Cell, 2 > other_buffer)'],['../classstencil_1_1cpu_1_1Grid.html#a56ede0cbd0cc3b0546f6b7939c0ca93a',1,'stencil::cpu::Grid::Grid(sycl::range< 2 > range)'],['../classstencil_1_1cpu_1_1Grid.html#a07cc2e2e9eb03e733699bb801b79b224',1,'stencil::cpu::Grid::Grid(uindex_t c, uindex_t r)']]], - ['gridaccessor_12',['gridaccessor',['../classstencil_1_1cpu_1_1Grid_1_1GridAccessor.html#a3c554a151275d268af60b6227affee7a',1,'stencil::cpu::Grid::GridAccessor::GridAccessor()'],['../classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html#a6533850fee0f2b9f49a15f5a94e2ae6f',1,'stencil::monotile::Grid::GridAccessor::GridAccessor()'],['../classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html#ac6e6ce5f911c89542795bbadf4435073',1,'stencil::tiling::Grid::GridAccessor::GridAccessor()']]] -]; diff --git a/search/functions_4.js b/search/functions_4.js deleted file mode 100644 index 36acd74..0000000 --- a/search/functions_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['kernelargument_0',['kernelargument',['../structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument.html#a7fc2237ac97279b2386dbe2438579ce0',1,'stencil::tdv::single_pass::InlineStrategy::GlobalState::KernelArgument::KernelArgument()'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument.html#a21260e0638acea1b0a9838ad1a358fac',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState::KernelArgument::KernelArgument()'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument.html#ab412eaa8712251eb4c75b73b0f10ab03',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState::KernelArgument::KernelArgument()']]] -]; diff --git a/search/functions_5.js b/search/functions_5.js deleted file mode 100644 index e00c4e4..0000000 --- a/search/functions_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['localstate_0',['localstate',['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html#a3e7a86e0cd3f2e16dd03507ed71936f5',1,'stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState::KernelArgument::LocalState::LocalState()'],['../structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html#aa06633342ca6896e098b01093b5802a3',1,'stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState::KernelArgument::LocalState::LocalState()']]] -]; diff --git a/search/functions_6.js b/search/functions_6.js deleted file mode 100644 index d3908a4..0000000 --- a/search/functions_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['make_5fsimilar_0',['make_similar',['../classstencil_1_1cpu_1_1Grid.html#a7d02f8ec80f24d38294551ce1f5d170d',1,'stencil::cpu::Grid::make_similar()'],['../classstencil_1_1monotile_1_1Grid.html#a48ebf5dd14d3db44baf1c295926d1ff1',1,'stencil::monotile::Grid::make_similar()'],['../classstencil_1_1tiling_1_1Grid.html#aaf24b2e7e2f8f7b32e13e63447010844',1,'stencil::tiling::Grid::make_similar()']]] -]; diff --git a/search/functions_7.js b/search/functions_7.js deleted file mode 100644 index 73447fb..0000000 --- a/search/functions_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['n_5fcells_5fto_5fn_5fwords_0',['n_cells_to_n_words',['../namespacestencil.html#ad756f3810856bc3f9d459885d77c382a',1,'stencil']]] -]; diff --git a/search/functions_8.js b/search/functions_8.js deleted file mode 100644 index 6ac5421..0000000 --- a/search/functions_8.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['operator_28_29_0',['operator()',['../classstencil_1_1monotile_1_1StencilUpdateKernel.html#aba71144f53197120eb6b93831ba4256b',1,'stencil::monotile::StencilUpdateKernel::operator()()'],['../classstencil_1_1monotile_1_1StencilUpdate.html#a81f33e224480497d729b33ae958b953d',1,'stencil::monotile::StencilUpdate::operator()()'],['../classstencil_1_1tiling_1_1StencilUpdateKernel.html#a2c5a8a4297f5fe946d8e4f6bc8f7d670',1,'stencil::tiling::StencilUpdateKernel::operator()()'],['../classstencil_1_1tiling_1_1StencilUpdate.html#a9fa10fb8aad1236c220fcd3ab046fce4',1,'stencil::tiling::StencilUpdate::operator()()'],['../classstencil_1_1cpu_1_1StencilUpdate.html#afd74e6ab64304f7d47bdcc04cc9f6032',1,'stencil::cpu::StencilUpdate::operator()()']]], - ['operator_3d_3d_1',['operator==',['../classstencil_1_1GenericID.html#a56f29c35be0f87a5eb18cd55d4d35873',1,'stencil::GenericID']]], - ['operator_5b_5d_2',['operator[]',['../classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html#a47401fbc3e1698de06a62503d2726ea2',1,'stencil::tiling::Grid::GridAccessor::operator[](sycl::id< 2 > id)'],['../classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html#a93eaba6e95056bd1614cd2c8fdd4163f',1,'stencil::tiling::Grid::GridAccessor::operator[](sycl::id< 2 > id)'],['../classstencil_1_1tiling_1_1Grid_1_1GridAccessor.html#a1dce934f2f7aa732a79dc9f12693f210',1,'stencil::tiling::Grid::GridAccessor::operator[](uindex_t i)'],['../classstencil_1_1Stencil.html#a4182a31d26db8bcfb04e1116e8bfe617',1,'stencil::Stencil::operator[](StencilUID id)'],['../classstencil_1_1Stencil.html#ad6590fab4513e5c5345e7b13e345a517',1,'stencil::Stencil::operator[](StencilUID id) const'],['../classstencil_1_1Stencil.html#a877ee999c7f57afdbb495c96fd289380',1,'stencil::Stencil::operator[](UID id)'],['../classstencil_1_1Stencil.html#aaa156ac96b7a6f53e4b9c733f397fb53',1,'stencil::Stencil::operator[](UID id) const'],['../classstencil_1_1Stencil.html#adf1304b9cd46128f2a9f5072331f1252',1,'stencil::Stencil::operator[](StencilID id)'],['../classstencil_1_1Stencil.html#aae31de9264aef3ef53370dc475d2da0e',1,'stencil::Stencil::operator[](StencilID id) const'],['../classstencil_1_1Stencil.html#a32328cf289ee4fbb76e4ffbee8f9e330',1,'stencil::Stencil::operator[](ID id)'],['../classstencil_1_1Stencil.html#a26d07c9f9886e041d94f3168931b41e6',1,'stencil::Stencil::operator[](ID id) const'],['../classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html#aad9224be4740450892e1089273bd171b',1,'stencil::monotile::Grid::GridAccessor::operator[](sycl::id< 2 > id)'],['../classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html#a7cf0e69fab2890786d1d93b6304f3eee',1,'stencil::monotile::Grid::GridAccessor::operator[](sycl::id< 2 > id)'],['../classstencil_1_1monotile_1_1Grid_1_1GridAccessor.html#a9c7bba9d8799e492f12fb8aa0227ff24',1,'stencil::monotile::Grid::GridAccessor::operator[](uindex_t i)'],['../classstencil_1_1AccessorSubscript.html#a28c97b392888fb6dbfde109615ae3c12',1,'stencil::AccessorSubscript::operator[](uindex_t i)'],['../classstencil_1_1AccessorSubscript.html#a510de3048dda4f10cb4b16fd96677d89',1,'stencil::AccessorSubscript::operator[](uindex_t i)'],['../classstencil_1_1AccessorSubscript.html#a2a1bcd3fc05ffdbb407f2bd90899d255',1,'stencil::AccessorSubscript::operator[](uindex_t i)']]] -]; diff --git a/search/functions_9.js b/search/functions_9.js deleted file mode 100644 index 065be35..0000000 --- a/search/functions_9.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['stencil_0',['stencil',['../classstencil_1_1Stencil.html#aaa6a789a8e49ad82a7c276bb41203820',1,'stencil::Stencil::Stencil(ID id, UID grid_range, uindex_t iteration, uindex_t subiteration, TimeDependentValue tdv)'],['../classstencil_1_1Stencil.html#a2d5a7c6324ee87fccbc3bd44b6124d5b',1,'stencil::Stencil::Stencil(ID id, UID grid_range, uindex_t iteration, uindex_t subiteration, TimeDependentValue tdv, Cell raw[diameter][diameter])']]], - ['stencilupdate_1',['stencilupdate',['../classstencil_1_1cpu_1_1StencilUpdate.html#a06ca27f7a1bd0292234b8ccad2d17991',1,'stencil::cpu::StencilUpdate::StencilUpdate()'],['../classstencil_1_1monotile_1_1StencilUpdate.html#a7f50b050eb2122cd7e6ad65f670f49ad',1,'stencil::monotile::StencilUpdate::StencilUpdate()'],['../classstencil_1_1tiling_1_1StencilUpdate.html#a2bf7e62377b5ae4efecc705fbc619b60',1,'stencil::tiling::StencilUpdate::StencilUpdate()']]], - ['stencilupdatekernel_2',['stencilupdatekernel',['../classstencil_1_1monotile_1_1StencilUpdateKernel.html#ad221da1d7d69a2c711d4fe8905f9526e',1,'stencil::monotile::StencilUpdateKernel::StencilUpdateKernel()'],['../classstencil_1_1tiling_1_1StencilUpdateKernel.html#a8a362a720545d40a61cfaf6ec7ef3fe5',1,'stencil::tiling::StencilUpdateKernel::StencilUpdateKernel()']]], - ['submit_5fread_3',['submit_read',['../classstencil_1_1monotile_1_1Grid.html#a0dcd2ef236147b4155b9f1d6eefe7602',1,'stencil::monotile::Grid::submit_read()'],['../classstencil_1_1tiling_1_1Grid.html#a935d95d8285b1cc954b01c981e520c50',1,'stencil::tiling::Grid::submit_read()']]], - ['submit_5fwrite_4',['submit_write',['../classstencil_1_1monotile_1_1Grid.html#abe22ee3313629651586cb16ea166a0c5',1,'stencil::monotile::Grid::submit_write()'],['../classstencil_1_1tiling_1_1Grid.html#a899f2d09450542d998695c873775ee55',1,'stencil::tiling::Grid::submit_write()']]] -]; diff --git a/search/mag.svg b/search/mag.svg deleted file mode 100644 index ffb6cf0..0000000 --- a/search/mag.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/search/mag_d.svg b/search/mag_d.svg deleted file mode 100644 index 4122773..0000000 --- a/search/mag_d.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/search/mag_sel.svg b/search/mag_sel.svg deleted file mode 100644 index 553dba8..0000000 --- a/search/mag_sel.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - diff --git a/search/mag_seld.svg b/search/mag_seld.svg deleted file mode 100644 index c906f84..0000000 --- a/search/mag_seld.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - diff --git a/search/namespaces_0.js b/search/namespaces_0.js deleted file mode 100644 index d174fb6..0000000 --- a/search/namespaces_0.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['stencil_0',['stencil',['../namespacestencil.html',1,'']]], - ['stencil_3a_3aconcepts_1',['concepts',['../namespacestencil_1_1concepts.html',1,'stencil']]], - ['stencil_3a_3acpu_2',['cpu',['../namespacestencil_1_1cpu.html',1,'stencil']]], - ['stencil_3a_3amonotile_3',['monotile',['../namespacestencil_1_1monotile.html',1,'stencil']]], - ['stencil_3a_3atdv_4',['tdv',['../namespacestencil_1_1tdv.html',1,'stencil']]], - ['stencil_3a_3atdv_3a_3asingle_5fpass_5',['single_pass',['../namespacestencil_1_1tdv_1_1single__pass.html',1,'stencil::tdv']]], - ['stencil_3a_3atiling_6',['tiling',['../namespacestencil_1_1tiling.html',1,'stencil']]] -]; diff --git a/search/pages_0.js b/search/pages_0.js deleted file mode 100644 index 0de9681..0000000 --- a/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['stencilstream_0',['StencilStream',['../index.html',1,'']]] -]; diff --git a/search/search.css b/search/search.css deleted file mode 100644 index 19f76f9..0000000 --- a/search/search.css +++ /dev/null @@ -1,291 +0,0 @@ -/*---------------- Search Box positioning */ - -#main-menu > li:last-child { - /* This
  • object is the parent of the search bar */ - display: flex; - justify-content: center; - align-items: center; - height: 36px; - margin-right: 1em; -} - -/*---------------- Search box styling */ - -.SRPage * { - font-weight: normal; - line-height: normal; -} - -dark-mode-toggle { - margin-left: 5px; - display: flex; - float: right; -} - -#MSearchBox { - display: inline-block; - white-space : nowrap; - background: var(--search-background-color); - border-radius: 0.65em; - box-shadow: var(--search-box-shadow); - z-index: 102; -} - -#MSearchBox .left { - display: inline-block; - vertical-align: middle; - height: 1.4em; -} - -#MSearchSelect { - display: inline-block; - vertical-align: middle; - width: 20px; - height: 19px; - background-image: var(--search-magnification-select-image); - margin: 0 0 0 0.3em; - padding: 0; -} - -#MSearchSelectExt { - display: inline-block; - vertical-align: middle; - width: 10px; - height: 19px; - background-image: var(--search-magnification-image); - margin: 0 0 0 0.5em; - padding: 0; -} - - -#MSearchField { - display: inline-block; - vertical-align: middle; - width: 7.5em; - height: 19px; - margin: 0 0.15em; - padding: 0; - line-height: 1em; - border:none; - color: var(--search-foreground-color); - outline: none; - font-family: var(--font-family-search); - -webkit-border-radius: 0px; - border-radius: 0px; - background: none; -} - -@media(hover: none) { - /* to avoid zooming on iOS */ - #MSearchField { - font-size: 16px; - } -} - -#MSearchBox .right { - display: inline-block; - vertical-align: middle; - width: 1.4em; - height: 1.4em; -} - -#MSearchClose { - display: none; - font-size: inherit; - background : none; - border: none; - margin: 0; - padding: 0; - outline: none; - -} - -#MSearchCloseImg { - padding: 0.3em; - margin: 0; -} - -.MSearchBoxActive #MSearchField { - color: var(--search-active-color); -} - - - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid var(--search-filter-border-color); - background-color: var(--search-filter-background-color); - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt var(--font-family-search); - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: var(--font-family-monospace); - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: var(--search-filter-foreground-color); - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: var(--search-filter-foreground-color); - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: var(--search-filter-highlight-text-color); - background-color: var(--search-filter-highlight-bg-color); - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - /*width: 60ex;*/ - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid var(--search-results-border-color); - background-color: var(--search-results-background-color); - z-index:10000; - width: 300px; - height: 400px; - overflow: auto; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -div.SRPage { - margin: 5px 2px; - background-color: var(--search-results-background-color); -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); - font-size: 8pt; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; - font-family: var(--font-family-search); -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; - font-family: var(--font-family-search); -} - -.SRResult { - display: none; -} - -div.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: var(--nav-gradient-active-image-parent); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/search/search.js b/search/search.js deleted file mode 100644 index 6fd40c6..0000000 --- a/search/search.js +++ /dev/null @@ -1,840 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - e.stopPropagation(); - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var jsFile; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; - } - - var loadJS = function(url, impl, loc){ - var scriptTag = document.createElement('script'); - scriptTag.src = url; - scriptTag.onload = impl; - scriptTag.onreadystatechange = impl; - loc.appendChild(scriptTag); - } - - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - var domSearchBox = this.DOMSearchBox(); - var domPopupSearchResults = this.DOMPopupSearchResults(); - var domSearchClose = this.DOMSearchClose(); - var resultsPath = this.resultsPath; - - var handleResults = function() { - document.getElementById("Loading").style.display="none"; - if (typeof searchData !== 'undefined') { - createResults(resultsPath); - document.getElementById("NoMatches").style.display="none"; - } - - if (idx!=-1) { - searchResults.Search(searchValue); - } else { // no file with search results => force empty search results - searchResults.Search('===='); - } - - if (domPopupSearchResultsWindow.style.display!='block') - { - domSearchClose.style.display = 'inline-block'; - var left = getXPos(domSearchBox) + 150; - var top = getYPos(domSearchBox) + 20; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - var maxWidth = document.body.clientWidth; - var maxHeight = document.body.clientHeight; - var width = 300; - if (left<10) left=10; - if (width+left+8>maxWidth) width=maxWidth-left-8; - var height = 400; - if (height+top+8>maxHeight) height=maxHeight-top-8; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResultsWindow.style.height = height + 'px'; - } - } - - if (jsFile) { - loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); - } else { - handleResults(); - } - - this.lastSearchValue = searchValue; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - this.searchActive = true; - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - this.DOMSearchField().value = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults(resultsPath) -{ - var results = document.getElementById("SRResults"); - results.innerHTML = ''; - for (var e=0; e - - - - - - -StencilStream: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    stencil::Padded< T > Member List
    -
    -
    - -

    This is the complete list of members for stencil::Padded< T >, including all inherited members.

    - - -
    valuestencil::Padded< T >
    - - - - diff --git a/structstencil_1_1Padded.html b/structstencil_1_1Padded.html deleted file mode 100644 index 28e0cf8..0000000 --- a/structstencil_1_1Padded.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -StencilStream: stencil::Padded< T > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::Padded< T > Struct Template Reference
    -
    -
    - -

    A container with padding to the next power of two. - More...

    - -

    #include <Helpers.hpp>

    - - - - -

    -Public Attributes

    value
     
    -

    Detailed Description

    -
    template<typename T>
    -struct stencil::Padded< T >

    A container with padding to the next power of two.

    -

    Wrapping a type in this template ensures that the resulting size is a power of two.

    -
    Template Parameters
    - - -
    TThe contained type.
    -
    -
    -

    Member Data Documentation

    - -

    ◆ value

    - -
    -
    -
    -template<typename T >
    - - - - -
    T stencil::Padded< T >::value
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1cpu_1_1StencilUpdate_1_1Params-members.html b/structstencil_1_1cpu_1_1StencilUpdate_1_1Params-members.html deleted file mode 100644 index 0d40809..0000000 --- a/structstencil_1_1cpu_1_1StencilUpdate_1_1Params-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    stencil::cpu::StencilUpdate< F >::Params Member List
    -
    - - - - - diff --git a/structstencil_1_1cpu_1_1StencilUpdate_1_1Params.html b/structstencil_1_1cpu_1_1StencilUpdate_1_1Params.html deleted file mode 100644 index ebc2633..0000000 --- a/structstencil_1_1cpu_1_1StencilUpdate_1_1Params.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - - -StencilStream: stencil::cpu::StencilUpdate< F >::Params Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::cpu::StencilUpdate< F >::Params Struct Reference
    -
    -
    - -

    Parameters for the stencil updater. - More...

    - -

    #include <StencilUpdate.hpp>

    - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    transition_function
     An instance of the transition function type.
     
    Cell halo_value = Cell()
     The cell value to present for cells outside of the grid.
     
    uindex_t iteration_offset = 0
     The iteration index offset.
     
    uindex_t n_iterations = 1
     The number of iterations to compute.
     
    sycl::device device = sycl::device()
     The device to use for computations.
     
    bool blocking = false
     Should the stencil updater block until completion, or return immediately after all kernels have been submitted.
     
    -

    Detailed Description

    -
    template<concepts::TransitionFunction F>
    -struct stencil::cpu::StencilUpdate< F >::Params

    Parameters for the stencil updater.

    -

    Member Data Documentation

    - -

    ◆ blocking

    - -
    -
    -
    -template<concepts::TransitionFunction F>
    - - - - -
    bool stencil::cpu::StencilUpdate< F >::Params::blocking = false
    -
    - -

    Should the stencil updater block until completion, or return immediately after all kernels have been submitted.

    -

    Choosing one option or the other won't effect the correctness: For example, if you choose a non-blocking stencil updater and immediately try to access the grid after the updater has returned, SYCL/OneAPI will block your thread until the computations are complete and it can actually provide you access to the data.

    - -
    -
    - -

    ◆ device

    - -
    -
    -
    -template<concepts::TransitionFunction F>
    - - - - -
    sycl::device stencil::cpu::StencilUpdate< F >::Params::device = sycl::device()
    -
    - -

    The device to use for computations.

    - -
    -
    - -

    ◆ halo_value

    - -
    -
    -
    -template<concepts::TransitionFunction F>
    - - - - -
    Cell stencil::cpu::StencilUpdate< F >::Params::halo_value = Cell()
    -
    - -

    The cell value to present for cells outside of the grid.

    - -
    -
    - -

    ◆ iteration_offset

    - -
    -
    -
    -template<concepts::TransitionFunction F>
    - - - - -
    uindex_t stencil::cpu::StencilUpdate< F >::Params::iteration_offset = 0
    -
    - -

    The iteration index offset.

    -

    This offset will be added to the "actual" iteration index. This way, simulations can "resume" with the next timestep if the intermediate grid has been evaluated by the host.

    - -
    -
    - -

    ◆ n_iterations

    - -
    -
    -
    -template<concepts::TransitionFunction F>
    - - - - -
    uindex_t stencil::cpu::StencilUpdate< F >::Params::n_iterations = 1
    -
    - -

    The number of iterations to compute.

    - -
    -
    - -

    ◆ transition_function

    - -
    -
    -
    -template<concepts::TransitionFunction F>
    - - - - -
    F stencil::cpu::StencilUpdate< F >::Params::transition_function
    -
    - -

    An instance of the transition function type.

    -

    User applications may store runtime parameters here.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1monotile_1_1StencilUpdate_1_1Params-members.html b/structstencil_1_1monotile_1_1StencilUpdate_1_1Params-members.html deleted file mode 100644 index 0edff9e..0000000 --- a/structstencil_1_1monotile_1_1StencilUpdate_1_1Params-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params Member List
    -
    - - - - - diff --git a/structstencil_1_1monotile_1_1StencilUpdate_1_1Params.html b/structstencil_1_1monotile_1_1StencilUpdate_1_1Params.html deleted file mode 100644 index cdd41ca..0000000 --- a/structstencil_1_1monotile_1_1StencilUpdate_1_1Params.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - - - - -StencilStream: stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params Struct Reference
    -
    -
    - -

    Parameters for the stencil updater. - More...

    - -

    #include <StencilUpdate.hpp>

    - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    transition_function
     An instance of the transition function type.
     
    Cell halo_value = Cell()
     The cell value to present for cells outside of the grid.
     
    uindex_t iteration_offset = 0
     The iteration index offset.
     
    uindex_t n_iterations = 1
     The number of iterations to compute.
     
    sycl::device device = sycl::device()
     The device to use for computations.
     
    bool blocking = false
     Should the stencil updater block until completion, or return immediately after all kernels have been submitted.
     
    bool profiling = false
     Enable profiling.
     
    -

    Detailed Description

    -
    template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
    -struct stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params

    Parameters for the stencil updater.

    -

    Member Data Documentation

    - -

    ◆ blocking

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
    - - - - -
    bool stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params::blocking = false
    -
    - -

    Should the stencil updater block until completion, or return immediately after all kernels have been submitted.

    -

    Choosing one option or the other won't effect the correctness: For example, if you choose a non-blocking stencil updater and immediately try to access the grid after the updater has returned, SYCL/OneAPI will block your thread until the computations are complete and it can actually provide you access to the data.

    - -
    -
    - -

    ◆ device

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
    - - - - -
    sycl::device stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params::device = sycl::device()
    -
    - -

    The device to use for computations.

    -

    For some setups, it might be necessary to explicitly select the device to use for computation. This can be done for example with the sycl::ext::intel::fpga_selector_v class in the sycl/ext/intel/fpga_extensions.hpp header. This selector will select the first FPGA it sees.

    - -
    -
    - -

    ◆ halo_value

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
    - - - - -
    Cell stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params::halo_value = Cell()
    -
    - -

    The cell value to present for cells outside of the grid.

    - -
    -
    - -

    ◆ iteration_offset

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
    - - - - -
    uindex_t stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params::iteration_offset = 0
    -
    - -

    The iteration index offset.

    -

    This offset will be added to the "actual" iteration index. This way, simulations can "resume" with the next timestep if the intermediate grid has been evaluated by the host.

    - -
    -
    - -

    ◆ n_iterations

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
    - - - - -
    uindex_t stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params::n_iterations = 1
    -
    - -

    The number of iterations to compute.

    - -
    -
    - -

    ◆ profiling

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
    - - - - -
    bool stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params::profiling = false
    -
    - -

    Enable profiling.

    -

    Setting this option to true will enable the recording of computation start and end timestamps. The recorded kernel runtime can be fetched using the StencilUpdate::get_kernel_runtime method.

    - -
    -
    - -

    ◆ transition_function

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t max_grid_width = 1024, uindex_t max_grid_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy, uindex_t word_size = 64>
    - - - - -
    F stencil::monotile::StencilUpdate< F, n_processing_elements, max_grid_width, max_grid_height, TDVStrategy, word_size >::Params::transition_function
    -
    - -

    An instance of the transition function type.

    -

    User applications may store runtime parameters here.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy.html b/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy.html deleted file mode 100644 index c8c11e7..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::InlineStrategy Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tdv::single_pass::InlineStrategy Struct Reference
    -
    -
    - -

    A TDV implementation strategy that inlines the TDV function into the transition function. - More...

    - -

    #include <SinglePassStrategies.hpp>

    - - - - -

    -Classes

    struct  GlobalState
     
    -

    Detailed Description

    -

    A TDV implementation strategy that inlines the TDV function into the transition function.

    -

    This is the simplest implementation of the TDV system: The TDV construction function is called every time the transition function is called; There is no precomputation done..

    -

    For FPGA-based backends, this means that the construction function is implemented within every processing element. This might be advantageous if the time-dependent value is very large and it's construction is very simple. However, one could then manually merge them into the transition function.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState-members.html b/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState-members.html deleted file mode 100644 index 4c89ed6..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations > Member List
    -
    - - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState.html b/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState.html deleted file mode 100644 index b757196..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations > Struct Template Reference
    -
    -
    - -

    #include <SinglePassStrategies.hpp>

    - - - - -

    -Classes

    struct  KernelArgument
     
    - - - -

    -Public Types

    using TDV = typename TransFunc::TimeDependentValue
     
    - - - -

    -Public Member Functions

     GlobalState (TransFunc trans_func, uindex_t iteration_offset, uindex_t n_iterations)
     
    -

    Member Typedef Documentation

    - -

    ◆ TDV

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - -
    using stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >::TDV = typename TransFunc::TimeDependentValue
    -
    - -
    -
    -

    Constructor & Destructor Documentation

    - -

    ◆ GlobalState()

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >::GlobalState (TransFunc trans_func,
    uindex_t iteration_offset,
    uindex_t n_iterations 
    )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument-members.html b/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument-members.html deleted file mode 100644 index f146691..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument Member List
    -
    - - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument.html b/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument.html deleted file mode 100644 index 65c3abb..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1InlineStrategy_1_1GlobalState_1_1KernelArgument.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument Struct Reference
    -
    -
    - -

    #include <SinglePassStrategies.hpp>

    - - - - -

    -Public Types

    using LocalState = KernelArgument
     
    - - - - - -

    -Public Member Functions

     KernelArgument (GlobalState &global_state, sycl::handler &cgh, uindex_t iteration_offset, uindex_t n_iterations)
     
    TDV get_time_dependent_value (uindex_t i_iteration) const
     
    -

    Member Typedef Documentation

    - -

    ◆ LocalState

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - -
    using stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState = KernelArgument
    -
    - -
    -
    -

    Constructor & Destructor Documentation

    - -

    ◆ KernelArgument()

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::KernelArgument (GlobalStateglobal_state,
    sycl::handler & cgh,
    uindex_t iteration_offset,
    uindex_t n_iterations 
    )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ get_time_dependent_value()

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - - -
    - - - - - - - - -
    TDV stencil::tdv::single_pass::InlineStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::get_time_dependent_value (uindex_t i_iteration) const
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy.html b/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy.html deleted file mode 100644 index 72d7d0f..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::PrecomputeOnDeviceStrategy Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tdv::single_pass::PrecomputeOnDeviceStrategy Struct Reference
    -
    -
    - -

    A TDV implementation strategy that precomputes TDVs on the device. - More...

    - -

    #include <SinglePassStrategies.hpp>

    - - - - -

    -Classes

    struct  GlobalState
     
    -

    Detailed Description

    -

    A TDV implementation strategy that precomputes TDVs on the device.

    -

    This precomputation is done for each pass and covers the iterations done in this pass only.

    -

    For FPGA-based backends, this will lead to an additional for-loop prior to the main loop of the execution kernel. Depending on how big the TDV is and in which way it is used by the transition function, the local state may be implemented in registers or with on-chip memory.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState-members.html b/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState-members.html deleted file mode 100644 index c1fd806..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations > Member List
    -
    - - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState.html b/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState.html deleted file mode 100644 index 81734f2..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations > Struct Template Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations > Struct Template Reference
    -
    -
    - -

    #include <SinglePassStrategies.hpp>

    - - - - -

    -Classes

    struct  KernelArgument
     
    - - - -

    -Public Types

    using TDV = typename TransFunc::TimeDependentValue
     
    - - - -

    -Public Member Functions

     GlobalState (TransFunc trans_func, uindex_t iteration_offset, uindex_t n_iterations)
     
    -

    Member Typedef Documentation

    - -

    ◆ TDV

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - -
    using stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::TDV = typename TransFunc::TimeDependentValue
    -
    - -
    -
    -

    Constructor & Destructor Documentation

    - -

    ◆ GlobalState()

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::GlobalState (TransFunc trans_func,
    uindex_t iteration_offset,
    uindex_t n_iterations 
    )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument-members.html b/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument-members.html deleted file mode 100644 index 5f258ae..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument Member List
    -
    -
    - -

    This is the complete list of members for stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument, including all inherited members.

    - - -
    KernelArgument(GlobalState &global_state, sycl::handler &cgh, uindex_t iteration_offset, uindex_t n_iterations)stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgumentinline
    - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument.html b/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument.html deleted file mode 100644 index f841d9b..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument Struct Reference
    -
    -
    - -

    #include <SinglePassStrategies.hpp>

    - - - - -

    -Classes

    struct  LocalState
     
    - - - -

    -Public Member Functions

     KernelArgument (GlobalState &global_state, sycl::handler &cgh, uindex_t iteration_offset, uindex_t n_iterations)
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ KernelArgument()

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::KernelArgument (GlobalStateglobal_state,
    sycl::handler & cgh,
    uindex_t iteration_offset,
    uindex_t n_iterations 
    )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState-members.html b/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState-members.html deleted file mode 100644 index 4ca1ad9..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState Member List
    -
    - - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html b/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html deleted file mode 100644 index 36aa9a2..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnDeviceStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState Struct Reference
    -
    -
    - -

    #include <SinglePassStrategies.hpp>

    - - - - - - -

    -Public Member Functions

     LocalState (KernelArgument const &kernel_argument)
     
    TDV get_time_dependent_value (uindex_t i_iteration) const
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ LocalState()

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - - -
    - - - - - - - - -
    stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState::LocalState (KernelArgument const & kernel_argument)
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ get_time_dependent_value()

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - - -
    - - - - - - - - -
    TDV stencil::tdv::single_pass::PrecomputeOnDeviceStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState::get_time_dependent_value (uindex_t i_iteration) const
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy.html b/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy.html deleted file mode 100644 index 8e67163..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::PrecomputeOnHostStrategy Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tdv::single_pass::PrecomputeOnHostStrategy Struct Reference
    -
    -
    - -

    A TDV implementation strategy that precomputes TDVs on the host. - More...

    - -

    #include <SinglePassStrategies.hpp>

    - - - - -

    -Classes

    class  GlobalState
     
    -

    Detailed Description

    -

    A TDV implementation strategy that precomputes TDVs on the host.

    -

    This strategy will compute all time-dependent values on the host and store them in a global memory buffer. Prior to execution, the execution kernel will then load the required values into a local array using a dedicated for-loop. Depending on how big the TDV is and in which way it is used by the transition function, the local state may be implemented in registers or with on-chip memory.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument-members.html b/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument-members.html deleted file mode 100644 index 369e3ed..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument Member List
    -
    -
    - -

    This is the complete list of members for stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument, including all inherited members.

    - - -
    KernelArgument(GlobalState &global_state, sycl::handler &cgh, uindex_t i_iteration, uindex_t n_iterations)stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgumentinline
    - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument.html b/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument.html deleted file mode 100644 index 84e4af1..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument Struct Reference
    -
    -
    - -

    #include <SinglePassStrategies.hpp>

    - - - - -

    -Classes

    struct  LocalState
     
    - - - -

    -Public Member Functions

     KernelArgument (GlobalState &global_state, sycl::handler &cgh, uindex_t i_iteration, uindex_t n_iterations)
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ KernelArgument()

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::KernelArgument (GlobalStateglobal_state,
    sycl::handler & cgh,
    uindex_t i_iteration,
    uindex_t n_iterations 
    )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState-members.html b/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState-members.html deleted file mode 100644 index a4ae42c..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState Member List
    -
    - - - - - diff --git a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html b/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html deleted file mode 100644 index 062571b..0000000 --- a/structstencil_1_1tdv_1_1single__pass_1_1PrecomputeOnHostStrategy_1_1GlobalState_1_1KernelArgument_1_1LocalState.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -StencilStream: stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState Struct Reference
    -
    -
    - -

    #include <SinglePassStrategies.hpp>

    - - - - - - -

    -Public Member Functions

     LocalState (KernelArgument const &kernel_argument)
     
    TDV get_time_dependent_value (uindex_t i) const
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ LocalState()

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - - -
    - - - - - - - - -
    stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState::LocalState (KernelArgument const & kernel_argument)
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ get_time_dependent_value()

    - -
    -
    -
    -template<stencil::concepts::TransitionFunction TransFunc, uindex_t max_n_iterations>
    - - - - - -
    - - - - - - - - -
    TDV stencil::tdv::single_pass::PrecomputeOnHostStrategy::GlobalState< TransFunc, max_n_iterations >::KernelArgument::LocalState::get_time_dependent_value (uindex_t i) const
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/structstencil_1_1tiling_1_1StencilUpdate_1_1Params-members.html b/structstencil_1_1tiling_1_1StencilUpdate_1_1Params-members.html deleted file mode 100644 index 664c06b..0000000 --- a/structstencil_1_1tiling_1_1StencilUpdate_1_1Params-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -StencilStream: Member List - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params Member List
    -
    - - - - - diff --git a/structstencil_1_1tiling_1_1StencilUpdate_1_1Params.html b/structstencil_1_1tiling_1_1StencilUpdate_1_1Params.html deleted file mode 100644 index 4181619..0000000 --- a/structstencil_1_1tiling_1_1StencilUpdate_1_1Params.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - - - - -StencilStream: stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params Struct Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params Struct Reference
    -
    -
    - -

    Parameters for the stencil updater. - More...

    - -

    #include <StencilUpdate.hpp>

    - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    transition_function
     An instance of the transition function type.
     
    Cell halo_value = Cell()
     The cell value to present for cells outside of the grid.
     
    uindex_t iteration_offset = 0
     The iteration index offset.
     
    uindex_t n_iterations = 1
     The number of iterations to compute.
     
    sycl::device device = sycl::device()
     The device to use for computations.
     
    bool blocking = false
     Should the stencil updater block until completion, or return immediately after all kernels have been submitted.
     
    bool profiling = false
     Enable profiling.
     
    -

    Detailed Description

    -
    template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
    -struct stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params

    Parameters for the stencil updater.

    -

    Member Data Documentation

    - -

    ◆ blocking

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
    - - - - -
    bool stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params::blocking = false
    -
    - -

    Should the stencil updater block until completion, or return immediately after all kernels have been submitted.

    -

    Choosing one option or the other won't effect the correctness: For example, if you choose a non-blocking stencil updater and immediately try to access the grid after the updater has returned, SYCL/OneAPI will block your thread until the computations are complete and it can actually provide you access to the data.

    - -
    -
    - -

    ◆ device

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
    - - - - -
    sycl::device stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params::device = sycl::device()
    -
    - -

    The device to use for computations.

    -

    For some setups, it might be necessary to explicitly select the device to use for computation. This can be done for example with the sycl::ext::intel::fpga_selector_v class in the sycl/ext/intel/fpga_extensions.hpp header. This selector will select the first FPGA it sees.

    - -
    -
    - -

    ◆ halo_value

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
    - - - - -
    Cell stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params::halo_value = Cell()
    -
    - -

    The cell value to present for cells outside of the grid.

    - -
    -
    - -

    ◆ iteration_offset

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
    - - - - -
    uindex_t stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params::iteration_offset = 0
    -
    - -

    The iteration index offset.

    -

    This offset will be added to the "actual" iteration index. This way, simulations can "resume" with the next timestep if the intermediate grid has been evaluated by the host.

    - -
    -
    - -

    ◆ n_iterations

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
    - - - - -
    uindex_t stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params::n_iterations = 1
    -
    - -

    The number of iterations to compute.

    - -
    -
    - -

    ◆ profiling

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
    - - - - -
    bool stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params::profiling = false
    -
    - -

    Enable profiling.

    -

    Setting this option to true will enable the recording of computation start and end timestamps. The recorded kernel runtime can be fetched using the StencilUpdate::get_kernel_runtime method.

    - -
    -
    - -

    ◆ transition_function

    - -
    -
    -
    -template<concepts::TransitionFunction F, uindex_t n_processing_elements = 1, uindex_t tile_width = 1024, uindex_t tile_height = 1024, tdv::single_pass::Strategy< F, n_processing_elements > TDVStrategy = tdv::single_pass::InlineStrategy>
    - - - - -
    F stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params::transition_function
    -
    - -

    An instance of the transition function type.

    -

    User applications may store runtime parameters here.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/sync_off.png b/sync_off.png deleted file mode 100644 index 3b443fc..0000000 Binary files a/sync_off.png and /dev/null differ diff --git a/sync_on.png b/sync_on.png deleted file mode 100644 index e08320f..0000000 Binary files a/sync_on.png and /dev/null differ diff --git a/tab_a.png b/tab_a.png deleted file mode 100644 index 3b725c4..0000000 Binary files a/tab_a.png and /dev/null differ diff --git a/tab_ad.png b/tab_ad.png deleted file mode 100644 index e34850a..0000000 Binary files a/tab_ad.png and /dev/null differ diff --git a/tab_b.png b/tab_b.png deleted file mode 100644 index e2b4a86..0000000 Binary files a/tab_b.png and /dev/null differ diff --git a/tab_bd.png b/tab_bd.png deleted file mode 100644 index 91c2524..0000000 Binary files a/tab_bd.png and /dev/null differ diff --git a/tab_h.png b/tab_h.png deleted file mode 100644 index fd5cb70..0000000 Binary files a/tab_h.png and /dev/null differ diff --git a/tab_hd.png b/tab_hd.png deleted file mode 100644 index 2489273..0000000 Binary files a/tab_hd.png and /dev/null differ diff --git a/tab_s.png b/tab_s.png deleted file mode 100644 index ab478c9..0000000 Binary files a/tab_s.png and /dev/null differ diff --git a/tab_sd.png b/tab_sd.png deleted file mode 100644 index 757a565..0000000 Binary files a/tab_sd.png and /dev/null differ diff --git a/tabs.css b/tabs.css deleted file mode 100644 index 71c8a47..0000000 --- a/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/tiling_2Grid_8hpp.html b/tiling_2Grid_8hpp.html deleted file mode 100644 index 89aa157..0000000 --- a/tiling_2Grid_8hpp.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -StencilStream: StencilStream/tiling/Grid.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    Grid.hpp File Reference
    -
    -
    -
    #include "../AccessorSubscript.hpp"
    -#include "../Concepts.hpp"
    -#include "../GenericID.hpp"
    -#include <memory>
    -#include <numeric>
    -#include <vector>
    -
    -Include dependency graph for Grid.hpp:
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    class  stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >
     A grid class for the tiling architecture. More...
     
    class  stencil::tiling::Grid< Cell, tile_width, tile_height, halo_radius >::GridAccessor< access_mode >
     An accessor for the monotile grid. More...
     
    - - - - - -

    -Namespaces

    namespace  stencil
     
    namespace  stencil::tiling
     
    -
    - - - - diff --git a/tiling_2Grid_8hpp__dep__incl.map b/tiling_2Grid_8hpp__dep__incl.map deleted file mode 100644 index 2d9598e..0000000 --- a/tiling_2Grid_8hpp__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/tiling_2Grid_8hpp__dep__incl.md5 b/tiling_2Grid_8hpp__dep__incl.md5 deleted file mode 100644 index 477abe7..0000000 --- a/tiling_2Grid_8hpp__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -bcba223a0a513fa3b348b9f6ead48584 \ No newline at end of file diff --git a/tiling_2Grid_8hpp__dep__incl.png b/tiling_2Grid_8hpp__dep__incl.png deleted file mode 100644 index 00ddab7..0000000 Binary files a/tiling_2Grid_8hpp__dep__incl.png and /dev/null differ diff --git a/tiling_2Grid_8hpp__incl.map b/tiling_2Grid_8hpp__incl.map deleted file mode 100644 index 4923a71..0000000 --- a/tiling_2Grid_8hpp__incl.map +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tiling_2Grid_8hpp__incl.md5 b/tiling_2Grid_8hpp__incl.md5 deleted file mode 100644 index 810260b..0000000 --- a/tiling_2Grid_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -bd67e52a04b8b0518d022805fec3bea9 \ No newline at end of file diff --git a/tiling_2Grid_8hpp__incl.png b/tiling_2Grid_8hpp__incl.png deleted file mode 100644 index 30603e2..0000000 Binary files a/tiling_2Grid_8hpp__incl.png and /dev/null differ diff --git a/tiling_2Grid_8hpp_source.html b/tiling_2Grid_8hpp_source.html deleted file mode 100644 index 9aa1ea2..0000000 --- a/tiling_2Grid_8hpp_source.html +++ /dev/null @@ -1,346 +0,0 @@ - - - - - - - -StencilStream: StencilStream/tiling/Grid.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    Grid.hpp
    -
    -
    -Go to the documentation of this file.
    1/*
    -
    2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
    -
    3 * University
    -
    4 *
    -
    5 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
    -
    6 * associated documentation files (the “Software”), to deal in the Software without restriction,
    -
    7 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
    -
    8 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
    -
    9 * furnished to do so, subject to the following conditions:
    -
    10 *
    -
    11 * The above copyright notice and this permission notice shall be included in all copies or
    -
    12 * substantial portions of the Software.
    -
    13 *
    -
    14 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
    -
    15 * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    -
    16 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    -
    17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -
    18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    -
    19 */
    -
    20#pragma once
    -
    21#include "../AccessorSubscript.hpp"
    -
    22#include "../Concepts.hpp"
    -
    23#include "../GenericID.hpp"
    -
    24#include <memory>
    -
    25#include <numeric>
    -
    26#include <vector>
    -
    27
    -
    28namespace stencil {
    -
    -
    29namespace tiling {
    -
    30
    -
    72template <typename Cell, uindex_t tile_width = 1024, uindex_t tile_height = 1024,
    -
    73 uindex_t halo_radius = 1>
    -
    -
    74class Grid {
    -
    75 static_assert(2 * halo_radius < tile_height && 2 * halo_radius < tile_width);
    -
    76
    -
    77 public:
    -
    83 static constexpr uindex_t dimensions = 2;
    -
    84
    -
    -
    92 Grid(uindex_t grid_width, uindex_t grid_height)
    -
    93 : grid_buffer(sycl::range<2>(grid_width, grid_height)) {}
    -
    -
    94
    -
    101 Grid(sycl::range<2> range) : grid_buffer(range) {}
    -
    102
    -
    -
    111 Grid(sycl::buffer<Cell, 2> input_buffer) : grid_buffer(input_buffer.get_range()) {
    -
    112 copy_from_buffer(input_buffer);
    -
    113 }
    -
    -
    114
    -
    124 Grid(Grid const &other_grid) : grid_buffer(other_grid.grid_buffer) {}
    -
    125
    -
    -
    135 template <sycl::access::mode access_mode> class GridAccessor {
    -
    136 public:
    - -
    141
    -
    145 GridAccessor(Grid &grid) : accessor(grid.grid_buffer) {}
    -
    146
    - -
    151
    - -
    160
    -
    -
    167 Cell const &operator[](sycl::id<2> id)
    -
    168 requires(access_mode == sycl::access::mode::read)
    -
    169 {
    -
    170 return accessor[id];
    -
    171 }
    -
    -
    172
    -
    -
    179 Cell &operator[](sycl::id<2> id)
    -
    180 requires(access_mode != sycl::access::mode::read)
    -
    181 {
    -
    182 return accessor[id];
    -
    183 }
    -
    -
    184
    -
    185 private:
    -
    186 sycl::host_accessor<Cell, 2, access_mode> accessor;
    -
    187 };
    -
    -
    188
    -
    -
    199 void copy_from_buffer(sycl::buffer<Cell, 2> input_buffer) {
    -
    200 if (input_buffer.get_range() != grid_buffer.get_range()) {
    -
    201 throw std::out_of_range("The target buffer has not the same size as the grid");
    -
    202 }
    -
    203
    -
    204 sycl::host_accessor grid_ac{grid_buffer, sycl::write_only};
    -
    205 sycl::host_accessor input_ac{input_buffer, sycl::read_only};
    -
    206 for (uindex_t c = 0; c < get_grid_width(); c++) {
    -
    207 for (uindex_t r = 0; r < get_grid_height(); r++) {
    -
    208 grid_ac[c][r] = input_ac[c][r];
    -
    209 }
    -
    210 }
    -
    211 }
    -
    -
    212
    -
    -
    222 void copy_to_buffer(sycl::buffer<Cell, 2> output_buffer) {
    -
    223 if (output_buffer.get_range() != grid_buffer.get_range()) {
    -
    224 throw std::out_of_range("The target buffer has not the same size as the grid");
    -
    225 }
    -
    226
    -
    227 sycl::host_accessor grid_ac{grid_buffer, sycl::read_only};
    -
    228 sycl::host_accessor output_ac{output_buffer, sycl::write_only};
    -
    229 for (uindex_t c = 0; c < get_grid_width(); c++) {
    -
    230 for (uindex_t r = 0; r < get_grid_height(); r++) {
    -
    231 output_ac[c][r] = grid_ac[c][r];
    -
    232 }
    -
    233 }
    -
    234 }
    -
    -
    235
    -
    239 Grid make_similar() const { return Grid(grid_buffer.get_range()); }
    -
    240
    -
    244 uindex_t get_grid_width() const { return grid_buffer.get_range()[0]; }
    -
    245
    -
    249 uindex_t get_grid_height() const { return grid_buffer.get_range()[1]; }
    -
    250
    -
    - -
    261 return GenericID<uindex_t>(std::ceil(float(get_grid_width()) / float(tile_width)),
    -
    262 std::ceil(float(get_grid_height()) / float(tile_height)));
    -
    263 }
    -
    -
    264
    -
    294 template <typename in_pipe>
    -
    -
    295 sycl::event submit_read(sycl::queue &queue, uindex_t tile_c, uindex_t tile_r, Cell halo_value) {
    -
    296 if (tile_c >= get_tile_range().c || tile_r >= get_tile_range().r) {
    -
    297 throw std::out_of_range("Tile index out of range!");
    -
    298 }
    -
    299
    -
    300 constexpr uindex_t column_bits = 1 + std::bit_width(tile_width + halo_radius);
    -
    301 constexpr uindex_t row_bits = 1 + std::bit_width(tile_height + halo_radius);
    -
    302 using index_c_t = ac_int<column_bits, true>;
    -
    303 using index_r_t = ac_int<row_bits, true>;
    -
    304
    -
    305 return queue.submit([&](sycl::handler &cgh) {
    -
    306 sycl::accessor grid_ac{grid_buffer, cgh, sycl::read_only};
    -
    307 index_t grid_width = this->get_grid_width();
    -
    308 index_t grid_height = this->get_grid_height();
    -
    309
    -
    310 cgh.single_task([=]() {
    -
    311 index_t c_offset = tile_c * tile_width;
    -
    312 index_c_t start_tile_c = -halo_radius;
    -
    313 index_c_t end_tile_c =
    -
    314 index_c_t(std::min(grid_width - tile_c * tile_width, tile_width)) + halo_radius;
    -
    315
    -
    316 index_t r_offset = tile_r * tile_height;
    -
    317 index_r_t start_tile_r = -halo_radius;
    -
    318 index_r_t end_tile_r =
    -
    319 index_r_t(std::min(grid_height - tile_r * tile_height, tile_height)) +
    -
    320 halo_radius;
    -
    321
    -
    322 [[intel::loop_coalesce(2)]] for (index_c_t tile_c = start_tile_c;
    -
    323 tile_c < end_tile_c; tile_c++) {
    -
    324 for (index_r_t tile_r = start_tile_r; tile_r < end_tile_r; tile_r++) {
    -
    325 index_t c = c_offset + tile_c.to_long();
    -
    326 index_t r = r_offset + tile_r.to_long();
    -
    327
    -
    328 Cell value;
    -
    329 if (c >= 0 && r >= 0 && c < grid_width && r < grid_height) {
    -
    330 value = grid_ac[c][r];
    -
    331 } else {
    -
    332 value = halo_value;
    -
    333 }
    -
    334 in_pipe::write(value);
    -
    335 }
    -
    336 }
    -
    337 });
    -
    338 });
    -
    339 }
    -
    -
    340
    -
    369 template <typename out_pipe>
    -
    -
    370 sycl::event submit_write(sycl::queue queue, uindex_t tile_c, uindex_t tile_r) {
    -
    371 if (tile_c >= get_tile_range().c || tile_r >= get_tile_range().r) {
    -
    372 throw std::out_of_range("Tile index out of range!");
    -
    373 }
    -
    374
    -
    375 constexpr uindex_t column_bits = std::bit_width(tile_width);
    -
    376 constexpr uindex_t row_bits = std::bit_width(tile_height);
    -
    377 using uindex_c_t = ac_int<column_bits, false>;
    -
    378 using uindex_r_t = ac_int<row_bits, false>;
    -
    379
    -
    380 return queue.submit([&](sycl::handler &cgh) {
    -
    381 sycl::accessor grid_ac{grid_buffer, cgh, sycl::read_write};
    -
    382 uindex_t grid_width = this->get_grid_width();
    -
    383 uindex_t grid_height = this->get_grid_height();
    -
    384
    -
    385 cgh.single_task([=]() {
    -
    386 uindex_t c_offset = tile_c * tile_width;
    -
    387 uindex_c_t end_tile_c =
    -
    388 uindex_c_t(std::min(grid_width - tile_c * tile_width, tile_width));
    -
    389
    -
    390 uindex_t r_offset = tile_r * tile_height;
    -
    391 uindex_r_t end_tile_r =
    -
    392 uindex_r_t(std::min(grid_height - tile_r * tile_height, tile_height));
    -
    393
    -
    394 [[intel::loop_coalesce(2)]] for (uindex_c_t tile_c = 0; tile_c < end_tile_c;
    -
    395 tile_c++) {
    -
    396 for (uindex_r_t tile_r = 0; tile_r < end_tile_r; tile_r++) {
    -
    397 grid_ac[c_offset + tile_c.to_long()][r_offset + tile_r.to_long()] =
    -
    398 out_pipe::read();
    -
    399 }
    -
    400 }
    -
    401 });
    -
    402 });
    -
    403 }
    -
    -
    404
    -
    405 private:
    -
    406 sycl::buffer<Cell, 2> grid_buffer;
    -
    407};
    -
    -
    408
    -
    409} // namespace tiling
    -
    -
    410} // namespace stencil
    -
    T value
    Definition Helpers.hpp:0
    -
    A helper class to support the double-subscript idiom for GridAccessors.
    Definition AccessorSubscript.hpp:49
    -
    A generic, two-dimensional index.
    Definition GenericID.hpp:32
    -
    An accessor for the monotile grid.
    Definition Grid.hpp:135
    -
    BaseSubscript operator[](uindex_t i)
    Access/Dereference the first dimension.
    Definition Grid.hpp:159
    -
    Cell & operator[](sycl::id< 2 > id)
    Access a cell of the grid.
    Definition Grid.hpp:179
    -
    Cell const & operator[](sycl::id< 2 > id)
    Access a cell of the grid.
    Definition Grid.hpp:167
    -
    AccessorSubscript< Cell, GridAccessor, access_mode > BaseSubscript
    Shorthand for the used subscript type.
    Definition Grid.hpp:150
    -
    static constexpr uindex_t dimensions
    The number of dimensions of the underlying grid.
    Definition Grid.hpp:140
    -
    GridAccessor(Grid &grid)
    Create a new accessor to the given grid.
    Definition Grid.hpp:145
    -
    A grid class for the tiling architecture.
    Definition Grid.hpp:74
    -
    void copy_to_buffer(sycl::buffer< Cell, 2 > output_buffer)
    Copy the contents of the grid into the SYCL buffer.
    Definition Grid.hpp:222
    -
    static constexpr uindex_t dimensions
    The number of dimensions of the grid.
    Definition Grid.hpp:83
    -
    uindex_t get_grid_width() const
    Return the width, or number of columns, of the grid.
    Definition Grid.hpp:244
    -
    void copy_from_buffer(sycl::buffer< Cell, 2 > input_buffer)
    Copy the contents of the SYCL buffer into the grid.
    Definition Grid.hpp:199
    -
    GenericID< uindex_t > get_tile_range() const
    Return the range of (central) tiles of the grid.
    Definition Grid.hpp:260
    -
    sycl::event submit_write(sycl::queue queue, uindex_t tile_c, uindex_t tile_r)
    Submit a kernel that receives cells from the pipe and writes them to the grid.
    Definition Grid.hpp:370
    -
    sycl::event submit_read(sycl::queue &queue, uindex_t tile_c, uindex_t tile_r, Cell halo_value)
    Submit a kernel that sends a tile of the grid into a pipe.
    Definition Grid.hpp:295
    -
    Grid make_similar() const
    Create an new, uninitialized grid with the same size as the current one.
    Definition Grid.hpp:239
    -
    Grid(sycl::buffer< Cell, 2 > input_buffer)
    Create a new grid with the same size and contents as the given SYCL buffer.
    Definition Grid.hpp:111
    -
    Grid(uindex_t grid_width, uindex_t grid_height)
    Create a new, uninitialized grid with the given dimensions.
    Definition Grid.hpp:92
    -
    uindex_t get_grid_height() const
    Return the height, or number of rows, of the grid.
    Definition Grid.hpp:249
    -
    Grid(Grid const &other_grid)
    Create a new reference to the given grid.
    Definition Grid.hpp:124
    -
    Grid(sycl::range< 2 > range)
    Create a new, uninitialized grid with the given dimensions.
    Definition Grid.hpp:101
    -
    Definition AccessorSubscript.hpp:24
    -
    BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
    An unsigned integer of configurable width.
    Definition Index.hpp:42
    -
    BOOST_PP_CAT(BOOST_PP_CAT(int, STENCIL_INDEX_WIDTH), _t) index_t
    A signed integer of configurable width.
    Definition Index.hpp:56
    -
    - - - - diff --git a/tiling_2StencilUpdate_8hpp.html b/tiling_2StencilUpdate_8hpp.html deleted file mode 100644 index e578f82..0000000 --- a/tiling_2StencilUpdate_8hpp.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - -StencilStream: StencilStream/tiling/StencilUpdate.hpp File Reference - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    StencilUpdate.hpp File Reference
    -
    -
    -
    #include "../Concepts.hpp"
    -#include "../GenericID.hpp"
    -#include "../Helpers.hpp"
    -#include "../Index.hpp"
    -#include "../tdv/SinglePassStrategies.hpp"
    -#include "Grid.hpp"
    -#include <chrono>
    -#include <optional>
    -
    -Include dependency graph for StencilUpdate.hpp:
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Classes

    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. More...
     
    class  stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >
     A grid updater that applies an iterative stencil code to a grid. More...
     
    struct  stencil::tiling::StencilUpdate< F, n_processing_elements, tile_width, tile_height, TDVStrategy >::Params
     Parameters for the stencil updater. More...
     
    - - - - - -

    -Namespaces

    namespace  stencil
     
    namespace  stencil::tiling
     
    -
    - - - - diff --git a/tiling_2StencilUpdate_8hpp__incl.map b/tiling_2StencilUpdate_8hpp__incl.map deleted file mode 100644 index 1564da6..0000000 --- a/tiling_2StencilUpdate_8hpp__incl.map +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tiling_2StencilUpdate_8hpp__incl.md5 b/tiling_2StencilUpdate_8hpp__incl.md5 deleted file mode 100644 index fa2da87..0000000 --- a/tiling_2StencilUpdate_8hpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -fe5fb60d7c9332e125b1317f52f17c13 \ No newline at end of file diff --git a/tiling_2StencilUpdate_8hpp__incl.png b/tiling_2StencilUpdate_8hpp__incl.png deleted file mode 100644 index 6077564..0000000 Binary files a/tiling_2StencilUpdate_8hpp__incl.png and /dev/null differ diff --git a/tiling_2StencilUpdate_8hpp_source.html b/tiling_2StencilUpdate_8hpp_source.html deleted file mode 100644 index d34281a..0000000 --- a/tiling_2StencilUpdate_8hpp_source.html +++ /dev/null @@ -1,521 +0,0 @@ - - - - - - - -StencilStream: StencilStream/tiling/StencilUpdate.hpp Source File - - - - - - - - - -
    -
    - - - - - - - -
    -
    StencilStream v3.0.0 -
    -
    SYCL-based Stencil Simulation Framework Targeting FPGAs
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    StencilUpdate.hpp
    -
    -
    -Go to the documentation of this file.
    1/*
    -
    2 * Copyright © 2020-2024 Jan-Oliver Opdenhövel, Paderborn Center for Parallel Computing, Paderborn
    -
    3 * University
    -
    4 *
    -
    5 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
    -
    6 * associated documentation files (the “Software”), to deal in the Software without restriction,
    -
    7 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
    -
    8 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
    -
    9 * furnished to do so, subject to the following conditions:
    -
    10 *
    -
    11 * The above copyright notice and this permission notice shall be included in all copies or
    -
    12 * substantial portions of the Software.
    -
    13 *
    -
    14 * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
    -
    15 * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    -
    16 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    -
    17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -
    18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    -
    19 */
    -
    20#pragma once
    -
    21#include "../Concepts.hpp"
    -
    22#include "../GenericID.hpp"
    -
    23#include "../Helpers.hpp"
    -
    24#include "../Index.hpp"
    -
    25#include "../tdv/SinglePassStrategies.hpp"
    -
    26#include "Grid.hpp"
    -
    27
    -
    28#include <chrono>
    -
    29#include <optional>
    -
    30
    -
    31namespace stencil {
    -
    32namespace tiling {
    -
    33
    -
    56template <concepts::TransitionFunction TransFunc,
    -
    57 tdv::single_pass::KernelArgument<TransFunc> TDVKernelArgument,
    -
    58 uindex_t n_processing_elements, uindex_t output_tile_width, uindex_t output_tile_height,
    -
    59 typename in_pipe, typename out_pipe>
    -
    60 requires(n_processing_elements % TransFunc::n_subiterations == 0)
    -
    - -
    62 private:
    -
    63 using Cell = typename TransFunc::Cell;
    -
    64 using TDV = typename TransFunc::TimeDependentValue;
    - -
    66 using TDVLocalState = typename TDVKernelArgument::LocalState;
    -
    67
    -
    68 static constexpr uindex_t stencil_diameter = StencilImpl::diameter;
    -
    69
    -
    70 static constexpr uindex_t halo_radius = TransFunc::stencil_radius * n_processing_elements;
    -
    71
    -
    72 static constexpr uindex_t max_input_tile_width = 2 * halo_radius + output_tile_width;
    -
    73
    -
    74 static constexpr uindex_t input_tile_height = 2 * halo_radius + output_tile_height;
    -
    75
    -
    76 static constexpr uindex_t n_input_cells = max_input_tile_width * input_tile_height;
    -
    77
    -
    78 using index_stencil_t = typename StencilImpl::index_stencil_t;
    -
    79 using uindex_stencil_t = typename StencilImpl::uindex_stencil_t;
    -
    80 using StencilID = typename StencilImpl::StencilID;
    -
    81 using StencilUID = typename StencilImpl::StencilUID;
    -
    82
    -
    83 static constexpr unsigned long bits_1d =
    -
    84 std::bit_width(std::max(max_input_tile_width, input_tile_height));
    -
    85 using index_1d_t = ac_int<bits_1d + 1, true>;
    -
    86 using uindex_1d_t = ac_int<bits_1d, false>;
    -
    87
    -
    88 static constexpr unsigned long bits_2d = 2 * bits_1d;
    -
    89 using index_2d_t = ac_int<bits_2d + 1, true>;
    -
    90 using uindex_2d_t = ac_int<bits_2d, false>;
    -
    91
    -
    92 // bits_pes must not be 1 since modulo operations on ac_int<1, false> don't work with oneAPI
    -
    93 // 2022.2. If they work with a future version of oneAPI, this can be reverted.
    -
    94 static constexpr unsigned long bits_pes =
    -
    95 std::max<int>(2, std::bit_width(n_processing_elements));
    -
    96 using index_pes_t = ac_int<bits_pes + 1, true>;
    -
    97 using uindex_pes_t = ac_int<bits_pes, false>;
    -
    98
    -
    99 public:
    -
    -
    126 StencilUpdateKernel(TransFunc trans_func, uindex_t i_iteration, uindex_t target_i_iteration,
    -
    127 uindex_t grid_c_offset, uindex_t grid_r_offset, uindex_t grid_width,
    -
    128 uindex_t grid_height, Cell halo_value,
    -
    129 TDVKernelArgument tdv_kernel_argument)
    -
    130 : trans_func(trans_func), i_iteration(i_iteration), target_i_iteration(target_i_iteration),
    -
    131 grid_c_offset(grid_c_offset), grid_r_offset(grid_r_offset), grid_width(grid_width),
    -
    132 grid_height(grid_height), halo_value(halo_value),
    -
    133 tdv_kernel_argument(tdv_kernel_argument) {
    -
    134 assert(grid_c_offset % output_tile_width == 0);
    -
    135 assert(grid_r_offset % output_tile_height == 0);
    -
    136 }
    -
    -
    137
    -
    -
    141 void operator()() const {
    -
    142 TDVLocalState tdv_local_state(tdv_kernel_argument);
    -
    143
    -
    144 uindex_1d_t input_tile_c = 0;
    -
    145 uindex_1d_t input_tile_r = 0;
    -
    146
    -
    147 /*
    -
    148 * The intel::numbanks attribute requires a power of two as it's argument and if the
    -
    149 * number of processing elements isn't a power of two, it would produce an error. Therefore,
    -
    150 * we calculate the next power of two and use it to allocate the cache. The compiler is
    -
    151 * smart enough to see that these additional banks in the cache aren't used and therefore
    -
    152 * optimizes them away.
    -
    153 */
    -
    154 [[intel::fpga_memory,
    -
    155 intel::numbanks(2 * std::bit_ceil(n_processing_elements))]] Padded<Cell>
    -
    156 cache[2][input_tile_height][std::bit_ceil(n_processing_elements)][stencil_diameter - 1];
    -
    157 [[intel::fpga_register]] Cell stencil_buffer[n_processing_elements][stencil_diameter]
    -
    158 [stencil_diameter];
    -
    159
    -
    160 uindex_1d_t output_tile_section_width =
    -
    161 std::min(output_tile_width, grid_width - grid_c_offset);
    -
    162 uindex_1d_t output_tile_section_height =
    -
    163 std::min(output_tile_height, grid_height - grid_r_offset);
    -
    164 uindex_1d_t input_tile_section_width = output_tile_section_width + 2 * halo_radius;
    -
    165 uindex_1d_t input_tile_section_height = output_tile_section_height + 2 * halo_radius;
    -
    166 uindex_2d_t n_iterations = input_tile_section_width * input_tile_section_height;
    -
    167
    -
    168 for (uindex_2d_t i = 0; i < n_iterations; i++) {
    -
    169 [[intel::fpga_register]] Cell carry = in_pipe::read();
    -
    170
    -
    171#pragma unroll
    -
    172 for (uindex_pes_t i_processing_element = 0;
    -
    173 i_processing_element < uindex_pes_t(n_processing_elements);
    -
    174 i_processing_element++) {
    -
    175 /*
    -
    176 * Shift up every value in the stencil_buffer.
    -
    177 * This operation does not touch the values in the bottom row, which will be filled
    -
    178 * from the cache and the new input value later.
    -
    179 */
    -
    180#pragma unroll
    -
    181 for (uindex_stencil_t r = 0; r < uindex_stencil_t(stencil_diameter - 1); r++) {
    -
    182#pragma unroll
    -
    183 for (uindex_stencil_t c = 0; c < uindex_stencil_t(stencil_diameter); c++) {
    -
    184 stencil_buffer[i_processing_element][c][r] =
    -
    185 stencil_buffer[i_processing_element][c][r + 1];
    -
    186 }
    -
    187 }
    -
    188
    -
    189 index_1d_t rel_input_grid_c =
    -
    190 index_1d_t(input_tile_c) -
    -
    191 index_1d_t((stencil_diameter - 1) +
    -
    192 (n_processing_elements + i_processing_element - 2) *
    -
    193 TransFunc::stencil_radius);
    -
    194 index_t input_grid_c = grid_c_offset + rel_input_grid_c.to_int64();
    -
    195 index_1d_t rel_input_grid_r =
    -
    196 index_1d_t(input_tile_r) -
    -
    197 index_1d_t((stencil_diameter - 1) +
    -
    198 (n_processing_elements + i_processing_element - 2) *
    -
    199 TransFunc::stencil_radius);
    -
    200 index_t input_grid_r = grid_r_offset + rel_input_grid_r.to_int64();
    -
    201
    -
    202 // Update the stencil buffer and cache with previous cache contents and the new
    -
    203 // input cell.
    -
    204#pragma unroll
    -
    205 for (uindex_stencil_t cache_c = 0; cache_c < uindex_stencil_t(stencil_diameter);
    -
    206 cache_c++) {
    -
    207 Cell new_value;
    -
    208 if (cache_c == uindex_stencil_t(stencil_diameter - 1)) {
    -
    209 bool is_halo = (grid_c_offset == 0 && rel_input_grid_c < 0);
    -
    210 is_halo |= (grid_r_offset == 0 && rel_input_grid_r < 0);
    -
    211 is_halo |= input_grid_c >= grid_width || input_grid_r >= grid_height;
    -
    212
    -
    213 new_value = is_halo ? halo_value : carry;
    -
    214 } else {
    -
    215 new_value =
    -
    216 cache[input_tile_c[0]][input_tile_r][i_processing_element][cache_c]
    -
    217 .value;
    -
    218 }
    -
    219
    -
    220 stencil_buffer[i_processing_element][cache_c][stencil_diameter - 1] = new_value;
    -
    221 if (cache_c > 0) {
    -
    222 cache[(~input_tile_c)[0]][input_tile_r][i_processing_element][cache_c - 1]
    -
    223 .value = new_value;
    -
    224 }
    -
    225 }
    -
    226
    -
    227 uindex_t pe_iteration =
    -
    228 (i_iteration + i_processing_element / TransFunc::n_subiterations).to_uint();
    -
    229 uindex_t pe_subiteration =
    -
    230 (i_processing_element % TransFunc::n_subiterations).to_uint();
    -
    231 index_t output_grid_c = input_grid_c - index_t(TransFunc::stencil_radius);
    -
    232 index_t output_grid_r = input_grid_r - index_t(TransFunc::stencil_radius);
    -
    233 TDV tdv = tdv_local_state.get_time_dependent_value(i_processing_element /
    -
    234 TransFunc::n_subiterations);
    -
    235 StencilImpl stencil(ID(output_grid_c, output_grid_r), UID(grid_width, grid_height),
    -
    236 pe_iteration, pe_subiteration, tdv,
    -
    237 stencil_buffer[i_processing_element]);
    -
    238
    -
    239 if (pe_iteration < target_i_iteration) {
    -
    240 carry = trans_func(stencil);
    -
    241 } else {
    -
    242 carry = stencil_buffer[i_processing_element][TransFunc::stencil_radius]
    -
    243 [TransFunc::stencil_radius];
    -
    244 }
    -
    245 }
    -
    246
    -
    247 bool is_valid_output =
    -
    248 input_tile_c >= uindex_1d_t((stencil_diameter - 1) * n_processing_elements);
    -
    249 is_valid_output &=
    -
    250 input_tile_r >= uindex_1d_t((stencil_diameter - 1) * n_processing_elements);
    -
    251
    -
    252 if (is_valid_output) {
    -
    253 out_pipe::write(carry);
    -
    254 }
    -
    255
    -
    256 if (input_tile_r == input_tile_section_height - 1) {
    -
    257 input_tile_r = 0;
    -
    258 input_tile_c++;
    -
    259 } else {
    -
    260 input_tile_r++;
    -
    261 }
    -
    262 }
    -
    263 }
    -
    -
    264
    -
    265 private:
    -
    266 TransFunc trans_func;
    -
    267 uindex_t i_iteration;
    -
    268 uindex_t target_i_iteration;
    -
    269 uindex_t grid_c_offset;
    -
    270 uindex_t grid_r_offset;
    -
    271 uindex_t grid_width;
    -
    272 uindex_t grid_height;
    -
    273 Cell halo_value;
    -
    274 TDVKernelArgument tdv_kernel_argument;
    -
    275};
    -
    -
    276
    -
    304template <concepts::TransitionFunction F, uindex_t n_processing_elements = 1,
    -
    305 uindex_t tile_width = 1024, uindex_t tile_height = 1024,
    - - -
    - -
    309 private:
    -
    310 using Cell = F::Cell;
    -
    311 using TDVGlobalState = typename TDVStrategy::template GlobalState<F, n_processing_elements>;
    -
    312 using TDVKernelArgument = typename TDVGlobalState::KernelArgument;
    -
    313
    -
    314 public:
    -
    318 static constexpr uindex_t halo_radius = F::stencil_radius * n_processing_elements;
    -
    319
    - -
    324
    -
    -
    328 struct Params {
    - -
    335
    -
    339 Cell halo_value = Cell();
    -
    340
    - -
    348
    - -
    353
    -
    362 sycl::device device = sycl::device();
    -
    363
    -
    373 bool blocking = false;
    -
    374
    -
    382 bool profiling = false;
    -
    383 };
    -
    -
    384
    -
    - -
    389 : params(params), n_processed_cells(0), work_events(), walltime(0.0) {}
    -
    -
    390
    -
    396 Params &get_params() { return params; }
    -
    397
    -
    - -
    409 using in_pipe = sycl::pipe<class tiling_in_pipe, Cell>;
    -
    410 using out_pipe = sycl::pipe<class tiling_out_pipe, Cell>;
    -
    411 using ExecutionKernelImpl = StencilUpdateKernel<F, TDVKernelArgument, n_processing_elements,
    -
    412 tile_width, tile_height, in_pipe, out_pipe>;
    -
    413
    -
    414 if (params.n_iterations == 0) {
    -
    415 return GridImpl(source_grid);
    -
    416 }
    -
    417
    -
    418 sycl::queue input_kernel_queue =
    -
    419 sycl::queue(params.device, {sycl::property::queue::in_order{}});
    -
    420 sycl::queue output_kernel_queue =
    -
    421 sycl::queue(params.device, {sycl::property::queue::in_order{}});
    -
    422 sycl::queue working_queue =
    -
    423 sycl::queue(params.device, {cl::sycl::property::queue::enable_profiling{},
    -
    424 sycl::property::queue::in_order{}});
    -
    425
    -
    426 GridImpl swap_grid_a = source_grid.make_similar();
    -
    427 GridImpl swap_grid_b = source_grid.make_similar();
    -
    428
    -
    429 uindex_t iters_per_pass = n_processing_elements / F::n_subiterations;
    -
    430 GridImpl *pass_source = &source_grid;
    -
    431 GridImpl *pass_target = &swap_grid_b;
    -
    432
    -
    433 UID tile_range = source_grid.get_tile_range();
    -
    434 uindex_t grid_width = source_grid.get_grid_width();
    -
    435 uindex_t grid_height = source_grid.get_grid_height();
    -
    436
    -
    437 F trans_func = params.transition_function;
    -
    438 TDVGlobalState tdv_global_state(trans_func, params.iteration_offset, params.n_iterations);
    -
    439
    -
    440 auto walltime_start = std::chrono::high_resolution_clock::now();
    -
    441
    -
    442 uindex_t target_n_iterations = params.iteration_offset + params.n_iterations;
    -
    443 for (uindex_t i = params.iteration_offset; i < target_n_iterations; i += iters_per_pass) {
    -
    444 uindex_t iters_in_this_pass = std::min(iters_per_pass, target_n_iterations - i);
    -
    445
    -
    446 for (uindex_t i_tile_c = 0; i_tile_c < tile_range.c; i_tile_c++) {
    -
    447 for (uindex_t i_tile_r = 0; i_tile_r < tile_range.r; i_tile_r++) {
    -
    448 pass_source->template submit_read<in_pipe>(input_kernel_queue, i_tile_c,
    -
    449 i_tile_r, params.halo_value);
    -
    450
    -
    451 auto work_event = working_queue.submit([&](sycl::handler &cgh) {
    -
    452 TDVKernelArgument tdv_kernel_argument(tdv_global_state, cgh, i,
    -
    453 iters_in_this_pass);
    -
    454 uindex_t c_offset = i_tile_c * tile_width;
    -
    455 uindex_t r_offset = i_tile_r * tile_height;
    -
    456
    -
    457 ExecutionKernelImpl exec_kernel(trans_func, i, target_n_iterations,
    -
    458 c_offset, r_offset, grid_width, grid_height,
    -
    459 params.halo_value, tdv_kernel_argument);
    -
    460
    -
    461 cgh.single_task<ExecutionKernelImpl>(exec_kernel);
    -
    462 });
    -
    463 if (params.profiling) {
    -
    464 work_events.push_back(work_event);
    -
    465 }
    -
    466
    -
    467 pass_target->template submit_write<out_pipe>(output_kernel_queue, i_tile_c,
    -
    468 i_tile_r);
    -
    469 }
    -
    470 }
    -
    471
    -
    472 if (i == params.iteration_offset) {
    -
    473 pass_source = &swap_grid_b;
    -
    474 pass_target = &swap_grid_a;
    -
    475 } else {
    -
    476 std::swap(pass_source, pass_target);
    -
    477 }
    -
    478 }
    -
    479
    -
    480 if (params.blocking) {
    -
    481 output_kernel_queue.wait();
    -
    482 }
    -
    483
    -
    484 auto walltime_end = std::chrono::high_resolution_clock::now();
    -
    485 std::chrono::duration<double> walltime = walltime_end - walltime_start;
    -
    486 this->walltime += walltime.count();
    -
    487
    -
    488 n_processed_cells +=
    -
    489 params.n_iterations * source_grid.get_grid_width() * source_grid.get_grid_height();
    -
    490
    -
    491 return *pass_source;
    -
    492 }
    -
    -
    493
    -
    501 uindex_t get_n_processed_cells() const { return n_processed_cells; }
    -
    502
    -
    -
    509 double get_kernel_runtime() const {
    -
    510 double kernel_runtime = 0.0;
    -
    511 for (sycl::event work_event : work_events) {
    -
    512 const double timesteps_per_second = 1000000000.0;
    -
    513 double start =
    -
    514 double(work_event
    -
    515 .get_profiling_info<cl::sycl::info::event_profiling::command_start>()) /
    -
    516 timesteps_per_second;
    -
    517 double end =
    -
    518 double(
    -
    519 work_event.get_profiling_info<cl::sycl::info::event_profiling::command_end>()) /
    -
    520 timesteps_per_second;
    -
    521 kernel_runtime += end - start;
    -
    522 }
    -
    523 return kernel_runtime;
    -
    524 }
    -
    -
    525
    -
    532 double get_walltime() const { return walltime; }
    -
    533
    -
    534 private:
    -
    535 Params params;
    -
    536 uindex_t n_processed_cells;
    -
    537 double walltime;
    -
    538 std::vector<sycl::event> work_events;
    -
    539};
    -
    -
    540
    -
    541} // namespace tiling
    -
    542} // namespace stencil
    -
    T value
    Definition Helpers.hpp:0
    -
    A generic, two-dimensional index.
    Definition GenericID.hpp:32
    -
    The stencil buffer.
    Definition Stencil.hpp:48
    -
    ac_int< bits_stencil, false > uindex_stencil_t
    An unsigned index type for column and row indices in this stencil.
    Definition Stencil.hpp:60
    -
    ac_int< bits_stencil, true > index_stencil_t
    A signed index type for column and row indices in this stencil.
    Definition Stencil.hpp:57
    -
    A grid class for the tiling architecture.
    Definition Grid.hpp:74
    -
    A kernel that executes a stencil transition function on a tile.
    Definition StencilUpdate.hpp:61
    -
    void operator()() const
    Execute the configured operations.
    Definition StencilUpdate.hpp:141
    -
    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.
    Definition StencilUpdate.hpp:126
    -
    A grid updater that applies an iterative stencil code to a grid.
    Definition StencilUpdate.hpp:308
    -
    Grid< Cell, tile_width, tile_height, halo_radius > GridImpl
    A shorthand for the used and supported grid type.
    Definition StencilUpdate.hpp:323
    -
    double get_walltime() const
    Return the accumulated runtime of the updater, measured from the host side.
    Definition StencilUpdate.hpp:532
    -
    StencilUpdate(Params params)
    Create a new stencil updater object.
    Definition StencilUpdate.hpp:388
    -
    uindex_t get_n_processed_cells() const
    Return the accumulated total number of cells processed by this updater.
    Definition StencilUpdate.hpp:501
    -
    static constexpr uindex_t halo_radius
    The radius of an input's tile halo.
    Definition StencilUpdate.hpp:318
    -
    Params & get_params()
    Return a reference to the parameters.
    Definition StencilUpdate.hpp:396
    -
    GridImpl operator()(GridImpl &source_grid)
    Compute a new grid based on the source grid, using the configured transition function.
    Definition StencilUpdate.hpp:408
    -
    double get_kernel_runtime() const
    Return the accumulated total runtime of the execution kernel.
    Definition StencilUpdate.hpp:509
    -
    A technical definition of a stencil transition function.
    Definition Concepts.hpp:62
    -
    Requirements for a TDV implementation strategy.
    Definition SinglePassStrategies.hpp:99
    -
    Definition AccessorSubscript.hpp:24
    -
    GenericID< uindex_t > UID
    An unsigned, two-dimensional index.
    Definition GenericID.hpp:80
    -
    BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
    An unsigned integer of configurable width.
    Definition Index.hpp:42
    -
    GenericID< index_t > ID
    A signed, two-dimensional index.
    Definition GenericID.hpp:75
    -
    BOOST_PP_CAT(BOOST_PP_CAT(int, STENCIL_INDEX_WIDTH), _t) index_t
    A signed integer of configurable width.
    Definition Index.hpp:56
    -
    A container with padding to the next power of two.
    Definition Helpers.hpp:45
    -
    A TDV implementation strategy that inlines the TDV function into the transition function.
    Definition SinglePassStrategies.hpp:114
    -
    Parameters for the stencil updater.
    Definition StencilUpdate.hpp:328
    -
    bool blocking
    Should the stencil updater block until completion, or return immediately after all kernels have been ...
    Definition StencilUpdate.hpp:373
    -
    uindex_t iteration_offset
    The iteration index offset.
    Definition StencilUpdate.hpp:347
    -
    uindex_t n_iterations
    The number of iterations to compute.
    Definition StencilUpdate.hpp:352
    -
    Cell halo_value
    The cell value to present for cells outside of the grid.
    Definition StencilUpdate.hpp:339
    -
    F transition_function
    An instance of the transition function type.
    Definition StencilUpdate.hpp:334
    -
    bool profiling
    Enable profiling.
    Definition StencilUpdate.hpp:382
    -
    sycl::device device
    The device to use for computations.
    Definition StencilUpdate.hpp:362
    - -
    - - - -