From: adash Date: Mon, 12 Jan 2009 22:47:47 +0000 (+0000) Subject: add new files X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1fb3d6c20fe38330391303e2aa6a991bcb94b88e;p=IRC.git add new files --- diff --git a/Robust/src/Benchmarks/Prefetch/MatrixMultiply/javasingle/MatrixMultiplyN.java b/Robust/src/Benchmarks/Prefetch/MatrixMultiply/javasingle/MatrixMultiplyN.java new file mode 100644 index 00000000..e7a07bd7 --- /dev/null +++ b/Robust/src/Benchmarks/Prefetch/MatrixMultiply/javasingle/MatrixMultiplyN.java @@ -0,0 +1,151 @@ +public class MatrixMultiply { + MMul mmul; + public int x0, y0, x1, y1; + public MatrixMultiply(MMul mmul, int x0, int x1, int y0, int y1) { + this.mmul = mmul; + this.x0 = x0; + this.y0 = y0; + this.x1 = x1; + this.y1 = y1; + } + + public void run() { + double la[][]=mmul.a; + double lc[][]=mmul.c; + double lb[][]=mmul.btranspose; + int M=mmul.M; + + //Use btranspose for cache performance + for(int i = x0; i< x1; i++){ + double a[]=la[i]; + double c[]=lc[i]; + for (int j = y0; j < y1; j++) { + double innerProduct=0; + double b[] = lb[j]; + for(int k = 0; k < M; k++) { + innerProduct += a[k] *b[k]; + } + c[j]=innerProduct; + } + } + } + + public static void main(String[] args) { + int NUM_THREADS = 4; + int SIZE=600; + if (args.length>0) { + NUM_THREADS=Integer.parseInt(args[0]); + if (args.length>1) + SIZE=Integer.parseInt(args[1]); + } + + /* + int[] mid = new int[8]; + mid[0] = (128<<24)|(195<<16)|(175<<8)|84; //dw-10 + mid[1] = (128<<24)|(195<<16)|(175<<8)|85; //dw-11 + mid[2] = (128<<24)|(195<<16)|(175<<8)|86; //dw-12 + mid[3] = (128<<24)|(195<<16)|(175<<8)|87; //dw-13 + mid[4] = (128<<24)|(195<<16)|(175<<8)|88; //dw-14 + mid[5] = (128<<24)|(195<<16)|(175<<8)|89; //dw-15 + mid[6] = (128<<24)|(195<<16)|(175<<8)|90; //dw-16 + mid[7] = (128<<24)|(195<<16)|(175<<8)|91; //dw-17 + */ + int p, q, r; + MatrixMultiply[] mm; + MatrixMultiply tmp; + MMul matrix; + + matrix = new MMul(SIZE, SIZE, SIZE); + matrix.setValues(); + matrix.transpose(); + mm = new MatrixMultiply[NUM_THREADS]; + int increment=SIZE/NUM_THREADS; + int base=0; + for(int i=0;i0) { + NUM_THREADS=Integer.parseInt(args[0]); + if (args.length>1) { + SIZE=Integer.parseInt(args[1]); + if (args.length>2) + NUM_MATRIX=Integer.parseInt(args[2]); + } + } + + int p, q, r; + MatrixMultiply[] mm; + MatrixMultiply tmp; + MMul matrix; + + matrix = new MMul(NUM_MATRIX, SIZE, SIZE, SIZE); + matrix.setValues(); + matrix.transpose(); + mm = new MatrixMultiply[NUM_THREADS]; + int increment=SIZE/NUM_THREADS; + int base=0; + for(int i=0;i