This was very helpful, thank you.

Now, is it possible to find out the *place *of distributed element
data_squares(i) ?
(I found "apply" abstract method in documentation, but was not sure what to
make out of it).

How would I go about accessing for example data_squares(3) without iterating
through the entire array.

Also, don't ask me why, but can I distribute the same array (e.g. 4 element)
to two different set of places (0-4 and 4-8)?

Haris



Also,

On Mon, Mar 29, 2010 at 10:07 PM, Igor Peshansky <ig...@us.ibm.com> wrote:

> You would have been 'already there' through iteration if you had used
> an "ateach" loop:
>
> public static def main(args:Rail[String]!){
>   val R = 1..4; // The inferred type here is Region(1){rect}
>   val D = Dist.makeCyclic(R); // The inferred type here is
> Dist{region==R)
>
>   val data_squares = Array.make[Int](D, ((i):Point(1)) => i*i);
>
>    ateach (val p in D) { // The inferred type here is Point(1)
>       Console.OUT.println( "Array index: " + p + " distributed place :" +
> D(p));
>       // Note that, due to the ateach loop, D(p)==here,
>      // so now you're 'already there'
>       Console.OUT.println( "Array element: " + data_squares(p));
>   }
> }
>
> Hope this helps.
>        Igor
>
> Haris H <hha...@gmail.com> wrote on 03/29/2010 09:01:27 PM:
>
> > Thank you very much guys,
> > I had this idea that "at" is not needed since I am 'already there'
> through
> > iteration.
> >
> > I may come back for more stuff later but this definitely clears much of
> my
> > confusion.
> >
> > Thank you again.
> >
> > Haris
> >
> >
> >
> >
> >
> > On Sun, Mar 28, 2010 at 9:00 PM, Igor Peshansky <ig...@us.ibm.com>
> wrote:
> >
> > > This is a typical X10 beginner mistake: you specify types that
> > > are too imprecise.  You cannot index into an Array with a Point
> > > unless it can be statically proven that the rank of that Point
> > > is exactly equal to the rank of the Array's region.
> > >
> > > The best rule of thumb is to let X10 infer the types for you.
> > > Barring that, you should look carefully at the methods you call
> > > to ensure that the rank is propagated correctly.  Incidentally,
> > > to get efficient iteration, you'd want to propagate other
> > > pr0operties of the Array's region (e.g., the fact that it's
> > > rectangular).
> > >
> > > Another problem is that array elements have to be accessed in
> > > the place where they live (as specified by the distribution).
> > > This is not something that can be checked statically, but you
> > > will get a runtime exception if this rule is violated.
> > >
> > > So, you should rewrite your code as follows:
> > >
> > > public static def main(args:Rail[String]!){
> > >    val R = 1..4; // The inferred type here is Region(1){rect}
> > >   val D = Dist.makeCyclic(R); // The inferred type here is
> > > Dist{region==R)
> > >
> > >   val data_squares = Array.make[Int](D, ((i):Point(1)) => i*i);
> > >
> > >   for (val p in D) { // The inferred type here is Point(1)
> > >       Console.OUT.println( "Array index: " + p + " distributed place
> :" +
> > > D(p));
> > >
> > >      // this is the problem part, but this is how I understood arrays
> > >
> > >       Console.OUT.println( "Array element: " + at (D(p))
> data_squares(p));
> > >
> > >      // how can I access e.g. data_squares(3) and its value and place.
> > >      // using 2.0 java back end on eclipse
> > >   }
> > > }
> > >
> > > Vijay already covered most of these points, but one that I wanted
> > > to bring up is that, unless you know exactly what the type is,
> > > better let the type system infer the most precise type.  In
> > > particular, if you'd left the type of D as just Dist, the iteration
> > > would have been woefully inefficient (which would have hurt your
> > > peformance for larger arrays).
> > >
> > > As Vijay said, we are working on relaxing that requirement.
> > >        Igor
> > >
> > > Haris H <hha...@gmail.com> wrote on 03/28/2010 03:57:47 PM:
> > >
> > > > Hi guys,
> > > > can somebody clear this up for me please.
> > > > I can not get my head around this element manipulation in
> distributed
> > > arrays
> > > > in 2.0.
> > > >
> > > > Here is the overly simplified code but represents my problem,
> > > > so please tell me what am I doing wrong and what it should be.
> > > >
> > > > I am having trouble understanding accessing elements of the array
> and
> > > their
> > > > distributed location.
> > > >
> > > > Thank you.
> > > >
> > > > public static def main(args:Rail[String]!){
> > > >
> > > >    R: Region = 1..4;
> > > >    D: Dist = Dist.makeCyclic(R);
> > > >
> > > >    val data_squares = Array.make[Int](D, ((i):Point) => i*i);
> > > >
> > > >    for (val p: Point in D) {
> > > >        Console.OUT.println( "Array index: " + p + " distributed
> place :"
> > > +
> > > > D(p));
> > > >
> > > >       // this is the problem part, but this is how I understood
> arrays
> > > >
> > > >       Console.OUT.println( "Array element: " + data_squares(p));
> > > >
> > > >      // how can I access e.g. data_squares(3) and its value and
> place.
> > > >      // using 2.0 java back end on eclipse
> > > >   }
> > > > }
> --
> Igor Peshansky  (note the spelling change!)
> IBM T.J. Watson Research Center
> X10: Parallel Productivity and Performance (http://x10-lang.org/)
> XJ: No More Pain for XML's Gain (http://www.research.ibm.com/xj/)
> "I hear and I forget.  I see and I remember.  I do and I understand" --
> Confucius
>
>
>
> ------------------------------------------------------------------------------
> Download Intel&#174; Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> _______________________________________________
> X10-users mailing list
> X10-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/x10-users
>
------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
X10-users mailing list
X10-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/x10-users

Reply via email to