freepooma-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Freepooma-devel] [PATCH] Canonicalize handling of external/internal gua


From: Richard Guenther
Subject: [Freepooma-devel] [PATCH] Canonicalize handling of external/internal guards
Date: Fri, 1 Apr 2005 15:25:55 +0200 (CEST)

Hi!

This patch canonicalizes the handling of hasInternalGuards_m and
hasExternalGuards_m in the various grid layouts.  It also disables
optimizing away of internal guards if the partitioner will create
at most one patch.

One could question, if we should disable internal guards if the
domain is empty, as we do for external guards.  But I even think
of disabling this "optimization".  The user should really get
what he asked for, even if it doesn't make much sense in some
corner case.

This also magically fixes the CIC problems, though I still think
the internal guards checking in CIC is not really correct.  But
note you need an updated CVS repository for this, as I checked in
a trivial (but necessary) fix to FieldStencilSimple::make a few
minutes ago.

The patch passes regression-testing, but due to our bad testing
coverage the real problems may stay hidden.  Maybe someone has
some input on the reasons of all the special casing in the grid
layouts?

Thanks,
Richard.

--
Richard Guenther <richard dot guenther at uni-tuebingen dot de>
WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/


Index: src/Layout/GridLayout.cpp
===================================================================
RCS file: /cvsroot/freepooma/freepooma/src/Layout/GridLayout.cpp,v
retrieving revision 1.93
diff -u -r1.93 GridLayout.cpp
--- src/Layout/GridLayout.cpp   10 Nov 2004 22:02:10 -0000      1.93
+++ src/Layout/GridLayout.cpp   1 Apr 2005 11:59:47 -0000
@@ -142,7 +142,7 @@
   // Examine the partitioner for info about guard cells.  Change our
   // domains if necessary, and save guard cell info for later.

-  this->hasInternalGuards_m = (gpar.hasInternalGuards() && gpar.maxSize() > 1);
+  this->hasInternalGuards_m = gpar.hasInternalGuards();
   if (this->hasInternalGuards_m)
     {
       this->internalGuards_m = gpar.internalGuards();
Index: src/Layout/SparseTileLayout.cpp
===================================================================
RCS file: /cvsroot/freepooma/freepooma/src/Layout/SparseTileLayout.cpp,v
retrieving revision 1.31
diff -u -r1.31 SparseTileLayout.cpp
--- src/Layout/SparseTileLayout.cpp     1 Nov 2004 18:16:54 -0000       1.31
+++ src/Layout/SparseTileLayout.cpp     1 Apr 2005 11:59:47 -0000
@@ -134,13 +134,13 @@
 {
   this->blocks_m = Loc<Dim>();
   // Figure out if we have guards to worry about.
-  if (gpar.hasInternalGuards() && gpar.maxSize() > 1)
+  if (gpar.hasInternalGuards())
     {
       this->hasInternalGuards_m = true;
       this->internalGuards_m = gpar.internalGuards();
     }

-  if (gpar.hasExternalGuards())
+  if (gpar.hasExternalGuards() && ! bbox.empty())
     {
       this->hasExternalGuards_m = true;
       this->externalGuards_m = gpar.externalGuards();
Index: src/Layout/UniformGridLayout.cpp
===================================================================
RCS file: /cvsroot/freepooma/freepooma/src/Layout/UniformGridLayout.cpp,v
retrieving revision 1.43
diff -u -r1.43 UniformGridLayout.cpp
--- src/Layout/UniformGridLayout.cpp    1 Nov 2004 18:16:54 -0000       1.43
+++ src/Layout/UniformGridLayout.cpp    1 Apr 2005 11:59:47 -0000
@@ -78,13 +78,13 @@
 {
   // Figure out if we have guards to worry about.

-  if (gpar.hasInternalGuards() && gpar.maxSize() > 1)
+  if (gpar.hasInternalGuards())
     {
       this->hasInternalGuards_m = true;
       this->internalGuards_m = gpar.internalGuards();
     }

-  if (gpar.hasExternalGuards())
+  if (gpar.hasExternalGuards() && ! gdom.empty())
     {
       this->hasExternalGuards_m = true;
       this->externalGuards_m = gpar.externalGuards();






reply via email to

[Prev in Thread] Current Thread [Next in Thread]