From 7b71b05205a4cb3b21e75cfa21db4dbf21c80c5d Mon Sep 17 00:00:00 2001 From: Martin Bauer <martin.bauer@fau.de> Date: Thu, 25 Apr 2019 11:03:52 +0200 Subject: [PATCH] pystencils_walberla: configurable inner-outer split width --- .../templates/SweepInnerOuter.tmpl.cpp | 22 +++++++++---------- .../templates/SweepInnerOuter.tmpl.h | 5 +++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/pystencils_walberla/templates/SweepInnerOuter.tmpl.cpp b/pystencils_walberla/templates/SweepInnerOuter.tmpl.cpp index de1c5b5..f8c72ec 100644 --- a/pystencils_walberla/templates/SweepInnerOuter.tmpl.cpp +++ b/pystencils_walberla/templates/SweepInnerOuter.tmpl.cpp @@ -77,7 +77,7 @@ void {{class_name}}::inner( IBlock * block{%if target is equalto 'gpu'%} , cudaS {{kernel|generate_block_data_to_field_extraction|indent(4)}} CellInterval inner = {{field}}->xyzSize(); - inner.expand(-1); + inner.expand(Cell(-outerWidth_[0], -outerWidth_[1], -outerWidth_[2])); {{kernel|generate_call(stream='stream', cell_interval='inner')|indent(4)}} } @@ -91,23 +91,23 @@ void {{class_name}}::outer( IBlock * block{%if target is equalto 'gpu'%} , cudaS { CellInterval ci; - {{field}}->getSliceBeforeGhostLayer(stencil::T, ci, 1, false); + {{field}}->getSliceBeforeGhostLayer(stencil::T, ci, outerWidth_[2], false); layers_.push_back(ci); - {{field}}->getSliceBeforeGhostLayer(stencil::B, ci, 1, false); + {{field}}->getSliceBeforeGhostLayer(stencil::B, ci, outerWidth_[2], false); layers_.push_back(ci); - {{field}}->getSliceBeforeGhostLayer(stencil::N, ci, 1, false); - ci.expand(Cell(0, 0, -1)); + {{field}}->getSliceBeforeGhostLayer(stencil::N, ci, outerWidth_[1], false); + ci.expand(Cell(0, 0, -outerWidth_[2])); layers_.push_back(ci); - {{field}}->getSliceBeforeGhostLayer(stencil::S, ci, 1, false); - ci.expand(Cell(0, 0, -1)); + {{field}}->getSliceBeforeGhostLayer(stencil::S, ci, outerWidth_[1], false); + ci.expand(Cell(0, 0, -outerWidth_[2])); layers_.push_back(ci); - {{field}}->getSliceBeforeGhostLayer(stencil::E, ci, 1, false); - ci.expand(Cell(0, -1, -1)); + {{field}}->getSliceBeforeGhostLayer(stencil::E, ci, outerWidth_[0], false); + ci.expand(Cell(0, -outerWidth_[1], -outerWidth_[2])); layers_.push_back(ci); - {{field}}->getSliceBeforeGhostLayer(stencil::W, ci, 1, false); - ci.expand(Cell(0, -1, -1)); + {{field}}->getSliceBeforeGhostLayer(stencil::W, ci, outerWidth_[0], false); + ci.expand(Cell(0, -outerWidth_[1], -outerWidth_[2])); layers_.push_back(ci); } diff --git a/pystencils_walberla/templates/SweepInnerOuter.tmpl.h b/pystencils_walberla/templates/SweepInnerOuter.tmpl.h index c2c1d4d..ff04541 100644 --- a/pystencils_walberla/templates/SweepInnerOuter.tmpl.h +++ b/pystencils_walberla/templates/SweepInnerOuter.tmpl.h @@ -52,8 +52,8 @@ namespace {{namespace}} { class {{class_name}} { public: - {{class_name}}( {{kernel|generate_constructor_parameters}}) - : {{ kernel|generate_constructor_initializer_list }} + {{class_name}}( {{kernel|generate_constructor_parameters}}, const Cell & outerWidth=Cell(1, 1, 1)) + : {{ kernel|generate_constructor_initializer_list }}, outerWidth_(outerWidth) {}; {{ kernel| generate_destructor(class_name) |indent(4) }} @@ -98,6 +98,7 @@ private: cuda::ParallelStreams parallelStreams_; {% endif %} + Cell outerWidth_; std::vector<CellInterval> layers_; }; -- GitLab