It worked! Thanks! Dave On Jul 19, 2010, at 5:11 PM, Yoav Zibin wrote: > 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 <dhu...@osc.edu> 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. dhu...@osc.edu >> 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 >> X10-users@lists.sourceforge.net >> 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 > X10-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/x10-users
--- David E. Hudak, Ph.D. dhu...@osc.edu 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 X10-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/x10-users