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

Reply via email to