Yoav,
Would it be possible to get a more informative error message for this
case?
I find the compiler's error message confusing for two reasons:
1) the error message complains about "given matcher", but the
word "matcher" does not appear anywhere in the language spec, and so I
don't know what a "matcher" is exactly.
2) the error message lists a problem involving "ValRail", but
ValRail does not appear anywhere in the user's code.
SJF
------------------------------------------------------------------------
Stephen Fink
IBM T.J. Watson Research Center
[email protected]
(914)784-7776
From:
Yoav Zibin <[email protected]>
To:
Mailing list for users of the X10 programming language
<[email protected]>
Date:
07/19/2010 05:12 PM
Subject:
Re: [X10-users] Hopefully quick bug with array
Hi,
You need to specify the rank/dimension of a_prefix_sum here :
val a_prefix_sum = new Array[Int](a.region, (Point)=>0);
... a_prefix_sum([i-1]); ...
So you need to write that:
public static def computeSum(a:Array[Int]*(1)*)
On Mon, Jul 19, 2010 at 5:03 PM, Dave Hudak <[email protected]> wrote:
> Hi All,
>
> I hope I am doing something easy to correct. I am trying to move some
code
> to compute the prefix sum of an integer array into its own method. I'm
> using 2.0.4.
>
> I get the following error:
>
> dhu...@oscnet166 24%> x10c++ -x10rt mpi -o PrefixSum PrefixSum.x10
> /Users/dhudak/osc/research/x10/tutorial/examples/PrefixSum.x10:34:
Method
> or static constructor not found for given matcher.
> Matcher: a_prefix_sum(x10.lang.ValRail[x10.lang.Int
> ]{self.length==1})
> 1 error.
>
> ...which corresponds to the statement in the else clause of the
computeSum
> method
> > a_prefix_sum(p) = a(p) + a_prefix_sum([i-1]);
>
> Below is the entire code for reference.
>
> Thanks,
> Dave
>
> /*
> * PrefixSum
> * Sequential implementation
> * Dave Hudak
> * Ohio Supercomputer Center
> */
>
> public class PrefixSum {
> public static def str[T](a:Array[T]):String
> {
> var s : String = "";
> //var is mutable
> var first : Boolean = true;
> //var declaration must include type
> for (point in a) {
> if (first) {
> first = false;
> }
> else {
> s += ", ";
> }
> s += a(point).toString();
> //works because toString is global
> }
> return s;
> }
>
> public static def computeSum(a:Array[Int]):Array[Int]{self.region ==
> a.region}
> {
> val a_prefix_sum = new Array[Int](a.region, (Point)=>0);
> for (p in a_prefix_sum) {
> val (i) = p;
> if (i == 1) {
> a_prefix_sum(p) = a(p);
> }
> else {
> a_prefix_sum(p) = a(p) + a_prefix_sum([i-1]);
> }
> }
> return a_prefix_sum;
> }
>
> public static def main(args: Rail[String]!): Void {
> val ARRAY_SIZE = 10;
> //values are like constants (immutable)
> val r1 = [1..ARRAY_SIZE];
> //define a range
> val a1 = new Array[Int](r1, (Point)=>0);
> //create an array of all zeroes
> Console.OUT.println("a1(1) = " + a1([1]));
> //index arrays using parens around points
> for (p in a1) {
> val (i) = p;
> //fetch the subscript of the point
> a1(p) = i;
> //assign it to the array value
> }
> val a1_string = str(a1);
> Console.OUT.println(a1_string);
> val a1_prefix_sum = computeSum(a1);
> val a1_prefix_sum_string = str(a1_prefix_sum);
> Console.OUT.println(a1_prefix_sum_string);
> }
> }
> ---
> David E. Hudak, Ph.D. [email protected]
> Program Director, HPC Engineering
> Ohio Supercomputer Center
> http://www.osc.edu
>
>
>
>
>
>
>
>
>
>
>
>
------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> _______________________________________________
> X10-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/x10-users
>
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
X10-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/x10-users
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
X10-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/x10-users