package org.shanbo.feluca.model; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.shanbo.feluca.model.FloatObjects.OneDegree; import org.shanbo.feluca.model.FloatObjects.TwoDegree; public class TestFloatReducer2 { public static class LocalReduceClient2 extends FloatSumBarrier<TwoDegree>{ FloatReducerImpl worker ; int shardId ; public LocalReduceClient2(int capacity, int shardId, int factor, FloatReducerImpl worker) { super(capacity, new TwoDegree(factor)); this.worker = worker; this.shardId = shardId; } @Override public void call() { float[][] reduce = worker.reduce("sum", window.zip(), shardId); window.unzipAndSet(reduce); } public String toString(){ return window.toString(); } } public static void main(String[] args) { FloatReducerImpl reducerImpl = new FloatReducerImpl(3); final LocalReduceClient2 l1 = new LocalReduceClient2(5, 0, 3, reducerImpl); final LocalReduceClient2 l2 = new LocalReduceClient2(5, 1, 3, reducerImpl); final LocalReduceClient2 l3 = new LocalReduceClient2(5, 2, 3, reducerImpl); l1.get(0).setOne(1).setSigmaX(0, 2).setSigmaX(1, 11).setSigmaX2(2, 0.5f); l1.get(3).setOne(1).setSigmaX(0, 1).setSigmaX(1, 11).setSigmaX2(2, 0.5f).setSigmaX2(0, 1); l2.get(0).setOne(2).setSigmaX(0, 2).setSigmaX(1, 11).setSigmaX2(2, 0.5f); l2.get(1).setOne(1).setSigmaX(0, 2).setSigmaX(1, 11).setSigmaX2(2, 0.5f); l2.get(3).setOne(1).setSigmaX(0, 1).setSigmaX(1, 11).setSigmaX2(2, 0.5f).setSigmaX2(0, 1); l3.get(4).setOne(11).setSigmaX(0, 12).setSigmaX(1, 11).setSigmaX2(2, 0.5f); l3.get(3).setOne(2).setSigmaX(0, 14).setSigmaX(1, 11).setSigmaX2(2, 0.5f).setSigmaX2(1, 11); System.out.println(l1.toString()); System.out.println(l2.toString()); System.out.println(l3.toString()); System.out.println("========"); ExecutorService executor = Executors.newCachedThreadPool(); executor.submit(new Runnable() { public void run() { l1.call(); } }); executor.submit(new Runnable() { public void run() { l2.call(); } }); l3.call(); System.out.println(l1.window.zippedFormat()); System.out.println(l2.window.zippedFormat()); System.out.println(l3.window.zippedFormat()); executor.shutdown(); } }