freepooma-devel
[Top][All Lists]
Advanced

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

RE: [pooma-dev] [Q] ReceiveIterate asymmetry bug?


From: Richard Guenther
Subject: RE: [pooma-dev] [Q] ReceiveIterate asymmetry bug?
Date: Thu, 11 Dec 2003 12:01:34 +0100 (CET)

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;
 };

 /**

reply via email to

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