// costa -cp '~/Systems/costa-extra/Experiments' -c x10/ArraySum -m 'main([Ljava/lang/String;)V' -p x10_total interm_results = true // costa -cp '~/Systems/costa-extra/Experiments' -c x10/ArraySum -m 'main([Ljava/lang/String;)V' -p x10_peak interm_results = true package x10; public class ArraySum { int sum; int size; int[] data; int[] r; public ArraySum(int n) { size = n; for (int i=0; i<n; i++) { r[i] = i; data[i] = 1; } sum = 0; } public void sum(int numThreads) { int mySize = size/numThreads; Conc.finish_begin(); sum_1(data, mySize, numThreads); Conc.finish_end(); } public void sum_1(int data[], int mySize, int numThreads) { for (int p=0; p<numThreads; p++) { Conc.async_begin(); sum_2(data, p*mySize, (p+1)*mySize); Conc.async_end(); } } public void sum_2(int a[], int start, int last) { int mySum = 0; for (int i=start; i<last; i++) { mySum+=a[i]; } sum += mySum; } public static void main(String args[]) { int size = 5*1000*1000; ArraySum a = new ArraySum(size); for (int i=1; i<args.length; i*=2) { a.sum = 0; a.sum(i); } } }