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® 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® 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