From: adash Date: Tue, 15 Dec 2009 20:14:37 +0000 (+0000) Subject: changes to 2DConv - ecoop submission X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=432084ed4399a7847c8b7f19883a7c0493df8b9d;p=IRC.git changes to 2DConv - ecoop submission --- diff --git a/Robust/src/Benchmarks/Prefetch/2DConv/dsm/ConvolutionRect.java b/Robust/src/Benchmarks/Prefetch/2DConv/dsm/ConvolutionRect.java index 17a144bc..7b582888 100644 --- a/Robust/src/Benchmarks/Prefetch/2DConv/dsm/ConvolutionRect.java +++ b/Robust/src/Benchmarks/Prefetch/2DConv/dsm/ConvolutionRect.java @@ -1,6 +1,7 @@ public class Convolution extends Thread { Image img; int x0,x1,y0,y1; + public Convolution(Image img, int x0, int x1, int y0, int y1) { this.img = img; @@ -11,11 +12,17 @@ public class Convolution extends Thread { } public void run() { - int kernelHeight=15; - int kernelWidth=15; - - double[][] kernel = new double[kernelHeight][kernelWidth]; - initKernel15(kernel); + int kernelHeight=14; + int kernelWidth=kernelHeight; + + float[][] kernel = new float[kernelHeight][kernelWidth]; + /** + * Note :Used in ECOOP.DSM.2010 results + **/ + initKernel14(kernel); + //initKernel15(kernel); + //initKernel13(kernel); + //initKernel12(kernel); atomic { int myx0=x0; @@ -23,54 +30,116 @@ public class Convolution extends Thread { int myx1=x1; int myy1=y1; - double tempinput[][] = img.inputImage; - double tempout[][] = img.outputImage; - - double tinput1[] = tempinput[myx0+0]; - double tinput2[] = tempinput[myx0+1]; - double tinput3[] = tempinput[myx0+2]; - double tinput4[] = tempinput[myx0+3]; - double tinput5[] = tempinput[myx0+4]; - double tinput6[] = tempinput[myx0+5]; - double tinput7[] = tempinput[myx0+6]; - double tinput8[] = tempinput[myx0+7]; - double tinput9[] = tempinput[myx0+8]; - double tinput10[] = tempinput[myx0+9]; - double tinput11[] = tempinput[myx0+10]; - double tinput12[] = tempinput[myx0+11]; - double tinput13[] = tempinput[myx0+12]; - double tinput14[] = tempinput[myx0+13]; - double tinput0[] = tinput1; - - int l=myx0+14; - for(int i=myx0;i0) { NUM_THREADS = Integer.parseInt(args[0]); @@ -82,14 +151,14 @@ public class Convolution extends Thread { } int[] mid = new int[8]; - mid[0] = (128<<24)|(195<<16)|(136<<8)|162; //dw-10 - mid[1] = (128<<24)|(195<<16)|(136<<8)|163; //dw-11 - mid[2] = (128<<24)|(195<<16)|(136<<8)|164; //dw-12 - mid[3] = (128<<24)|(195<<16)|(136<<8)|165; //dw-13 - mid[4] = (128<<24)|(195<<16)|(136<<8)|166; //dw-14 - mid[5] = (128<<24)|(195<<16)|(136<<8)|167; //dw-15 - mid[6] = (128<<24)|(195<<16)|(136<<8)|168; //dw-16 - mid[7] = (128<<24)|(195<<16)|(136<<8)|169; //dw-17 + mid[0] = (128<<24)|(195<<16)|(136<<8)|162; //dc-1 + mid[1] = (128<<24)|(195<<16)|(136<<8)|163; //dc-2 + mid[2] = (128<<24)|(195<<16)|(136<<8)|164; //dc-3 + mid[3] = (128<<24)|(195<<16)|(136<<8)|165; //dc-4 + mid[4] = (128<<24)|(195<<16)|(136<<8)|166; //dc-5 + mid[5] = (128<<24)|(195<<16)|(136<<8)|167; //dc-6 + mid[6] = (128<<24)|(195<<16)|(136<<8)|168; //dc-7 + mid[7] = (128<<24)|(195<<16)|(136<<8)|169; //dc-8 Image img; Convolution[] conv; @@ -146,277 +215,773 @@ public class Convolution extends Thread { */ } + //define 12X12 Gaussian kernel + public static void initKernel12(float[][] kernel) { + kernel[0][0] = 1/256.0f; + kernel[0][1] = 4/256.f; + kernel[0][2] = 6/256.f; + kernel[0][3] = 8/256.f; + kernel[0][4] = 10/256.f; + kernel[0][5] = 12/256.f; + kernel[0][6] = 12/256.f; + kernel[0][7] = 10/256.f; + kernel[0][8] = 8/256.0f; + kernel[0][9] = 6/256.0f; + kernel[0][10] = 4/256.0f; + kernel[0][11] = 1/256.0f; + + kernel[1][0] = 4/256.0f; + kernel[1][1] = 16/256.0f; + kernel[1][2] = 24/256.0f; + kernel[1][3] = 32/256.0f; + kernel[1][4] = 40/256.0f; + kernel[1][5] = 48/256.0f; + kernel[1][6] = 48/256.0f; + kernel[1][7] = 40/256.0f; + kernel[1][8] = 32/256.0f; + kernel[1][9] = 24/256.0f; + kernel[1][10] = 16/256.0f; + kernel[1][11] = 4/256.0f; + + kernel[2][0] = 6/256.0f; + kernel[2][1] = 24/256.0f; + kernel[2][2] = 36/256.0f; + kernel[2][3] = 48/256.0f; + kernel[2][4] = 60/256.0f; + kernel[2][5] = 72/256.0f; + kernel[2][6] = 84/256.0f; + kernel[2][7] = 96/256.0f; + kernel[2][8] = 84/256.0f; + kernel[2][9] = 72/256.0f; + kernel[2][10] = 60/256.0f; + kernel[2][11] = 48/256.0f; + + kernel[3][0] = 8/256.0f; + kernel[3][1] = 32/256.0f; + kernel[3][2] = 48/256.0f; + kernel[3][3] = 64/256.0f; + kernel[3][4] = 80/256.0f; + kernel[3][5] = 96/256.0f; + kernel[3][6] = 112/256.0f; + kernel[3][7] = 128/256.0f; + kernel[3][8] = 112/256.0f; + kernel[3][9] = 96/256.0f; + kernel[3][10] = 80/256.0f; + kernel[3][11] = 64/256.0f; + + + kernel[4][0] = 10/256.0f; + kernel[4][1] = 40/256.0f; + kernel[4][2] = 60/256.0f; + kernel[4][3] = 80/256.0f; + kernel[4][4] = 100/256.0f; + kernel[4][5] = 120/256.0f; + kernel[4][6] = 140/256.0f; + kernel[4][7] = 160/256.0f; + kernel[4][8] = 140/256.0f; + kernel[4][9] = 120/256.0f; + kernel[4][10] = 100/256.0f; + kernel[4][11] = 80/256.0f; + + kernel[5][0] = 12/256.0f; + kernel[5][1] = 48/256.0f; + kernel[5][2] = 72/256.0f; + kernel[5][3] = 96/256.0f; + kernel[5][4] = 120/256.0f; + kernel[5][5] = 144/256.0f; + kernel[5][6] = 168/256.0f; + kernel[5][7] = 192/256.0f; + kernel[5][8] = 168/256.0f; + kernel[5][9] = 144/256.0f; + kernel[5][10] = 120/256.0f; + kernel[5][11] = 96/256.0f; + + kernel[6][0] = 14/256.0f; + kernel[6][1] = 56/256.0f; + kernel[6][2] = 84/256.0f; + kernel[6][3] = 112/256.0f; + kernel[6][4] = 140/256.0f; + kernel[6][5] = 168/256.0f; + kernel[6][6] = 196/256.0f; + kernel[6][7] = 224/256.0f; + kernel[6][8] = 196/256.0f; + kernel[6][9] = 168/256.0f; + kernel[6][10] = 140/256.0f; + kernel[6][11] = 112/256.0f; + + kernel[7][0] = 16/256.0f; + kernel[7][1] = 64/256.0f; + kernel[7][2] = 96/256.0f; + kernel[7][3] = 128/256.0f; + kernel[7][4] = 160/256.0f; + kernel[7][5] = 192/256.0f; + kernel[7][6] = 224/256.0f; + kernel[7][7] = 256/256.0f; + kernel[7][8] = 224/256.0f; + kernel[7][9] = 192/256.0f; + kernel[7][10] = 160/256.0f; + kernel[7][11] = 128/256.0f; + + kernel[8][0] = 14/256.0f; + kernel[8][1] = 56/256.0f; + kernel[8][2] = 84/256.0f; + kernel[8][3] = 112/256.0f; + kernel[8][4] = 140/256.0f; + kernel[8][5] = 168/256.0f; + kernel[8][6] = 196/256.0f; + kernel[8][7] = 224/256.0f; + kernel[8][8] = 196/256.0f; + kernel[8][9] = 168/256.0f; + kernel[8][10] = 140/256.0f; + kernel[8][11] = 112/256.0f; + + kernel[9][0] = 12/256.0f; + kernel[9][1] = 48/256.0f; + kernel[9][2] = 72/256.0f; + kernel[9][3] = 96/256.0f; + kernel[9][4] = 120/256.0f; + kernel[9][5] = 144/256.0f; + kernel[9][6] = 168/256.0f; + kernel[9][7] = 192/256.0f; + kernel[9][8] = 168/256.0f; + kernel[9][9] = 144/256.0f; + kernel[9][10] = 120/256.0f; + kernel[9][11] = 96/256.0f; + + kernel[10][0] = 10/256.0f; + kernel[10][1] = 40/256.0f; + kernel[10][2] = 60/256.0f; + kernel[10][3] = 80/256.0f; + kernel[10][4] = 100/256.0f; + kernel[10][5] = 120/256.0f; + kernel[10][6] = 140/256.0f; + kernel[10][7] = 160/256.0f; + kernel[10][8] = 140/256.0f; + kernel[10][9] = 120/256.0f; + kernel[10][10] = 100/256.0f; + kernel[10][11] = 80/256.0f; + + kernel[11][0] = 8/256.0f; + kernel[11][1] = 32/256.0f; + kernel[11][2] = 48/256.0f; + kernel[11][3] = 64/256.0f; + kernel[11][4] = 80/256.0f; + kernel[11][5] = 96/256.0f; + kernel[11][6] = 112/256.0f; + kernel[11][7] = 128/256.0f; + kernel[11][8] = 112/256.0f; + kernel[11][9] = 96/256.0f; + kernel[11][10] = 80/256.0f; + kernel[11][11] = 64/256.0f; + } + + //define 13X13 Gaussian kernel + public static void initKernel13(float[][] kernel) { + kernel[0][0] = 1/256.0f; + kernel[0][1] = 4/256.f; + kernel[0][2] = 6/256.f; + kernel[0][3] = 8/256.f; + kernel[0][4] = 10/256.f; + kernel[0][5] = 12/256.f; + kernel[0][6] = 14/256.f; + kernel[0][7] = 12/256.f; + kernel[0][8] = 10/256.0f; + kernel[0][9] = 8/256.0f; + kernel[0][10] = 6/256.0f; + kernel[0][11] = 4/256.0f; + kernel[0][12] = 1/256.0f; + + kernel[1][0] = 4/256.0f; + kernel[1][1] = 16/256.0f; + kernel[1][2] = 24/256.0f; + kernel[1][3] = 32/256.0f; + kernel[1][4] = 40/256.0f; + kernel[1][5] = 48/256.0f; + kernel[1][6] = 56/256.0f; + kernel[1][7] = 48/256.0f; + kernel[1][8] = 40/256.0f; + kernel[1][9] = 32/256.0f; + kernel[1][10] = 24/256.0f; + kernel[1][11] = 16/256.0f; + kernel[1][12] = 4/256.0f; + + kernel[2][0] = 6/256.0f; + kernel[2][1] = 24/256.0f; + kernel[2][2] = 36/256.0f; + kernel[2][3] = 48/256.0f; + kernel[2][4] = 60/256.0f; + kernel[2][5] = 72/256.0f; + kernel[2][6] = 84/256.0f; + kernel[2][7] = 72/256.0f; + kernel[2][8] = 60/256.0f; + kernel[2][9] = 48/256.0f; + kernel[2][10] = 36/256.0f; + kernel[2][11] = 24/256.0f; + kernel[2][12] = 6/256.0f; + + kernel[3][0] = 8/256.0f; + kernel[3][1] = 32/256.0f; + kernel[3][2] = 48/256.0f; + kernel[3][3] = 64/256.0f; + kernel[3][4] = 80/256.0f; + kernel[3][5] = 96/256.0f; + kernel[3][6] = 112/256.0f; + kernel[3][7] = 96/256.0f; + kernel[3][8] = 80/256.0f; + kernel[3][9] = 64/256.0f; + kernel[3][10] = 48/256.0f; + kernel[3][11] = 32/256.0f; + kernel[3][12] = 8/256.0f; + + kernel[4][0] = 10/256.0f; + kernel[4][1] = 40/256.0f; + kernel[4][2] = 60/256.0f; + kernel[4][3] = 80/256.0f; + kernel[4][4] = 100/256.0f; + kernel[4][5] = 120/256.0f; + kernel[4][6] = 140/256.0f; + kernel[4][7] = 120/256.0f; + kernel[4][8] = 100/256.0f; + kernel[4][9] = 80/256.0f; + kernel[4][10] = 60/256.0f; + kernel[4][11] = 40/256.0f; + kernel[4][12] = 10/256.0f; + + kernel[5][0] = 12/256.0f; + kernel[5][1] = 48/256.0f; + kernel[5][2] = 72/256.0f; + kernel[5][3] = 96/256.0f; + kernel[5][4] = 120/256.0f; + kernel[5][5] = 144/256.0f; + kernel[5][6] = 168/256.0f; + kernel[5][7] = 144/256.0f; + kernel[5][8] = 120/256.0f; + kernel[5][9] = 96/256.0f; + kernel[5][10] = 72/256.0f; + kernel[5][11] = 48/256.0f; + kernel[5][12] = 12/256.0f; + + kernel[6][0] = 14/256.0f; + kernel[6][1] = 56/256.0f; + kernel[6][2] = 84/256.0f; + kernel[6][3] = 112/256.0f; + kernel[6][4] = 140/256.0f; + kernel[6][5] = 168/256.0f; + kernel[6][6] = 196/256.0f; + kernel[6][7] = 168/256.0f; + kernel[6][8] = 140/256.0f; + kernel[6][9] = 112/256.0f; + kernel[6][10] = 84/256.0f; + kernel[6][11] = 56/256.0f; + kernel[6][12] = 14/256.0f; + + kernel[7][0] = 12/256.0f; + kernel[7][1] = 48/256.0f; + kernel[7][2] = 72/256.0f; + kernel[7][3] = 96/256.0f; + kernel[7][4] = 120/256.0f; + kernel[7][5] = 144/256.0f; + kernel[7][6] = 168/256.0f; + kernel[7][7] = 144/256.0f; + kernel[7][8] = 120/256.0f; + kernel[7][9] = 96/256.0f; + kernel[7][10] = 72/256.0f; + kernel[7][11] = 48/256.0f; + kernel[7][12] = 12/256.0f; + + kernel[8][0] = 10/256.0f; + kernel[8][1] = 40/256.0f; + kernel[8][2] = 60/256.0f; + kernel[8][3] = 80/256.0f; + kernel[8][4] = 100/256.0f; + kernel[8][5] = 120/256.0f; + kernel[8][6] = 140/256.0f; + kernel[8][7] = 120/256.0f; + kernel[8][8] = 100/256.0f; + kernel[8][9] = 80/256.0f; + kernel[8][10] = 60/256.0f; + kernel[8][11] = 40/256.0f; + kernel[8][12] = 10/256.0f; + + kernel[9][0] = 8/256.0f; + kernel[9][1] = 32/256.0f; + kernel[9][2] = 48/256.0f; + kernel[9][3] = 64/256.0f; + kernel[9][4] = 80/256.0f; + kernel[9][5] = 96/256.0f; + kernel[9][6] = 112/256.0f; + kernel[9][7] = 96/256.0f; + kernel[9][8] = 80/256.0f; + kernel[9][9] = 64/256.0f; + kernel[9][10] = 48/256.0f; + kernel[9][11] = 32/256.0f; + kernel[9][12] = 8/256.0f; + + kernel[10][0] = 6/256.0f; + kernel[10][1] = 24/256.0f; + kernel[10][2] = 36/256.0f; + kernel[10][3] = 48/256.0f; + kernel[10][4] = 60/256.0f; + kernel[10][5] = 72/256.0f; + kernel[10][6] = 84/256.0f; + kernel[10][7] = 72/256.0f; + kernel[10][8] = 60/256.0f; + kernel[10][9] = 48/256.0f; + kernel[10][10] = 36/256.0f; + kernel[10][11] = 24/256.0f; + kernel[10][12] = 6/256.0f; + + kernel[11][0] = 4/256.0f; + kernel[11][1] = 16/256.0f; + kernel[11][2] = 24/256.0f; + kernel[11][3] = 32/256.0f; + kernel[11][4] = 40/256.0f; + kernel[11][5] = 48/256.0f; + kernel[11][6] = 56/256.0f; + kernel[11][7] = 48/256.0f; + kernel[11][8] = 40/256.0f; + kernel[11][9] = 32/256.0f; + kernel[11][10] = 24/256.0f; + kernel[11][11] = 16/256.0f; + kernel[11][12] = 4/256.0f; + + kernel[12][0] = 1/256.0f; + kernel[12][1] = 4/256.f; + kernel[12][2] = 6/256.f; + kernel[12][3] = 8/256.f; + kernel[12][4] = 10/256.f; + kernel[12][5] = 12/256.f; + kernel[12][6] = 14/256.f; + kernel[12][7] = 12/256.f; + kernel[12][8] = 10/256.0f; + kernel[12][9] = 8/256.0f; + kernel[12][10] = 6/256.0f; + kernel[12][11] = 4/256.0f; + kernel[12][12] = 1/256.0f; + } + + //define 14X14 Gaussian kernel + public static void initKernel14(float[][] kernel) { + kernel[0][0] = 1/256.0f; + kernel[0][1] = 4/256.f; + kernel[0][2] = 6/256.f; + kernel[0][3] = 8/256.f; + kernel[0][4] = 10/256.f; + kernel[0][5] = 12/256.f; + kernel[0][6] = 14/256.f; + kernel[0][7] = 16/256.f; + kernel[0][8] = 14/256.0f; + kernel[0][9] = 12/256.0f; + kernel[0][10] = 10/256.0f; + kernel[0][11] = 8/256.0f; + kernel[0][12] = 6/256.0f; + kernel[0][13] = 4/256.0f; + + kernel[1][0] = 4/256.0f; + kernel[1][1] = 16/256.0f; + kernel[1][2] = 24/256.0f; + kernel[1][3] = 32/256.0f; + kernel[1][4] = 40/256.0f; + kernel[1][5] = 48/256.0f; + kernel[1][6] = 56/256.0f; + kernel[1][7] = 64/256.0f; + kernel[1][8] = 56/256.0f; + kernel[1][9] = 48/256.0f; + kernel[1][10] = 40/256.0f; + kernel[1][11] = 32/256.0f; + kernel[1][12] = 24/256.0f; + kernel[1][13] = 16/256.0f; + + kernel[2][0] = 6/256.0f; + kernel[2][1] = 24/256.0f; + kernel[2][2] = 36/256.0f; + kernel[2][3] = 48/256.0f; + kernel[2][4] = 60/256.0f; + kernel[2][5] = 72/256.0f; + kernel[2][6] = 84/256.0f; + kernel[2][7] = 96/256.0f; + kernel[2][8] = 84/256.0f; + kernel[2][9] = 72/256.0f; + kernel[2][10] = 60/256.0f; + kernel[2][11] = 48/256.0f; + kernel[2][12] = 36/256.0f; + kernel[2][13] = 24/256.0f; + + kernel[3][0] = 8/256.0f; + kernel[3][1] = 32/256.0f; + kernel[3][2] = 48/256.0f; + kernel[3][3] = 64/256.0f; + kernel[3][4] = 80/256.0f; + kernel[3][5] = 96/256.0f; + kernel[3][6] = 112/256.0f; + kernel[3][7] = 128/256.0f; + kernel[3][8] = 112/256.0f; + kernel[3][9] = 96/256.0f; + kernel[3][10] = 80/256.0f; + kernel[3][11] = 64/256.0f; + kernel[3][12] = 48/256.0f; + kernel[3][13] = 32/256.0f; + + kernel[4][0] = 10/256.0f; + kernel[4][1] = 40/256.0f; + kernel[4][2] = 60/256.0f; + kernel[4][3] = 80/256.0f; + kernel[4][4] = 100/256.0f; + kernel[4][5] = 120/256.0f; + kernel[4][6] = 140/256.0f; + kernel[4][7] = 160/256.0f; + kernel[4][8] = 140/256.0f; + kernel[4][9] = 120/256.0f; + kernel[4][10] = 100/256.0f; + kernel[4][11] = 80/256.0f; + kernel[4][12] = 60/256.0f; + kernel[4][13] = 40/256.0f; + + kernel[5][0] = 12/256.0f; + kernel[5][1] = 48/256.0f; + kernel[5][2] = 72/256.0f; + kernel[5][3] = 96/256.0f; + kernel[5][4] = 120/256.0f; + kernel[5][5] = 144/256.0f; + kernel[5][6] = 168/256.0f; + kernel[5][7] = 192/256.0f; + kernel[5][8] = 168/256.0f; + kernel[5][9] = 144/256.0f; + kernel[5][10] = 120/256.0f; + kernel[5][11] = 96/256.0f; + kernel[5][12] = 72/256.0f; + kernel[5][13] = 48/256.0f; + + kernel[6][0] = 14/256.0f; + kernel[6][1] = 56/256.0f; + kernel[6][2] = 84/256.0f; + kernel[6][3] = 112/256.0f; + kernel[6][4] = 140/256.0f; + kernel[6][5] = 168/256.0f; + kernel[6][6] = 196/256.0f; + kernel[6][7] = 224/256.0f; + kernel[6][8] = 196/256.0f; + kernel[6][9] = 168/256.0f; + kernel[6][10] = 140/256.0f; + kernel[6][11] = 112/256.0f; + kernel[6][12] = 84/256.0f; + kernel[6][13] = 56/256.0f; + + kernel[7][0] = 12/256.0f; + kernel[7][1] = 48/256.0f; + kernel[7][2] = 72/256.0f; + kernel[7][3] = 96/256.0f; + kernel[7][4] = 120/256.0f; + kernel[7][5] = 144/256.0f; + kernel[7][6] = 168/256.0f; + kernel[7][7] = 192/256.0f; + kernel[7][8] = 168/256.0f; + kernel[7][9] = 144/256.0f; + kernel[7][10] = 120/256.0f; + kernel[7][11] = 96/256.0f; + kernel[7][12] = 72/256.0f; + kernel[7][13] = 48/256.0f; + + kernel[8][0] = 10/256.0f; + kernel[8][1] = 40/256.0f; + kernel[8][2] = 60/256.0f; + kernel[8][3] = 80/256.0f; + kernel[8][4] = 100/256.0f; + kernel[8][5] = 120/256.0f; + kernel[8][6] = 140/256.0f; + kernel[8][7] = 160/256.0f; + kernel[8][8] = 140/256.0f; + kernel[8][9] = 120/256.0f; + kernel[8][10] = 100/256.0f; + kernel[8][11] = 80/256.0f; + kernel[8][12] = 60/256.0f; + kernel[8][13] = 40/256.0f; + + kernel[10][0] = 8/256.0f; + kernel[10][1] = 32/256.0f; + kernel[10][2] = 48/256.0f; + kernel[10][3] = 64/256.0f; + kernel[10][4] = 80/256.0f; + kernel[10][5] = 96/256.0f; + kernel[10][6] = 112/256.0f; + kernel[10][7] = 128/256.0f; + kernel[10][8] = 112/256.0f; + kernel[10][9] = 96/256.0f; + kernel[10][10] = 80/256.0f; + kernel[10][11] = 64/256.0f; + kernel[10][12] = 48/256.0f; + kernel[10][13] = 32/256.0f; + + kernel[11][0] = 6/256.0f; + kernel[12][1] = 24/256.0f; + kernel[12][2] = 36/256.0f; + kernel[12][3] = 48/256.0f; + kernel[12][4] = 60/256.0f; + kernel[12][5] = 72/256.0f; + kernel[12][6] = 84/256.0f; + kernel[12][7] = 96/256.0f; + kernel[12][8] = 84/256.0f; + kernel[12][9] = 72/256.0f; + kernel[12][10] = 60/256.0f; + kernel[12][11] = 48/256.0f; + kernel[12][12] = 36/256.0f; + kernel[12][13] = 24/256.0f; + + kernel[13][0] = 4/256.0f; + kernel[13][1] = 16/256.0f; + kernel[13][2] = 24/256.0f; + kernel[13][3] = 32/256.0f; + kernel[13][4] = 40/256.0f; + kernel[13][5] = 48/256.0f; + kernel[13][6] = 56/256.0f; + kernel[13][7] = 64/256.0f; + kernel[13][8] = 56/256.0f; + kernel[13][9] = 48/256.0f; + kernel[13][10] = 40/256.0f; + kernel[13][11] = 32/256.0f; + kernel[13][12] = 24/256.0f; + kernel[13][13] = 16/256.0f; + } + //define 15X15 Gaussian kernel - public static void initKernel15(double[][] kernel) { - kernel[0][0] = 1/256.0; - kernel[0][1] = 4/256.0; - kernel[0][2] = 6/256.0; - kernel[0][3] = 8/256.0; - kernel[0][4] = 10/256.0; - kernel[0][5] = 12/256.0; - kernel[0][6] = 14/256.0; - kernel[0][7] = 16/256.0; - kernel[0][8] = 14/256.0; - kernel[0][9] = 12/256.0; - kernel[0][10] = 10/256.0; - kernel[0][11] = 8/256.0; - kernel[0][12] = 6/256.0; - kernel[0][13] = 4/256.0; - kernel[0][14] = 1/256.0; - - kernel[1][0] = 4/256.0; - kernel[1][1] = 16/256.0; - kernel[1][2] = 24/256.0; - kernel[1][3] = 32/256.0; - kernel[1][4] = 40/256.0; - kernel[1][5] = 48/256.0; - kernel[1][6] = 56/256.0; - kernel[1][7] = 64/256.0; - kernel[1][8] = 56/256.0; - kernel[1][9] = 48/256.0; - kernel[1][10] = 40/256.0; - kernel[1][11] = 32/256.0; - kernel[1][12] = 24/256.0; - kernel[1][13] = 16/256.0; - kernel[1][14] = 4/256.0; - - kernel[2][0] = 6/256.0; - kernel[2][1] = 24/256.0; - kernel[2][2] = 36/256.0; - kernel[2][3] = 48/256.0; - kernel[2][4] = 60/256.0; - kernel[2][5] = 72/256.0; - kernel[2][6] = 84/256.0; - kernel[2][7] = 96/256.0; - kernel[2][8] = 84/256.0; - kernel[2][9] = 72/256.0; - kernel[2][10] = 60/256.0; - kernel[2][11] = 48/256.0; - kernel[2][12] = 36/256.0; - kernel[2][13] = 24/256.0; - kernel[2][14] = 6/256.0; - - kernel[3][0] = 8/256.0; - kernel[3][1] = 32/256.0; - kernel[3][2] = 48/256.0; - kernel[3][3] = 64/256.0; - kernel[3][4] = 80/256.0; - kernel[3][5] = 96/256.0; - kernel[3][6] = 112/256.0; - kernel[3][7] = 128/256.0; - kernel[3][8] = 112/256.0; - kernel[3][9] = 96/256.0; - kernel[3][10] = 80/256.0; - kernel[3][11] = 64/256.0; - kernel[3][12] = 48/256.0; - kernel[3][13] = 32/256.0; - kernel[3][14] = 8/256.0; - - - kernel[4][0] = 10/256.0; - kernel[4][1] = 40/256.0; - kernel[4][2] = 60/256.0; - kernel[4][3] = 80/256.0; - kernel[4][4] = 100/256.0; - kernel[4][5] = 120/256.0; - kernel[4][6] = 140/256.0; - kernel[4][7] = 160/256.0; - kernel[4][8] = 140/256.0; - kernel[4][9] = 120/256.0; - kernel[4][10] = 100/256.0; - kernel[4][11] = 80/256.0; - kernel[4][12] = 60/256.0; - kernel[4][13] = 40/256.0; - kernel[4][14] = 10/256.0; - - kernel[5][0] = 12/256.0; - kernel[5][1] = 48/256.0; - kernel[5][2] = 72/256.0; - kernel[5][3] = 96/256.0; - kernel[5][4] = 120/256.0; - kernel[5][5] = 144/256.0; - kernel[5][6] = 168/256.0; - kernel[5][7] = 192/256.0; - kernel[5][8] = 168/256.0; - kernel[5][9] = 144/256.0; - kernel[5][10] = 120/256.0; - kernel[5][11] = 96/256.0; - kernel[5][12] = 72/256.0; - kernel[5][13] = 48/256.0; - kernel[5][14] = 12/256.0; - - kernel[6][0] = 14/256.0; - kernel[6][1] = 56/256.0; - kernel[6][2] = 84/256.0; - kernel[6][3] = 112/256.0; - kernel[6][4] = 140/256.0; - kernel[6][5] = 168/256.0; - kernel[6][6] = 196/256.0; - kernel[6][7] = 224/256.0; - kernel[6][8] = 196/256.0; - kernel[6][9] = 168/256.0; - kernel[6][10] = 140/256.0; - kernel[6][11] = 112/256.0; - kernel[6][12] = 84/256.0; - kernel[6][13] = 56/256.0; - kernel[6][14] = 14/256.0; - - kernel[7][0] = 16/256.0; - kernel[7][1] = 64/256.0; - kernel[7][2] = 96/256.0; - kernel[7][3] = 128/256.0; - kernel[7][4] = 160/256.0; - kernel[7][5] = 192/256.0; - kernel[7][6] = 224/256.0; - kernel[7][7] = 256/256.0; - kernel[7][8] = 224/256.0; - kernel[7][9] = 192/256.0; - kernel[7][10] = 160/256.0; - kernel[7][11] = 128/256.0; - kernel[7][12] = 96/256.0; - kernel[7][13] = 64/256.0; - kernel[7][14] = 16/256.0; - - kernel[8][0] = 14/256.0; - kernel[8][1] = 56/256.0; - kernel[8][2] = 84/256.0; - kernel[8][3] = 112/256.0; - kernel[8][4] = 140/256.0; - kernel[8][5] = 168/256.0; - kernel[8][6] = 196/256.0; - kernel[8][7] = 224/256.0; - kernel[8][8] = 196/256.0; - kernel[8][9] = 168/256.0; - kernel[8][10] = 140/256.0; - kernel[8][11] = 112/256.0; - kernel[8][12] = 84/256.0; - kernel[8][13] = 56/256.0; - kernel[8][14] = 14/256.0; - - kernel[9][0] = 12/256.0; - kernel[9][1] = 48/256.0; - kernel[9][2] = 72/256.0; - kernel[9][3] = 96/256.0; - kernel[9][4] = 120/256.0; - kernel[9][5] = 144/256.0; - kernel[9][6] = 168/256.0; - kernel[9][7] = 192/256.0; - kernel[9][8] = 168/256.0; - kernel[9][9] = 144/256.0; - kernel[9][10] = 120/256.0; - kernel[9][11] = 96/256.0; - kernel[9][12] = 72/256.0; - kernel[9][13] = 48/256.0; - kernel[9][14] = 12/256.0; - - kernel[10][0] = 10/256.0; - kernel[10][1] = 40/256.0; - kernel[10][2] = 60/256.0; - kernel[10][3] = 80/256.0; - kernel[10][4] = 100/256.0; - kernel[10][5] = 120/256.0; - kernel[10][6] = 140/256.0; - kernel[10][7] = 160/256.0; - kernel[10][8] = 140/256.0; - kernel[10][9] = 120/256.0; - kernel[10][10] = 100/256.0; - kernel[10][11] = 80/256.0; - kernel[10][12] = 60/256.0; - kernel[10][13] = 40/256.0; - kernel[10][14] = 10/256.0; - - kernel[11][0] = 8/256.0; - kernel[11][1] = 32/256.0; - kernel[11][2] = 48/256.0; - kernel[11][3] = 64/256.0; - kernel[11][4] = 80/256.0; - kernel[11][5] = 96/256.0; - kernel[11][6] = 112/256.0; - kernel[11][7] = 128/256.0; - kernel[11][8] = 112/256.0; - kernel[11][9] = 96/256.0; - kernel[11][10] = 80/256.0; - kernel[11][11] = 64/256.0; - kernel[11][12] = 48/256.0; - kernel[11][13] = 32/256.0; - kernel[11][14] = 8/256.0; - - kernel[12][0] = 6/256.0; - kernel[12][1] = 24/256.0; - kernel[12][2] = 36/256.0; - kernel[12][3] = 48/256.0; - kernel[12][4] = 60/256.0; - kernel[12][5] = 72/256.0; - kernel[12][6] = 84/256.0; - kernel[12][7] = 96/256.0; - kernel[12][8] = 84/256.0; - kernel[12][9] = 72/256.0; - kernel[12][10] = 60/256.0; - kernel[12][11] = 48/256.0; - kernel[12][12] = 36/256.0; - kernel[12][13] = 24/256.0; - kernel[12][14] = 6/256.0; - - kernel[13][0] = 4/256.0; - kernel[13][1] = 16/256.0; - kernel[13][2] = 24/256.0; - kernel[13][3] = 32/256.0; - kernel[13][4] = 40/256.0; - kernel[13][5] = 48/256.0; - kernel[13][6] = 56/256.0; - kernel[13][7] = 64/256.0; - kernel[13][8] = 56/256.0; - kernel[13][9] = 48/256.0; - kernel[13][10] = 40/256.0; - kernel[13][11] = 32/256.0; - kernel[13][12] = 24/256.0; - kernel[13][13] = 16/256.0; - kernel[13][14] = 4/256.0; - - kernel[14][0] = 1/256.0; - kernel[14][1] = 4/256.0; - kernel[14][2] = 6/256.0; - kernel[14][3] = 8/256.0; - kernel[14][4] = 10/256.0; - kernel[14][5] = 12/256.0; - kernel[14][6] = 14/256.0; - kernel[14][7] = 16/256.0; - kernel[14][8] = 14/256.0; - kernel[14][9] = 12/256.0; - kernel[14][10] = 10/256.0; - kernel[14][11] = 8/256.0; - kernel[14][12] = 6/256.0; - kernel[14][13] = 4/256.0; - kernel[14][14] = 1/256.0; + public static void initKernel15(float[][] kernel) { + kernel[0][0] = 1/256.0f; + kernel[0][1] = 4/256.f; + kernel[0][2] = 6/256.f; + kernel[0][3] = 8/256.f; + kernel[0][4] = 10/256.f; + kernel[0][5] = 12/256.f; + kernel[0][6] = 14/256.f; + kernel[0][7] = 16/256.f; + kernel[0][8] = 14/256.0f; + kernel[0][9] = 12/256.0f; + kernel[0][10] = 10/256.0f; + kernel[0][11] = 8/256.0f; + kernel[0][12] = 6/256.0f; + kernel[0][13] = 4/256.0f; + kernel[0][14] = 1/256.0f; + + kernel[1][0] = 4/256.0f; + kernel[1][1] = 16/256.0f; + kernel[1][2] = 24/256.0f; + kernel[1][3] = 32/256.0f; + kernel[1][4] = 40/256.0f; + kernel[1][5] = 48/256.0f; + kernel[1][6] = 56/256.0f; + kernel[1][7] = 64/256.0f; + kernel[1][8] = 56/256.0f; + kernel[1][9] = 48/256.0f; + kernel[1][10] = 40/256.0f; + kernel[1][11] = 32/256.0f; + kernel[1][12] = 24/256.0f; + kernel[1][13] = 16/256.0f; + kernel[1][14] = 4/256.0f; + + kernel[2][0] = 6/256.0f; + kernel[2][1] = 24/256.0f; + kernel[2][2] = 36/256.0f; + kernel[2][3] = 48/256.0f; + kernel[2][4] = 60/256.0f; + kernel[2][5] = 72/256.0f; + kernel[2][6] = 84/256.0f; + kernel[2][7] = 96/256.0f; + kernel[2][8] = 84/256.0f; + kernel[2][9] = 72/256.0f; + kernel[2][10] = 60/256.0f; + kernel[2][11] = 48/256.0f; + kernel[2][12] = 36/256.0f; + kernel[2][13] = 24/256.0f; + kernel[2][14] = 6/256.0f; + + kernel[3][0] = 8/256.0f; + kernel[3][1] = 32/256.0f; + kernel[3][2] = 48/256.0f; + kernel[3][3] = 64/256.0f; + kernel[3][4] = 80/256.0f; + kernel[3][5] = 96/256.0f; + kernel[3][6] = 112/256.0f; + kernel[3][7] = 128/256.0f; + kernel[3][8] = 112/256.0f; + kernel[3][9] = 96/256.0f; + kernel[3][10] = 80/256.0f; + kernel[3][11] = 64/256.0f; + kernel[3][12] = 48/256.0f; + kernel[3][13] = 32/256.0f; + kernel[3][14] = 8/256.0f; + + + kernel[4][0] = 10/256.0f; + kernel[4][1] = 40/256.0f; + kernel[4][2] = 60/256.0f; + kernel[4][3] = 80/256.0f; + kernel[4][4] = 100/256.0f; + kernel[4][5] = 120/256.0f; + kernel[4][6] = 140/256.0f; + kernel[4][7] = 160/256.0f; + kernel[4][8] = 140/256.0f; + kernel[4][9] = 120/256.0f; + kernel[4][10] = 100/256.0f; + kernel[4][11] = 80/256.0f; + kernel[4][12] = 60/256.0f; + kernel[4][13] = 40/256.0f; + kernel[4][14] = 10/256.0f; + + kernel[5][0] = 12/256.0f; + kernel[5][1] = 48/256.0f; + kernel[5][2] = 72/256.0f; + kernel[5][3] = 96/256.0f; + kernel[5][4] = 120/256.0f; + kernel[5][5] = 144/256.0f; + kernel[5][6] = 168/256.0f; + kernel[5][7] = 192/256.0f; + kernel[5][8] = 168/256.0f; + kernel[5][9] = 144/256.0f; + kernel[5][10] = 120/256.0f; + kernel[5][11] = 96/256.0f; + kernel[5][12] = 72/256.0f; + kernel[5][13] = 48/256.0f; + kernel[5][14] = 12/256.0f; + + kernel[6][0] = 14/256.0f; + kernel[6][1] = 56/256.0f; + kernel[6][2] = 84/256.0f; + kernel[6][3] = 112/256.0f; + kernel[6][4] = 140/256.0f; + kernel[6][5] = 168/256.0f; + kernel[6][6] = 196/256.0f; + kernel[6][7] = 224/256.0f; + kernel[6][8] = 196/256.0f; + kernel[6][9] = 168/256.0f; + kernel[6][10] = 140/256.0f; + kernel[6][11] = 112/256.0f; + kernel[6][12] = 84/256.0f; + kernel[6][13] = 56/256.0f; + kernel[6][14] = 14/256.0f; + + kernel[7][0] = 12/256.0f; + kernel[7][1] = 48/256.0f; + kernel[7][2] = 72/256.0f; + kernel[7][3] = 96/256.0f; + kernel[7][4] = 120/256.0f; + kernel[7][5] = 144/256.0f; + kernel[7][6] = 168/256.0f; + kernel[7][7] = 192/256.0f; + kernel[7][8] = 168/256.0f; + kernel[7][9] = 144/256.0f; + kernel[7][10] = 120/256.0f; + kernel[7][11] = 96/256.0f; + kernel[7][12] = 72/256.0f; + kernel[7][13] = 48/256.0f; + kernel[7][14] = 12/256.0f; + + kernel[8][0] = 10/256.0f; + kernel[8][1] = 40/256.0f; + kernel[8][2] = 60/256.0f; + kernel[8][3] = 80/256.0f; + kernel[8][4] = 100/256.0f; + kernel[8][5] = 120/256.0f; + kernel[8][6] = 140/256.0f; + kernel[8][7] = 160/256.0f; + kernel[8][8] = 140/256.0f; + kernel[8][9] = 120/256.0f; + kernel[8][10] = 100/256.0f; + kernel[8][11] = 80/256.0f; + kernel[8][12] = 60/256.0f; + kernel[8][13] = 40/256.0f; + kernel[8][14] = 10/256.0f; + + kernel[10][0] = 8/256.0f; + kernel[10][1] = 32/256.0f; + kernel[10][2] = 48/256.0f; + kernel[10][3] = 64/256.0f; + kernel[10][4] = 80/256.0f; + kernel[10][5] = 96/256.0f; + kernel[10][6] = 112/256.0f; + kernel[10][7] = 128/256.0f; + kernel[10][8] = 112/256.0f; + kernel[10][9] = 96/256.0f; + kernel[10][10] = 80/256.0f; + kernel[10][11] = 64/256.0f; + kernel[10][12] = 48/256.0f; + kernel[10][13] = 32/256.0f; + kernel[10][14] = 8/256.0f; + + kernel[11][0] = 6/256.0f; + kernel[12][1] = 24/256.0f; + kernel[12][2] = 36/256.0f; + kernel[12][3] = 48/256.0f; + kernel[12][4] = 60/256.0f; + kernel[12][5] = 72/256.0f; + kernel[12][6] = 84/256.0f; + kernel[12][7] = 96/256.0f; + kernel[12][8] = 84/256.0f; + kernel[12][9] = 72/256.0f; + kernel[12][10] = 60/256.0f; + kernel[12][11] = 48/256.0f; + kernel[12][12] = 36/256.0f; + kernel[12][13] = 24/256.0f; + kernel[12][14] = 6/256.0f; + + kernel[13][0] = 4/256.0f; + kernel[13][1] = 16/256.0f; + kernel[13][2] = 24/256.0f; + kernel[13][3] = 32/256.0f; + kernel[13][4] = 40/256.0f; + kernel[13][5] = 48/256.0f; + kernel[13][6] = 56/256.0f; + kernel[13][7] = 64/256.0f; + kernel[13][8] = 56/256.0f; + kernel[13][9] = 48/256.0f; + kernel[13][10] = 40/256.0f; + kernel[13][11] = 32/256.0f; + kernel[13][12] = 24/256.0f; + kernel[13][13] = 16/256.0f; + kernel[13][14] = 4/256.0f; + + kernel[14][0] = 1/256.0f; + kernel[14][1] = 4/256.0f; + kernel[14][2] = 6/256.0f; + kernel[14][3] = 8/256.0f; + kernel[14][4] = 10/256.0f; + kernel[14][5] = 12/256.0f; + kernel[14][6] = 14/256.0f; + kernel[14][7] = 16/256.0f; + kernel[14][8] = 14/256.0f; + kernel[14][9] = 12/256.0f; + kernel[14][10] = 10/256.0f; + kernel[14][11] = 8/256.0f; + kernel[14][12] = 6/256.0f; + kernel[14][13] = 4/256.0f; + kernel[14][14] = 1/256.0f; } } public class Image { int width, height; int kernelWidth, kernelHeight; - double[][] inputImage; - double[][] outputImage; + float[][] inputImage; + float[][] outputImage; public Image(int height, int width, int kernelWidth, int kernelHeight) { this.width = width; this.height = height; this.kernelWidth = kernelWidth; this.kernelHeight = kernelHeight; - inputImage = global new double[height+kernelHeight-1][width+kernelWidth-1]; - outputImage = global new double[height][width]; + inputImage = global new float[height+kernelHeight-1][width+kernelWidth-1]; + outputImage = global new float[height][width]; } /* Create a valid image */ public void setValues() { for (int i = 0; i < (height+kernelHeight - 1); i++) { - double ainput[] = inputImage[i]; + float ainput[] = inputImage[i]; for(int j = 0; j < (width+kernelWidth - 1); j++) { ainput[j] = 256-j; } } for (int i = 0; i < height; i++){ - double aout[] = outputImage[i]; + float aout[] = outputImage[i]; for(int j = 0; j < width; j++) { aout[j] = 0; } diff --git a/Robust/src/Benchmarks/Prefetch/2DConv/dsm/Makefile b/Robust/src/Benchmarks/Prefetch/2DConv/dsm/Makefile index 7bb42b6b..95c127b9 100644 --- a/Robust/src/Benchmarks/Prefetch/2DConv/dsm/Makefile +++ b/Robust/src/Benchmarks/Prefetch/2DConv/dsm/Makefile @@ -8,21 +8,17 @@ SRC4=${MAINCLASS}Rect.java FLAGS =-dsm -dsmcaching -prefetch -transstats -optimize -excprefetch Image.initKernel -excprefetch Image.setValues -excprefetch Convolution.main -trueprob 0.90 -mainclass ${MAINCLASS} FLAGS1=-dsm -transstats -optimize -mainclass ${MAINCLASS} FLAGS2=-dsm -optimize -transstats -dsmcaching -mainclass ${MAINCLASS} +FLAGSP=-dsm -dsmcaching -prefetch -optimize -excprefetch Image.initKernel -excprefetch Image.setValues -excprefetch Convolution.main -trueprob 0.90 -mainclass ${MAINCLASS} +FLAGSNPNC=-dsm -optimize -mainclass ${MAINCLASS} +FLAGSNPC=-dsm -optimize -dsmcaching -mainclass ${MAINCLASS} default: -# ../../../../buildscript ${FLAGS1} ${SRC} -o ${MAINCLASS}NPNC -# ../../../../buildscript ${FLAGS} ${SRC} -o ${MAINCLASS}N -# ../../../../buildscript ${FLAGS1} ${SRC1} -o ${MAINCLASS}NPNC -# ../../../../buildscript ${FLAGS} ${SRC1} -o ${MAINCLASS}N -# ../../../../buildscript ${FLAGS1} ${SRC2} -o ${MAINCLASS}NPNC -# ../../../../buildscript ${FLAGS2} ${SRC2} -o ${MAINCLASS}NPC -# ../../../../buildscript ${FLAGS} ${SRC2} -o ${MAINCLASS}N -# ../../../../buildscript ${FLAGS1} ${SRC3} -o ${MAINCLASS}NPNC -# ../../../../buildscript ${FLAGS2} ${SRC3} -o ${MAINCLASS}NPC -# ../../../../buildscript ${FLAGS} ${SRC3} -o ${MAINCLASS}N - ../../../../buildscript ${FLAGS1} ${SRC4} -o ${MAINCLASS}NPNC -# ../../../../buildscript ${FLAGS2} ${SRC4} -o ${MAINCLASS}NPC - ../../../../buildscript ${FLAGS} ${SRC4} -o ${MAINCLASS}N + ../../../../buildscript ${FLAGS1} ${SRC4} -o ${MAINCLASS}withstatNPNC + ../../../../buildscript ${FLAGS2} ${SRC4} -o ${MAINCLASS}withstatNPC + ../../../../buildscript ${FLAGS} ${SRC4} -o ${MAINCLASS}withstatN + ../../../../buildscript ${FLAGSNPNC} ${SRC4} -o ${MAINCLASS}NPNC + ../../../../buildscript ${FLAGSNPC} ${SRC4} -o ${MAINCLASS}NPC + ../../../../buildscript ${FLAGSP} ${SRC4} -o ${MAINCLASS}N clean: rm -rf tmpbuilddirectory diff --git a/Robust/src/Benchmarks/Prefetch/2DConv/javasingle/ConvolutionRect.java b/Robust/src/Benchmarks/Prefetch/2DConv/javasingle/ConvolutionRect.java index 16683c1f..67994734 100644 --- a/Robust/src/Benchmarks/Prefetch/2DConv/javasingle/ConvolutionRect.java +++ b/Robust/src/Benchmarks/Prefetch/2DConv/javasingle/ConvolutionRect.java @@ -1,7 +1,7 @@ public class Convolution extends Thread { Image img; int x0,x1,y0,y1; - + public Convolution(Image img, int x0, int x1, int y0, int y1) { this.img = img; this.x0 = x0; @@ -11,64 +11,130 @@ public class Convolution extends Thread { } public void run() { - int kernelHeight=15; - int kernelWidth=15; - - double[][] kernel = new double[kernelHeight][kernelWidth]; - initKernel15(kernel); - - int myx0=x0; - int myy0=y0; - int myx1=x1; - int myy1=y1; - - double tempinput[][] = img.inputImage; - double tempout[][] = img.outputImage; - - double tinput1[] = tempinput[myx0+0]; - double tinput2[] = tempinput[myx0+1]; - double tinput3[] = tempinput[myx0+2]; - double tinput4[] = tempinput[myx0+3]; - double tinput5[] = tempinput[myx0+4]; - double tinput6[] = tempinput[myx0+5]; - double tinput7[] = tempinput[myx0+6]; - double tinput8[] = tempinput[myx0+7]; - double tinput9[] = tempinput[myx0+8]; - double tinput10[] = tempinput[myx0+9]; - double tinput11[] = tempinput[myx0+10]; - double tinput12[] = tempinput[myx0+11]; - double tinput13[] = tempinput[myx0+12]; - double tinput14[] = tempinput[myx0+13]; - double tinput0[] = tinput1; - - int l=myx0+14; - for(int i=myx0;i0) { NUM_THREADS = Integer.parseInt(args[0]); @@ -79,42 +145,32 @@ public class Convolution extends Thread { } } - int[] mid = new int[8]; - mid[0] = (128<<24)|(195<<16)|(136<<8)|162; //dw-10 - mid[1] = (128<<24)|(195<<16)|(136<<8)|163; //dw-11 - mid[2] = (128<<24)|(195<<16)|(136<<8)|164; //dw-12 - mid[3] = (128<<24)|(195<<16)|(136<<8)|165; //dw-13 - mid[4] = (128<<24)|(195<<16)|(136<<8)|166; //dw-14 - mid[5] = (128<<24)|(195<<16)|(136<<8)|167; //dw-15 - mid[6] = (128<<24)|(195<<16)|(136<<8)|168; //dw-16 - mid[7] = (128<<24)|(195<<16)|(136<<8)|169; //dw-17 - Image img; Convolution[] conv; Convolution tmp; - img = new Image(HEIGHT,WIDTH,kernelHeight,kernelWidth); - img.setValues(); - conv = new Convolution[NUM_THREADS]; - int increment=HEIGHT/NUM_THREADS; - int base = 0; - for(int i = 0; i