Thanks Josh! That was helpful. -- Nilesh.
On Sun, Sep 19, 2010 at 1:29 AM, Josh Milthorpe <josh.miltho...@anu.edu.au> wrote: > Hi Nilesh, > > browsing the list archive, I noticed nobody had yet answered this one - > sorry for the silence! > > The Array classes have been in a state of flux over recent months, with > significant performance improvements and changes to the distributed > object model for X10 2.1. Unfortunately, while this work has been > occurring, some of the nice Region operations (union, intersection, > complement) have been disabled. This means that it is currently more > complicated to express the sort of Region manipulation you are describing. > > Once Region.union(...) has been restored, you might express the > combination of two rectangular subregions of a matrix as: > > val rowOne = Region.make([i1..i1, 0..N-1]); > val rowTwo = Region.make([i2..i2, 0..N-1]); > val combined = rowOne || rowTwo; > > Note that in the above, the rows are still 2-D regions, in which the > first dimension is of size 1. This is necessary to allow them to be > combined in a 2-D union. > > For now, the subregions must be treated separately, 'pasting' them > together using Point translations. The example below is a function to > eliminate a selected row from a matrix, as might be done in calculating > e.g. the Laplace expansion. > > def eliminateRow(source : DistArray[Double](2), row : Int) { > val resultRegion = [source.region.min(0)..source.region.max(0)-1, > source.region.min(1)..source.region.max(1)]; > val result = DistArray.make[Double](source.dist | resultRegion); > val rowsAbove = Region.make([source.region.min(0)..row-1, > source.region.min(1)..source.region.max(1)]); > val rowsBelow = Region.make([row+1..source.region.max(0), > source.region.min(1)..source.region.max(1)]); > finish ateach (p in result | rowsAbove) { > result(p) = source(p); > } > // remaining rows must be shifted up by one > val shift = Point.make(1, 0); > finish ateach (p in result | (rowsBelow-shift)) { > result(p) = at (source.dist(p+shift)) {source(p+shift)}; > } > return result; > } > > Note that this could be simplified given certain assumptions about the > distribution - for example, if the matrix were block distributed in > dimension 1 (_not_ in dimension 0), the 'at (source.dist(p+shift))' > would not be required. If the entire matrix were stored as an Array at > a single place, data could be efficiently copied in bulk using > Array.copy(...). > > I hope some of this is useful. > > Cheers, > > Josh > > > Nilesh Mahajan wrote: >> Hi, >> >> I was wondering if there is a way to combine two or more 1-dimensional >> distributions to form a 2-D distribution. For example, I would like to >> select arbitrary rows from a matrix and form a sub-matrix out of it. >> The rows can be non-contiguous and I don't know them statically. >> >> Thanks, >> Nilesh. >> >> ------------------------------------------------------------------------------ >> This SF.net email is sponsored by >> >> Make an app they can't live without >> Enter the BlackBerry Developer Challenge >> http://p.sf.net/sfu/RIM-dev2dev >> _______________________________________________ >> X10-users mailing list >> X10-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/x10-users >> > > > ------------------------------------------------------------------------------ > Start uncovering the many advantages of virtual appliances > and start using them to simplify application deployment and > accelerate your shift to cloud computing. > http://p.sf.net/sfu/novell-sfdev2dev > _______________________________________________ > X10-users mailing list > X10-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/x10-users > ------------------------------------------------------------------------------ Nokia and AT&T present the 2010 Calling All Innovators-North America contest Create new apps & games for the Nokia N8 for consumers in U.S. and Canada $10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store http://p.sf.net/sfu/nokia-dev2dev _______________________________________________ X10-users mailing list X10-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/x10-users