Aniruddha,

No, b *is* a copy, but not a value array.

This is actually a bug in the X10 runtime libraries' implementation.
The restriction ("|") operator does not create a value array, even if
applied to a value array.  That's why you get the place checks, etc.
We'll need to fix this.

In the meantime, you can turn off place checks using the
-BAD_PLACE_RUNTIME_CHECK=false runtime option.  If you don't want to
do that, you can make sure a value copy is created by using the
following snippet:

final double value [.] a_sub = a | subD;
final double value [.] b (point p) { return a_sub[p]; };

(Vijay will, hopefully, correct me if this is wrong).
        Igor

"Shet, Aniruddha G." wrote on 04/04/2007 11:09:29 AM:

> Igor,
> 
> In the code that I sent, if b were declared as 
> 
> final double value [.] b = a | subD;
> 
> can I expect a local copy to be created or is b treated only as a
> reference to a section of a? I see that a BadPlaceException is thrown
> when I try to access an element in b, which indicates that no local copy
> is created.
> 
> Thanks,
> Aniruddha 
> 
> -----Original Message-----
> From: Igor Peshansky 
> Sent: Wednesday, April 04, 2007 1:13 AM
> To: Shet, Aniruddha G.
> Cc: x10-users<at>lists.sourceforge.net
> Subject: RE: [X10-users] Array assignment & update/overlay
> 
> Aniruddha,
> 
> Thanks for the detailed report.  I've reproduced the first problem here.
> 
> We'll debug it and get back
> to you.  In the meantime, since you're on an SMP, you can turn off
> BadPlaceExceptions by using the -BAD_PLACE_RUNTIME_CHECK=false option.
> 
> The second problem is a bug, but only because the code to throw the
> appropriate kind of exception never got written, so an assertion is
> tripped instead.
>         Igor
> 
> "Shet, Aniruddha G." wrote on 04/03/2007 11:20:10 PM:
> 
> > Hi Igor,
> > 
> > In the foll piece of code, the activity at place 0 is trying to update
> 
> > a locally allocated reference array with a block from a distributed 
> > value
> > array:-
> > 
> > public class test {
> >         final region R = [1:20, 1:20];
> >         final dist D = dist.factory.block(R);
> >         final double value [.] a = new double value [D] (point [i,j]) 
> > {return i+j;};
> > 
> >         public void run() {
> >                 async(here) {
> >                         double [.] b = new double [ [15:19, 1:5] ];
> >                         final dist subD = D | [15:19, 1:5];
> >                         b.update(a | subD);
> >                 }
> >         }
> > 
> >         public static void main(String[] args) {
> >                 new test().run();
> >         }
> > }
> > 
> > This code throws the foll error when run with 4 places:-
> > 
> > Exception in thread "pool-0-thread-0: Main Activity"
> > BadPlaceException(dist. array, var location=place(id=2) access at
> > place=place(id=0))
> >         at x10.lang.Runtime.hereCheckPlace(Runtime.java:313)
> >         at x10.array.DoubleArray.get(DoubleArray.java:103)
> >         at x10.array.DoubleArray.get(DoubleArray.java:100)
> >         at x10.array.DoubleArray.update(DoubleArray.java:389)
> >         at test$2.runX10Task(test.java:133)
> >         at
> > x10.runtime.InvocationStrategy$DefaultStrategy.invokeX10Task(Invocatio
> > nS
> > trategy.java:57)
> >         at x10.runtime.Activity.run(Activity.java:192)
> >         at
> > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecu
> > to
> > r.java:665)
> >         at
> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.
> > ja
> > va:690)
> >         at java.lang.Thread.run(Thread.java:799)
> > 
> > 
> > 
> > I would like some more clarifications here --
> > 
> > -- If I were to def b as "double [.] b = new double [ [1:5, 1:5] ]" 
> > and leave subD unchanged, then I get the error:-
> > 
> > Exception in thread "pool-0-thread-0: Main Activity"
> > java.lang.AssertionError
> >         at x10.array.DoubleArray.update(DoubleArray.java:382)
> >         at test$2.runX10Task(test.java:133)
> >         at
> > x10.runtime.InvocationStrategy$DefaultStrategy.invokeX10Task(Invocatio
> > nS
> > trategy.java:57)
> >         at x10.runtime.Activity.run(Activity.java:192)
> >         at
> > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecu
> > to
> > r.java:665)
> >         at
> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.
> > ja
> > va:690)
> >         at java.lang.Thread.run(Thread.java:799)
> > 
> > b here has the same shape and size as before, but a different index
> set.
> > I feel that such a capability is desirable.
> > 
> > -- Correct me if I am wrong in saying that if two arrays have 
> > identical regions but different distributions, then 
> > assignment/update/overlay operations should run correctly so long as 
> > the locality rule is not violated.
> > 
> > Thanks,
> > Aniruddha
> > -----------------------------------------------------------
> > Aniruddha G. Shet                 |Email: [EMAIL PROTECTED]
> > Oak Ridge National Laboratory     |Phone: +1 (865) 576 5606
> > http://www.csm.ornl.gov/~anish12/ |Fax:   +1 (865) 576 5491
> > -----------------------------------------------------------
> > 
> > -----Original Message-----
> > From: Igor Peshansky
> > Sent: Tuesday, April 03, 2007 9:41 PM
> > To: Shet, Aniruddha G.
> > Cc: x10-users<at>lists.sourceforge.net
> > Subject: Re: [X10-users] Array assignment & update/overlay
> > 
> > Shet, Aniruddha G. wrote on 04/03/2007 09:25:03 PM:
> > 
> > > Hi,
> > > 
> > > My understanding is that array assignment and update/overlay 
> > > operations are not designed to operate on arrays that do not having 
> > > matching distributions, even though they may have matching regions?
> > > 
> > > I am seeing that an activity that tries to update a local reference 
> > > type array with a subdistribution of a global array that is final 
> > > value type fails with BadPlaceException. The local array and the 
> > > subdistribution have identical regions. The locality rule is not 
> > > being
> > 
> > > violated here. Is the mismatch of distributions the reason for
> > failure?
> > 
> > Hi, Aniruddha,
> > 
> > This behavior sounds like a bug.  The way you described it, it 
> > certainly does not correspond to the X10 language definition.
> > 
> > It would help greatly in debugging this problem if you could reduce it
> 
> > to a simple (and preferably short) test case.  Feel free to post it to
> 
> > the list or enter it in Bugzilla.  It would also help if you could 
> > show the full stack trace of the BadPlaceException you're getting.
> >         Igor

-- 
Igor Peshansky  (note the spelling change!)
IBM T.J. Watson Research Center
XJ: No More Pain for XML's Gain (http://www.research.ibm.com/xj/)
X10: Parallel Productivity and Performance (http://x10.sf.net/)


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
X10-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/x10-users

Reply via email to