On Wed, Aug 18, 2010 at 12:24 AM, Igor Peshansky <ig...@us.ibm.com> wrote: > Nilesh Mahajan <nnmah...@umail.iu.edu> wrote on 08/17/2010 09:33:47 PM: > >> Thanks for the response Igor! >> >> Well the compiler did not complain for >> val mat : Array[Int]([1..MAX, 1..MAX]->here, ((i, j):Point) => 0); >> >> I tried different versions of the array definition but could not get it > working. >> >> 1. I typed in your version: val mat = new Array[Int]([1..MAX, >> 1..MAX]->here, ((i, j):Point)=>0); >> It says the Array constructor cannot be invoked with given arguments. >> Looks like the Array constructor expects a region as its first >> argument. I encountered the same problem with the make method. > > Oops, of course, this should have been > > val mat = new Array[Int]([1..MAX, 1..MAX] as Region, > ((i, j):Point(2))=>0); >
I figured that I actually should have used Distarray.make to create my array with the said distribution. The language specification (http://dist.codehaus.org/x10/documentation/languagespec/x10-latest.pdf) passes the distribution as an argument to Array.make (section 16.4) which I think is misleading. >> 2. So I tried >> val mat = new Array[Int]([1..MAX, 1..MAX], ((i, j):Point)=>0); >> which works but then the for loop which iterates over this array >> throws an ArrayIndexOutOfBoundsException. > > Or your variant, of course, but you still need Point(2) in the > closure formal type, I think. Point(2) is not needed. > > Look at the actual text of the ArrayIndexOutOfBoundsException. > Try printing out all indices as you use them to index into the array. > I suspect that the first iteration fails, with the indices (0,0). > Note that your array is defined on a region that does not include > (0,0), but starts at (1,1). Ack. You are right. > >> I am using X10DT installed on Eclipse-Ganymede, 32-bit Windows Vista > platform. >> >> Eclipse-Galileo on 32-bit Linux complains when I try to install X10DT >> update there. > > Sorry you're having trouble. As far as I remember, X10DT should work > on Galileo on Linux/x86, but I'll let the X10DT team (most of whom read > this list) respond to this. It would help to see the exact complaint > that Eclipse gives you when you try to install X10DT. Sorry for being vague. I finally installed it successfully. When I try installing X10DT from http://dist.codehaus.org/x10/x10dt/2.0/updateSite/, it asks me to install 1. Parallel Tools Platform 2. X10DT 3. X10DT Prerequisites Parallel Tools Platform seems to have a dependency on CDT which has a dependency on MyLyn. So I installed all of them and now it works (of course it's too slow :) ). > Igor > P.S. You still didn't say what version of X10DT you're using. > >> On Tue, Aug 17, 2010 at 5:05 PM, Igor Peshansky <ig...@us.ibm.com> > wrote: >> > Nilesh Mahajan <nnmah...@umail.iu.edu> wrote on 08/17/2010 04:32:29 > PM: >> > >> >> Hi, >> >> >> >> I am trying to set elements of a 2D Int array and am facing some >> >> problems. Can somebody please help? >> >> >> >> Code snippet: >> >> >> >> const MAX 10000; >> >> const MAXPERROW 100; >> >> >> >> val mat : Array[Int]([1..MAX, 1..MAX]->here, ((i, j):Point) => 0); >> > >> > This is not syntactically valid X10. You must've said something like >> > >> > val mat: Array[Int] = new Array[Int]([1..MAX, 1..MAX]->here, ((i, >> > j):Point)=>0); >> > >> > instead. Also note that this code will probably not work in the later >> > versions of X10, as you now need to specify the parameter type of the >> > closure more precisely, i.e., "((i, j):Point(2))=>0". >> > >> >> for (var i:Int = 0; i < MAX; i++) { >> >> var numCols:Int = new Random().nextInt(MAXPERROW); >> >> for (var j:Int = 0; j < numCols; j++) { >> >> var ColIndex:Int = new Random().nextInt(MAX); >> >> mat.set(1, i, colIndex); >> >> } >> >> } >> >> >> >> >> >> the 'mat.set' line throws an error which says (among other things): >> >> Call Invalid; calling method does not entail the method guard. >> > >> > This means that the typechecker was not able to prove that the mat >> > array is 2-dimensional. That's why I suspect you have specified the >> > explicit type on the declaration of "val mat". Either change that > type >> > to Array(2), or omit the type altogether (i.e., write >> > >> > val mat = new Array[Int]([1..MAX, 1..MAX]->here, ((i, j):Point)=>0); >> > >> > ) and let the typechecker infer it for you. >> > >> >> P.S. Is there a way to search the user archives? >> > >> > There's Google, which lets you restrict the URLs of the pages you >> > search. Note that there are two sets of archives for the x10-users >> > list outside of Sourceforge that may work better with Google >> > searching, or even offer their own search capabilities: >> > >> > http://www.mail-archive.com/x10-users@lists.sourceforge.net/ >> > http://blog.gmane.org/gmane.comp.lang.x10.user or >> > http://news.gmane.org/gmane.comp.lang.x10.user >> > >> > Hope this helps, >> > Igor > -- > 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 > > > ------------------------------------------------------------------------------ > 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 > ------------------------------------------------------------------------------ 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