Hi, If i declare ATF_rm000 as global val "Final field "ATF_rm000" might not have been initialized" error is shown. In which case i would be back to square one.
Thanks, Sarat On Tue, Nov 24, 2009 at 5:00 PM, Igor Peshansky <ig...@us.ibm.com> wrote: > Hi, Sarat, > > X10 2.0 doesn't have value classes anymore. The pattern for what > you want to do is to make all fields global. The rest of the solution > is the same, however. > > So, you'd have something like > > class ATFInitMatrix { > global val ATF_dim:Array[Int](1) = Array.make[Int](0..2); > global val ATF_rm000:Array[Double](5); > > public def this(var px:int, var py:int, var pz:int) { > val dim5:Array[Int](1) = Array.make[Int](0..4); > > ATF_dim(0) = px; > ATF_dim(1) = py; > ATF_dim(2) = pz; > > /* Allocate dynamic arrays */ > dim5(0) = ATF_dim(0)+2; > dim5(1) = ATF_dim(1)+2; > dim5(2) = ATF_dim(2)+2; > dim5(3) = 1; > dim5(4) = 1; > > val R1 = [0..dim5(0), 0..dim5(1),0..dim5(2),0..dim5(3),0..dim5(4)]; > val D1 = Dist.makeBlock(R1, 0); > > ATF_rm000 = Array.make[Double](D1); > } > ... > } > > Hope this helps, > Igor > > sarat poluri <sarat.pol...@gmail.com> wrote on 11/24/2009 04:25:35 PM: > > > Hi Igor, > > > > I am using X10 2.0. So, how would the solution be different in this > case? > > > > Thanks, > > Sarat > > > > On Tue, Nov 10, 2009 at 1:58 PM, Igor Peshansky <ig...@us.ibm.com> > wrote: > > sarat poluri <sarat.pol...@gmail.com> wrote on 11/10/2009 02:03:23 PM: > > > > > Hi, > > > > > > How can i distribute a n-dimensional array as blocks across all places > > and > > > then initialize each element of that array? > > > > > > i have an array which is first declared as a 5-D array and then inside > a > > > function the array is initialized with the appropriate distribution > > taking > > > the bounds of the region from the parameters of that function. > > > > > > class ATFInitMatrix > > > { > > > var ATF_dim:Array[Int](1) = Array.make[Int](0..2); > > > > > > var ATF_rm000:Array[Double](5); > > > > > > public def ATF_Init_matrix(var px:int, var py:int, var pz:int):boolean > > > { > > > var dim5:Array[Int](1) = Array.make[Int](0..4); > > > > > > ATF_dim(0) = px; > > > ATF_dim(1) = py; > > > ATF_dim(2) = pz; > > > > > > /* Allocate dynamic arrays */ > > > dim5(0) = ATF_dim(0)+2; > > > dim5(1) = ATF_dim(1)+2; > > > dim5(2) = ATF_dim(2)+2; > > > dim5(3) = 1; > > > dim5(4) = 1; > > > > > > val R1 = [0..dim5(0), > 0..dim5(1),0..dim5(2),0..dim5(3),0..dim5(4)]; > > > val D1 = Dist.makeBlock(R1, 0); > > > > > > ATF_rm000 = Array.make[Double](D1); > > > } > > > > > > public def ATF_Reset():boolean > > > { > > > finish ateach(val p(i,j,k,l,n): Point(5) in ATF_rm000.dist) > > > { > > > ATF_rm000(p) = 0.0; > > > } > > > } > > > > > > The ATF_Reset function throws a badplaceexception. What are the > options > > > available to do this. should i declare the ATF_rm000 array as a val > > instead > > > of var, in which case how do i declare first and initialize later or > is > > > there another approach. > > > > > > Please advice. > > > Hi, Sarat, > > > > You are not getting a BadPlaceException because you're accessing the > wrong > > point in the distribution. You are getting it because you are trying to > > access the field ATF_rm000 from the current object, which lives in place > > 0. > > > > In the below, I'll assume you're using X10 1.7. If you are using X10 > 2.0, > > the solution will be different. > > > > I would make ATFInitMatrix a value class (thus ATF_rm000 becomes a val > > field that you have to initialize early). Then you can access all of > its > > fields at any place. > > 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/) > > ------------------------------------------------------------------------------ Join us December 9, 2009 for the Red Hat Virtual Experience, a free event focused on virtualization and cloud computing. Attend in-depth sessions from your desk. Your couch. Anywhere. http://p.sf.net/sfu/redhat-sfdev2dev _______________________________________________ X10-users mailing list X10-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/x10-users