freepooma-devel
[Top][All Lists]
Advanced

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

Re: [pooma-dev] Re: Status


From: Richard Guenther
Subject: Re: [pooma-dev] Re: Status
Date: Tue, 24 Aug 2004 11:59:17 +0200 (CEST)

On Mon, 23 Aug 2004, Jeffrey D. Oldham wrote:

> Richard Guenther wrote:
>
> > Apart from the "Fix reductions for MPI operation" patch everything
> > necessary seems to be committed.  We're all seeing
> > Field/ExpressionTest failing since a while - I'm currently
> > investigating the reason and my brain is hurting trying to
> > second-guess what is taking what view in which case :)  The good news
> > is, I have a workaround for applying to
> > the testcase (apart from disabling the failing part again).  It's
> > appended below.  The bad news is, I don't know yet what is going wrong.
> >
> > Richard.
>
> The failure first occurred 20Jul.  It occurs on an assertion in
> src/Field/Field.h, line 443.  If I remember correctly, it was because of
> a sizable patch you committed, but I did not remember more. :(  It might
> be this patch:
> http://www.codesourcery.com/archives/pooma-dev/msg01707.html .

I thought so, too, but reverting that patch doesn't fix the problem.
The question really is what is the difference between using the
stencils (expr, domain) vs. (expr) constructor and taking the view
afterwards.

There seems to be some inconsistency (which may be caused by the
ExpressionEngine not really being zeroBased in all cases - but I'm not
sure yet) wrt. Stencils/Expressions and domains.

I did invent some artificial testcase to test assumptions we (may) have
about how Stencils and Expressions work wrt domains and views and it
fails with the same error as we see with the ExpressionTest.  What I do
not know at the time is wether my assertions on how things work are
correct or not.

For reference, I attached the testcase that is in parts failing, in other
parts triggering bounds checking error.  The bounds checking error is
always within the stencil functor in checking the expressions component,
i.e. for

  (a+b).read(i)

we check one time for the expression domain of (a+b) which succeeds
and then proceed to check for the domain of a for which the assertion
triggers.

In ExpressionTest we fail at

293:  a4(I) = initial(I) + twoPt(a3, I);

where I is [2:7:1] and the (total) domain of a3 is [-1:9:1].

The question now is, what is the difference of using
FieldStencilSimple::make(stencil, expr(domain)) and
FieldStencilSimple::make(stencil, expr)(domain)
(apart from making it work).  The difference may be that
we use physicalDomain() on the expr in make() and that doesn't
work (or doesn't make a difference) for Field Views.

If checking both versions like

  tester.out() << twoPt(a3, I).domain() << twoPt(a3,
I).engine().field().domain() << std::endl;
  tester.out() << twoPt(a3)(I).domain() <<
twoPt(a3)(I).engine().field().domain() << std::endl;

we end up with
Pooma> [0:5:1][0:5:1]
Pooma> [0:5:1][0:8:1]
which may explain why we do not fail for the second case.

But of course we cannot "ban" views from make() as that would
ban expressions...

All the analysis above is true with and without the patch we thought
may be causing the failure.

Oh well,

Richard.

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


reply via email to

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