summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2026-01-19 18:40:40 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2026-01-19 18:40:40 +0100
commit5b11a9374a0f7e6fb667d63519c2714a934398b0 (patch)
tree54d764730595e32bc10f2fdae4dc7238f12d4532 /lib
parentda7878360b0b4c58af922b491f5d775a867b191a (diff)
downloadlibs-lbm-5b11a9374a0f7e6fb667d63519c2714a934398b0.tar.gz
Chunk tmpl deduction
Diffstat (limited to 'lib')
-rw-r--r--lib/core/c++/chunk.hpp20
-rw-r--r--lib/sycl/c++/data.hpp2
2 files changed, 14 insertions, 8 deletions
diff --git a/lib/core/c++/chunk.hpp b/lib/core/c++/chunk.hpp
index 38b567b..223ceec 100644
--- a/lib/core/c++/chunk.hpp
+++ b/lib/core/c++/chunk.hpp
@@ -6,23 +6,29 @@ namespace kel {
namespace lbm {
namespace sch {
namespace impl {
-template<typename Sch, uint64_t Dim, uint64_t Side, typename... AddedSides>
+template<typename Sch, uint64_t Ghost, typename LeftG, typename RightG>
struct chunk_schema_type_helper {
- using Schema = typename chunk_schema_type_helper<Sch,Dim-1u,Side,AddedSides...,Side>::Schema;
+ using Schema = typename chunk_schema_type_helper<Sch,Ghost,LeftG,RightG>::Schema;
};
-template<typename Sch, uint64_t Side, typename... AddedSides>
-struct chunk_schema_type_helper<Sch, 0u, Side, AddedSides...> {
+template<typename Sch, uint64_t Ghost, typename Side0, typename... Sides, typename... AddedSides>
+struct chunk_schema_type_helper<Sch, Ghost, saw::tmpl_group<Side0,Sides...>, saw::tmpl_group<AddedSides...>> final {
+ using Schema = FixedArray<Sch,AddedSides...>;
+};
+
+template<typename Sch, uint64_t Ghost, uint64_t... AddedSides>
+struct chunk_schema_type_helper<Sch, Ghost, saw::tmpl_group<Side0,Sides...>, saw::tmpl_group<AddedSides...>> final {
using Schema = FixedArray<Sch,AddedSides...>;
};
}
-template<typename Schema, uint64_t Dim, uint64_t Side, uint64_t Ghost = 0u>
+template<typename Schema, uint64_t Ghost, uint64_t... Side>
struct Chunk {
- using InnerSchema = typename impl::chunk_schema_type_helper<Sch, Dim, Side + (2u*Ghost)>::Schema;
+ using InnerSchema = typename impl::chunk_schema_type_helper<Sch, Ghost, Side...>::Schema;
};
+// Not needed for now
template<typename ChunkSchema, uint64_t Dim>
using SuperChunk = Array<ChunkSchema,Dim>;
}
@@ -35,7 +41,7 @@ class data<kel::lbm::sch::Chunk<Sch,Dim,Side,Ghost>,Encode> final {
public:
using Schema = kel::lbm::sch::Chunk<Sch,Dim,Side,Ghost>;
private:
- data<Schema::InnerSchema, Encode>
+ data<typename Schema::InnerSchema, Encode> values_;
public:
};
}
diff --git a/lib/sycl/c++/data.hpp b/lib/sycl/c++/data.hpp
index 53a35bc..bba52d6 100644
--- a/lib/sycl/c++/data.hpp
+++ b/lib/sycl/c++/data.hpp
@@ -19,7 +19,7 @@ struct struct_has_only_equal_dimension_array{};
namespace saw {
template<uint64_t... Meta, typename... Sch, string_literal... Keys, typename Encode>
-class data<schema::Struct<schema::Member<schema::FixedArray<Sch,Meta...>, Keys>...>, kel::lbm::encode::Sycl<Encode>> final {
+class data<schema::Struct<schema::Member<schema::Chunk<Sch,Ghost,Meta...>, Keys>...>, kel::lbm::encode::Sycl<Encode>> final {
public:
static constexpr data<schema::FixedArray meta = {{Meta...}};
using StorageT = std::tuple<data<Members::Type::InnerSchema,Encode>*...>;