[PATCH] Another Stencil test
Jeffrey D. Oldham
oldham at codesourcery.com
Tue Jul 20 18:29:52 UTC 2004
Richard Guenther wrote:
>This adds a Stencil test for expression arguments and removes a FIXME.
>
>Ok?
>
>
Yes, please commit this. More testing is always a good thing. I'll add
another test to the nightly Pooma regression tests.
>Richard.
>
>
>2004Jul20 Richard Guenther <richard.guenther at uni-tuebingen.de>
>
> * src/Engine/Stencil.h: remove FIXME.
> src/Array/tests/array_test33.cpp: new.
> src/Array/tests/makefile: add array_test33.
>
>--
>Richard Guenther <richard dot guenther at uni-tuebingen dot de>
>WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/
>
>------------------------------------------------------------------------
>
>--- pooma-bk/r2/src/Engine/Stencil.h Fri Jan 16 23:03:53 2004
>+++ pooma-bib/r2/src/Engine/Stencil.h Thu Jul 15 11:31:50 2004
>@@ -815,8 +815,6 @@
> GuardLayers<Dim> &usedGuards)
> {
> intersect(engine);
>- // FIXME: accumulate used guards from intersect above and
>- // stencil extent? I.e. allow Stencil<>(a(i-1)+a(i+1))?
> usedGuards = stencilExtent_m;
> return true;
> }
>--- /dev/null Tue May 18 17:20:27 2004
>+++ pooma-bib/r2/src/Array/tests/array_test33.cpp Thu Jul 15 11:31:41 2004
>@@ -0,0 +1,86 @@
>+// -*- C++ -*-
>+// ACL:license
>+// ----------------------------------------------------------------------
>+// This software and ancillary information (herein called "SOFTWARE")
>+// called POOMA (Parallel Object-Oriented Methods and Applications) is
>+// made available under the terms described here. The SOFTWARE has been
>+// approved for release with associated LA-CC Number LA-CC-98-65.
>+//
>+// Unless otherwise indicated, this SOFTWARE has been authored by an
>+// employee or employees of the University of California, operator of the
>+// Los Alamos National Laboratory under Contract No. W-7405-ENG-36 with
>+// the U.S. Department of Energy. The U.S. Government has rights to use,
>+// reproduce, and distribute this SOFTWARE. The public may copy, distribute,
>+// prepare derivative works and publicly display this SOFTWARE without
>+// charge, provided that this Notice and any statement of authorship are
>+// reproduced on all copies. Neither the Government nor the University
>+// makes any warranty, express or implied, or assumes any liability or
>+// responsibility for the use of this SOFTWARE.
>+//
>+// If SOFTWARE is modified to produce derivative works, such modified
>+// SOFTWARE should be clearly marked, so as not to confuse it with the
>+// version available from LANL.
>+//
>+// For more information about POOMA, send e-mail to pooma at acl.lanl.gov,
>+// or visit the POOMA web page at http://www.acl.lanl.gov/pooma/.
>+// ----------------------------------------------------------------------
>+// ACL:license
>+
>+//-----------------------------------------------------------------------------
>+// array_test33.cpp verify correctnes of stencil objects with expressions
>+//-----------------------------------------------------------------------------
>+
>+// Include files
>+
>+#include "Pooma/Arrays.h"
>+#include "Utilities/Tester.h"
>+#include <iostream>
>+
>+class EvaluateExpr
>+{
>+public:
>+ template <class A>
>+ typename A::Element_t operator()(const A& x, int i) const
>+ {
>+ return x.read(i);
>+ }
>+
>+ int lowerExtent(int) const { return 0; }
>+ int upperExtent(int) const { return 0; }
>+};
>+
>+int main(int argc, char *argv[])
>+{
>+ // Initialize POOMA and output stream, using Tester class
>+ Pooma::initialize(argc, argv);
>+ Pooma::Tester tester(argc, argv);
>+
>+ Interval<1> domain(8);
>+ UniformGridLayout<1> layout(domain, Loc<1>(2), GuardLayers<1>(1), DistributedTag());
>+ Array<1,int,MultiPatch<UniformTag, Remote<Brick> > > a(layout), b(layout), c(layout);
>+
>+ a = 0;
>+ b = 1;
>+ c = 2;
>+ a(domain) = Stencil<EvaluateExpr>()(b(domain-1)+c(domain+1), domain);
>+ tester.check("a = b(I-1) + c(I+1)", all(a(domain) == 3));
>+ tester.out() << a(domain) << std::endl;
>+
>+ a = 0;
>+ b = 2;
>+ c = 3;
>+ a(domain) = b(domain) + Stencil<EvaluateExpr>()(b(domain)+c(domain+1), domain);
>+ tester.check("a = b + b(I-1) + c", all(a(domain) == 7));
>+ tester.out() << a(domain) << std::endl;
>+
>+ int retval = tester.results("array_test33");
>+ Pooma::finalize();
>+ return retval;
>+}
>+
>+// ACL:rcsinfo
>+// ----------------------------------------------------------------------
>+// $RCSfile: array_test23.cpp,v $ $Author: sa_smith $
>+// $Revision: 1.5 $ $Date: 2000/07/04 05:06:54 $
>+// ----------------------------------------------------------------------
>+// ACL:rcsinfo
>
>
--
Jeffrey D. Oldham
oldham at codesourcery.com
More information about the pooma-dev
mailing list