On 31 Aug 2009, at 9:44 AM, Igor Peshansky wrote: > Jim LaGrone <jlagr...@cs.uh.edu> wrote on 08/31/2009 10:20:29 AM: > >> I spoke too soon. It compiled but didn't run. Still have the >> BadPlaceExeption. This is the code: >> >> //declared as Class members >> var regionS: Region{rank==2}; >> var distS: Dist{rank==2}; >> var S: Array[Complex](distS); >> >> //code from member method >> regionS = [0..N-1, 0..Mc-1]; >> distS = Dist.makeBlock(regionS,0); >> >> S = Array.make[Complex](distS, >> (val (i,j):Point) => new Complex ( real(i*Mc+j), image(i*Mc+j) ) > ); > > Jim, > > See my comments regarding fields vs. local variables, and static vs. > instance methods. If real() and image() are instance methods, they > will be invoked via "this", which lives in place 0. Also, if Mc is > an instance field, it will also live in place 0. The initializer > essentially runs in an ateach loop, so the same restrictions apply.
tmp_fs_real and tmp_fs_image are Rails[Double]. val real = tmp_fs_real; val image = tmp_fs_image; val Mc_tmp = Mc; //just made this change val N_tmp = N; // and this one regionS = [0..N_tmp-1, 0..Mc_tmp-1]; distS = Dist.makeBlock(regionS,0); S = Array.make[Complex](distS, (val (i,j):Point) => new Complex ( real(i*Mc_tmp+j), image (i*Mc_tmp+j) ) ); >> I'm still confused about the number of places. It shows 4 places >> printing NativeRuntime.MAX_PLACES on my dual core machine. I'll >> attach >> output from execution. >> >> Jim > > X10 will not automatically compute the optimal number of places -- > you have to tell it how many places to use. For the Java backend > the default is 4 places, regardless of the number of actual cores. > For the C++ backend it's however many processes you spawn (runx10 > will only spawn one). How do I change the number of places? This seems to execute with C++ backend. > > Hope this helps, > Igor > >> [attachment "exec.out" deleted by Igor Peshansky/Watson/IBM] >> >> On 28 Aug 2009, at 8:29 PM, Josh Milthorpe wrote: >> >>> If I correctly understand the intent, you're trying to initialize >>> each element of S : Array[Complex] based on some values in the real >>> and image rails. However I don't think that's what the above code >>> achieves. >>> >>> The outer loop iterates over all places included in distS. The >>> inner loop iterates over every point in the region of S. Because >>> distS is a block distribution over all places, this means that an >>> activity will be started at each place, and each activity will >>> attempt to assign to every element of S - including those elements >>> that reside at other places. I suspect that this is the cause of >>> the BPE. >>> >>> (As an aside, S is not distributed, because distS is not used in the >>> initializer. To make it distributed, use >>> distS = Dist.makeBlock(distS,0); >>> rather than >>> distS = Dist.makeBlock(regionS,0); >>> ) >>> You could initialize S in a single statement using an Array >>> initializer function, something like: >>> >>> S = Array.make[Complex](distS, (val (i,j): Point) => new Complex >>> (real(i*Mc+j), image(i*Mc+j))); >> >> This is what I was looking for but couldn't make it work. I don't >> know >> what I had before, but this works. Thanks! >> >>> >>> BTW is the use of "image" rather than "imaginary" an American vs. >>> British thing? I haven't heard this term used before. >> >> I'm porting a benchmark someone else wrote in C. I'm just using the >> same identifiers. Personally, I would have used "imag". >> >> Jim > -- > 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/) ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ X10-users mailing list X10-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/x10-users