[pooma-dev] [Q] ReceiveIterate asymmetry bug?
Richard Guenther
rguenth at tat.physik.uni-tuebingen.de
Thu Dec 11 11:01:34 UTC 2003
On Tue, 9 Dec 2003, Richard Guenther wrote:
> On Tue, 9 Dec 2003, James Crotinger wrote:
>
> > Hi Richard,
> >
> > I'm interested, but very busy at the moment. This stuff was tested fairly
> > strenuously back in '97, including purified, so if there is a resource bug,
> > it has snuck in since. Unfortunately, the out-of-order execution details
> > involving multiple contexts are more than a little rusty in my brain, and I
> > don't see that I'll have time to review this soon. I'm pretty sure that
> > out-of-order handling of these messages is critical if you want to get any
> > advantage of out-of-order execution.
>
> Fair enough. I'm seeing "random" testresults, f.i. for the Particle
> destroy test, sometimes segfaulting, sometimes passing, sometimes failing,
> and this _seems_ to be fixed with this patch. But of course this kills
> performance too much. I just thought I'm missing some critical part of the
> code where it should magically work ;)
Another patch - this time with no predicted change in performance. Just to
keep the view life until use. Looks obviously correct to me, but didn't
solve my reproducable SCore deadlock's in global reductions with blocking
expressions off.
Richard.
--
Richard Guenther <richard dot guenther at uni-tuebingen dot de>
WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/
===== SendReceive.h 1.3 vs edited =====
--- 1.3/r2/src/Tulip/SendReceive.h Thu Oct 23 14:41:05 2003
+++ edited/SendReceive.h Thu Dec 11 11:58:06 2003
@@ -149,7 +149,7 @@
: Pooma::Iterate_t(Pooma::scheduler()),
fromContext_m(fromContext),
tag_m(tag),
- view_m(view)
+ view_m(new View(view))
{
PAssert(fromContext >= 0);
@@ -213,18 +213,19 @@
private:
- static void apply(const View &viewLocal, IncomingView &viewMessage)
+ static void apply(const View *viewLocal, IncomingView &viewMessage)
{
// For now, we just copy the message into the brick accepting the data.
- KernelEvaluator<InlineKernelTag>::evaluate(viewLocal, OpAssign(),
+ KernelEvaluator<InlineKernelTag>::evaluate(*viewLocal, OpAssign(),
viewMessage);
// Release the received block:
DataObjectRequest<WriteRelease> writeReq;
- engineFunctor(viewLocal, writeReq);
+ engineFunctor(*viewLocal, writeReq);
Pooma::gotIncomingMessage();
+ delete viewLocal;
}
// Context we're sending the data to.
@@ -238,7 +239,7 @@
// The place to put the data we're receiving (typically a view of the
// engine).;
- View view_m;
+ View *view_m;
};
/**
More information about the pooma-dev
mailing list