From fa4b3b880f84e1814b658d57a24da99ab5652945 Mon Sep 17 00:00:00 2001 From: adash Date: Tue, 13 Jan 2009 04:54:58 +0000 Subject: [PATCH] changes for javasingle files --- .../Moldyn/javasingle/DoubleWrapper.java | 6 + .../Moldyn/javasingle/IntWrapper.java | 6 + .../Moldyn/javasingle/JGFMolDynBench.java | 879 +++++++++--------- .../javasingle/JGFMolDynBenchSizeA.java | 22 +- .../Prefetch/Moldyn/javasingle/MDWrap.java | 9 + .../Prefetch/Moldyn/javasingle/makefile | 6 +- 6 files changed, 458 insertions(+), 470 deletions(-) create mode 100644 Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/DoubleWrapper.java create mode 100644 Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/IntWrapper.java create mode 100644 Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/MDWrap.java diff --git a/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/DoubleWrapper.java b/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/DoubleWrapper.java new file mode 100644 index 00000000..c0bd06da --- /dev/null +++ b/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/DoubleWrapper.java @@ -0,0 +1,6 @@ +public class DoubleWrapper { + public DoubleWrapper() { + + } + double d; +} \ No newline at end of file diff --git a/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/IntWrapper.java b/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/IntWrapper.java new file mode 100644 index 00000000..8bf875d3 --- /dev/null +++ b/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/IntWrapper.java @@ -0,0 +1,6 @@ +public class IntWrapper { + public IntWrapper() { + + } + int i; +} \ No newline at end of file diff --git a/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/JGFMolDynBench.java b/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/JGFMolDynBench.java index 0f7b8a77..64c41a08 100644 --- a/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/JGFMolDynBench.java +++ b/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/JGFMolDynBench.java @@ -28,15 +28,15 @@ public class JGFMolDynBench { public int PARTSIZE; - public double[] epot; - public double[] vir; - public double[] ek; + public DoubleWrapper[] epot; + public DoubleWrapper[] vir; + public DoubleWrapper[] ek; int size,mm; int[] datasizes; public int interactions; - public int[] interacts; + public IntWrapper[] interacts; public int nthreads; public JGFInstrumentor instr; @@ -68,59 +68,66 @@ public class JGFMolDynBench { public static void JGFapplication(JGFMolDynBench mold) { // Create new arrays - mold.epot = new double [mold.nthreads]; - mold.vir = new double [mold.nthreads]; - mold.ek = new double [mold.nthreads]; - mold.interacts = new int [mold.nthreads]; - - int partsize, numthreads; - partsize = mold.PARTSIZE; - numthreads = mold.nthreads; + //BarrierServer mybarr; + /* + 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 + */ double sh_force [][]; double sh_force2 [][][]; - sh_force = new double[3][partsize]; - sh_force2 = new double[3][numthreads][partsize]; + int partsize, numthreads; + partsize = mold.PARTSIZE; + numthreads = mold.nthreads; + //mybarr = new BarrierServer(numthreads); + //mybarr.start(mid[0]); + + sh_force = new double[3][partsize]; + sh_force2 = new double[3][numthreads][partsize]; + mold.epot = new DoubleWrapper[numthreads]; + mold.vir = new DoubleWrapper[numthreads]; + mold.ek = new DoubleWrapper[numthreads]; + mold.interacts = new IntWrapper[numthreads]; + for(int i=0;i 1.0e-10 ){ //System.printString("Validation failed\n"); //System.printString("Kinetic Energy = " + (long)ek[0] + " " + (long)dev + " " + size + "\n"); @@ -128,10 +135,10 @@ public class JGFMolDynBench { } } -class mdRunner extends Thread { +class mdRunner { double count; - int id,i,j,k,lg,mdsize,mm; + int id,i,j,k,lg,mm; double l,rcoff,rcoffs,side,sideh,hsq,hsq2,vel,velt; double a,r,sum,tscale,sc,ekin,ts,sp; double den; @@ -139,7 +146,7 @@ class mdRunner extends Thread { double h; double vaver,vaverh,rand; double etot,temp,pres,rp; - double u1,u2,v1,v2,s, xx, yy, zz; + double u1, u2, s, xx, yy, zz; double xvelocity, yvelocity, zvelocity; double [][] sh_force; @@ -150,20 +157,15 @@ class mdRunner extends Thread { int istop; int iprint; - Barrier br; - random randnum; JGFMolDynBench mymd; int nthreads; - particle[] one; - - public mdRunner(int id, int mm, double [][] sh_force, double [][][] sh_force2,Barrier br, - int nthreads, JGFMolDynBench mymd) { + public mdRunner(int id, int mm, double [][] sh_force, double [][][] sh_force2, + int nthreads, JGFMolDynBench mymd) { this.id=id; this.mm=mm; this.sh_force=sh_force; this.sh_force2=sh_force2; - this.br=br; this.nthreads = nthreads; this.mymd = mymd; count = 0.0; @@ -175,523 +177,492 @@ class mdRunner extends Thread { iprint = 10; } - public void run() { - - //System.printString("Start run method\n"); - - /* Parameter determination */ - - int tmpmdsize; - double tmpden; - int movemx=50; - Barrier tmpbr; - - tmpbr=br; - mdsize = mymd.PARTSIZE; - one = new particle[mdsize]; - l = mymd.LENGTH; - tmpmdsize = mdsize; - tmpden = den; - side = Math.pow((tmpmdsize/tmpden),0.3333333); - rcoff = mm/4.0; - - a = side/mm; - sideh = side*0.5; - hsq = h*h; - hsq2 = hsq*0.5; - npartm = tmpmdsize - 1; - rcoffs = rcoff * rcoff; - tscale = 16.0 / (1.0 * tmpmdsize - 1.0); - vaver = 1.13 * Math.sqrt(tref / 24.0); - vaverh = vaver * h; - - /* Particle Generation */ - - xvelocity = 0.0; - yvelocity = 0.0; - zvelocity = 0.0; - ijk = 0; - - for (lg=0; lg<=1; lg++) { - for (i=0; i vaverh) { count = count + 1.0; } - vel = vel + velt; - } + /* Barrier */ + //Barrier.enterBarrier(barr); - vel = vel / h; + /* compute forces */ - /* temperature scale if required */ + for (int i=0+id;i vaverh) { count = count + 1.0; } + vel = vel + velt; + } - public double xcoord, ycoord, zcoord; - public double xvelocity,yvelocity,zvelocity; - int part_id; - int id; - double [][] sh_force; - double [][][] sh_force2; - mdRunner runner; - - public particle(double xcoord, double ycoord, double zcoord, double xvelocity, - double yvelocity,double zvelocity,double [][] sh_force, - double [][][] sh_force2,int id,mdRunner runner) { - - this.xcoord = xcoord; - this.ycoord = ycoord; - this.zcoord = zcoord; - this.xvelocity = xvelocity; - this.yvelocity = yvelocity; - this.zvelocity = zvelocity; - this.sh_force = sh_force; - this.sh_force2 = sh_force2; - this.id=id; - this.runner=runner; - } + vel = vel / h; - public void domove(double side,int part_id) { + /* temperature scale if required */ - xcoord = xcoord + xvelocity + sh_force[0][part_id]; - ycoord = ycoord + yvelocity + sh_force[1][part_id]; - zcoord = zcoord + zvelocity + sh_force[2][part_id]; + if((move < istop) && (((move+1) % irep) == 0)) { + sc = Math.sqrt(tref / (tscale*ekin)); + for (int i=0;i side) { xcoord = xcoord - side; } - if(ycoord < 0) { ycoord = ycoord + side; } - if(ycoord > side) { ycoord = ycoord - side; } - if(zcoord < 0) { zcoord = zcoord + side; } - if(zcoord > side) { zcoord = zcoord - side; } + /* sum to get full potential energy and virial */ - xvelocity = xvelocity + sh_force[0][part_id]; - yvelocity = yvelocity + sh_force[1][part_id]; - zvelocity = zvelocity + sh_force[2][part_id]; + if(((move+1) % iprint) == 0) { + mymd.ek[id].d = 24.0*ekin; + mymd.epot[id].d = 4.0*mymd.epot[id].d; + etot = mymd.ek[id].d + mymd.epot[id].d; + temp = tscale * ekin; + pres = tmpden * 16.0 * (ekin - mymd.vir[id].d) / mdsize; + vel = vel / mdsize; + rp = (count / mdsize) * 100.0; + } + //Barrier.enterBarrier(barr); + //if (id == 0) JGFInstrumentor.stopTimer("Section3:MolDyn:Run", instr.timers); + } } +} - public void force(double side, double rcoff,int mdsize,int x, double xx, double yy, double zz, JGFMolDynBench mymd) { + class particle { + + public double xcoord, ycoord, zcoord; + public double xvelocity,yvelocity,zvelocity; + int part_id; + int id; + double [][] sh_force; + double [][][] sh_force2; + particle[] one; + + public particle(double xcoord, double ycoord, double zcoord, double xvelocity, + double yvelocity,double zvelocity, double [][] sh_force, + double [][][] sh_force2,int id, particle[] one) { + + this.xcoord = xcoord; + this.ycoord = ycoord; + this.zcoord = zcoord; + this.xvelocity = xvelocity; + this.yvelocity = yvelocity; + this.zvelocity = zvelocity; + this.sh_force = sh_force; + this.sh_force2 = sh_force2; + this.id=id; + this.one=one; + } - double sideh; - double rcoffs; + public void domove(double side,int part_id) { - double fxi,fyi,fzi; - double rd,rrd,rrd2,rrd3,rrd4,rrd6,rrd7,r148; - double forcex,forcey,forcez; + xcoord = xcoord + xvelocity + sh_force[0][part_id]; + ycoord = ycoord + yvelocity + sh_force[1][part_id]; + zcoord = zcoord + zvelocity + sh_force[2][part_id]; - sideh = 0.5*side; - rcoffs = rcoff*rcoff; + if(xcoord < 0) { xcoord = xcoord + side; } + if(xcoord > side) { xcoord = xcoord - side; } + if(ycoord < 0) { ycoord = ycoord + side; } + if(ycoord > side) { ycoord = ycoord - side; } + if(zcoord < 0) { zcoord = zcoord + side; } + if(zcoord > side) { zcoord = zcoord - side; } - fxi = 0.0; - fyi = 0.0; - fzi = 0.0; + xvelocity = xvelocity + sh_force[0][part_id]; + yvelocity = yvelocity + sh_force[1][part_id]; + zvelocity = zvelocity + sh_force[2][part_id]; - for (int i=x+1;i (sideh)) { xx = xx - side; } - if(yy < (-sideh)) { yy = yy + side; } - if(yy > (sideh)) { yy = yy - side; } - if(zz < (-sideh)) { zz = zz + side; } - if(zz > (sideh)) { zz = zz - side; } + public void force(double side, double rcoff,int mdsize,int x, double xx, double yy, double zz, JGFMolDynBench mymd) { + double sideh; + double rcoffs; - rd = xx*xx + yy*yy + zz*zz; + double fxi,fyi,fzi; + double rd,rrd,rrd2,rrd3,rrd4,rrd6,rrd7,r148; + double forcex,forcey,forcez; + int id=this.id; + sideh = 0.5*side; + rcoffs = rcoff*rcoff; - if(rd <= rcoffs) { - rrd = 1.0/rd; - rrd2 = rrd*rrd; - rrd3 = rrd2*rrd; - rrd4 = rrd2*rrd2; - rrd6 = rrd2*rrd4; - rrd7 = rrd6*rrd; - mymd.epot[id] = mymd.epot[id] + (rrd6 - rrd3); - r148 = rrd7 - 0.5*rrd4; - mymd.vir[id] = mymd.vir[id] - rd*r148; - forcex = xx * r148; - fxi = fxi + forcex; + fxi = 0.0; + fyi = 0.0; + fzi = 0.0; - sh_force2[0][id][i] = sh_force2[0][id][i] - forcex; + for (int i=x+1;i (sideh)) { xx = xx - side; } + if(yy < (-sideh)) { yy = yy + side; } + if(yy > (sideh)) { yy = yy - side; } + if(zz < (-sideh)) { zz = zz + side; } + if(zz > (sideh)) { zz = zz - side; } - sh_force2[1][id][i] = sh_force2[1][id][i] - forcey; - forcez = zz * r148; - fzi = fzi + forcez; + rd = xx*xx + yy*yy + zz*zz; - sh_force2[2][id][i] = sh_force2[2][id][i] - forcez; + if(rd <= rcoffs) { + rrd = 1.0/rd; + rrd2 = rrd*rrd; + rrd3 = rrd2*rrd; + rrd4 = rrd2*rrd2; + rrd6 = rrd2*rrd4; + rrd7 = rrd6*rrd; + mymd.epot[id].d += (rrd6 - rrd3); + r148 = rrd7 - 0.5*rrd4; + mymd.vir[id].d += - rd*r148; + forcex = xx * r148; + fxi = fxi + forcex; - mymd.interacts[id]++; - } + sh_force2[0][id][i] = sh_force2[0][id][i] - forcex; - } + forcey = yy * r148; + fyi = fyi + forcey; - sh_force2[0][id][x] = sh_force2[0][id][x] + fxi; - sh_force2[1][id][x] = sh_force2[1][id][x] + fyi; - sh_force2[2][id][x] = sh_force2[2][id][x] + fzi; + sh_force2[1][id][i] = sh_force2[1][id][i] - forcey; - } + forcez = zz * r148; + fzi = fzi + forcez; - public double mkekin(double hsq2,int part_id) { + sh_force2[2][id][i] = sh_force2[2][id][i] - forcez; - double sumt = 0.0; + mymd.interacts[id].i++; + } - xvelocity = xvelocity + sh_force[0][part_id]; - yvelocity = yvelocity + sh_force[1][part_id]; - zvelocity = zvelocity + sh_force[2][part_id]; + } - sumt = (xvelocity*xvelocity)+(yvelocity*yvelocity)+(zvelocity*zvelocity); - return sumt; - } + sh_force2[0][id][x] = sh_force2[0][id][x] + fxi; + sh_force2[1][id][x] = sh_force2[1][id][x] + fyi; + sh_force2[2][id][x] = sh_force2[2][id][x] + fzi; - public double velavg(double vaverh,double h) { + } - double velt; - double sq; + public double mkekin(double hsq2,int part_id) { - sq = Math.sqrt(xvelocity*xvelocity + yvelocity*yvelocity + - zvelocity*zvelocity); + double sumt = 0.0; - velt = sq; - return velt; - } + xvelocity = xvelocity + sh_force[0][part_id]; + yvelocity = yvelocity + sh_force[1][part_id]; + zvelocity = zvelocity + sh_force[2][part_id]; - public void dscal(double sc,int incx) { + sumt = (xvelocity*xvelocity)+(yvelocity*yvelocity)+(zvelocity*zvelocity); + return sumt; + } - xvelocity = xvelocity * sc; - yvelocity = yvelocity * sc; - zvelocity = zvelocity * sc; + public double velavg(double vaverh,double h) { + double velt; + double sq; + sq = Math.sqrt(xvelocity*xvelocity + yvelocity*yvelocity + + zvelocity*zvelocity); - } + velt = sq; + return velt; + } -} + public void dscal(double sc,int incx) { + xvelocity = xvelocity * sc; + yvelocity = yvelocity * sc; + zvelocity = zvelocity * sc; + } + } -class random { + class random { - public int iseed; - public double v1,v2; + public int iseed; + public double v1,v2; - public random(int iseed,double v1,double v2) { - this.iseed = iseed; - this.v1 = v1; - this.v2 = v2; - } + public random(int iseed,double v1,double v2) { + this.iseed = iseed; + this.v1 = v1; + this.v2 = v2; + } - public double update() { + public double update() { - double rand; - double scale= 4.656612875e-10; + double rand; + double scale= 4.656612875e-10; - int is1,is2,iss2; - int imult=16807; - int imod = 2147483647; + int is1,is2,iss2; + int imult=16807; + int imod = 2147483647; - if (iseed<=0) { iseed = 1; } + if (iseed<=0) { iseed = 1; } - is2 = iseed % 32768; - is1 = (iseed-is2)/32768; - iss2 = is2 * imult; - is2 = iss2 % 32768; - is1 = (is1*imult+(iss2-is2)/32768) % (65536); + is2 = iseed % 32768; + is1 = (iseed-is2)/32768; + iss2 = is2 * imult; + is2 = iss2 % 32768; + is1 = (is1*imult+(iss2-is2)/32768) % (65536); - iseed = (is1*32768+is2) % imod; + iseed = (is1*32768+is2) % imod; - rand = scale * iseed; + rand = scale * iseed; - return rand; + return rand; - } + } - public double seed() { + public double seed() { - double s,u1,u2,r; - s = 1.0; - do { - u1 = update(); - u2 = update(); + double s,u1,u2,r; + s = 1.0; + do { + u1 = update(); + u2 = update(); - v1 = 2.0 * u1 - 1.0; - v2 = 2.0 * u2 - 1.0; - s = v1*v1 + v2*v2; + v1 = 2.0 * u1 - 1.0; + v2 = 2.0 * u2 - 1.0; + s = v1*v1 + v2*v2; - } while (s >= 1.0); + } while (s >= 1.0); - r = Math.sqrt(-2.0*Math.log(s)/s); + r = Math.sqrt(-2.0*Math.log(s)/s); - return r; + return r; + } } -} diff --git a/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/JGFMolDynBenchSizeA.java b/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/JGFMolDynBenchSizeA.java index 51b52f24..61437401 100644 --- a/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/JGFMolDynBenchSizeA.java +++ b/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/JGFMolDynBenchSizeA.java @@ -38,44 +38,38 @@ public class JGFMolDynBenchSizeA { JGFInstrumentor.addTimer("Section3:MolDyn:Total", "Solutions",size, instr.timers); JGFInstrumentor.addTimer("Section3:MolDyn:Run", "Interactions",size, instr.timers); - mold.JGFsetsize(size); + mold.JGFsetsize(size); JGFInstrumentor.startTimer("Section3:MolDyn:Total", instr.timers); JGFMolDynBench tmp; - mold.JGFinitialise(); + mold.JGFinitialise(); JGFMolDynBench.JGFapplication(mold); + /* Validate data */ double[] refval = new double[2]; refval[0] = 1731.4306625334357; refval[1] = 7397.392307839352; double dval; - //System.printString("Here #1\n"); - dval = mold.ek[0]; - //System.printString("Here #2\n"); + dval = mold.ek[0].d; double dev = Math.fabs(dval - refval[size]); - //long ldev = (long)dev * 1000000; - //System.printString("ldev= "+ldev); - //long ltmp = (long)1.0e-10 * 1000000; - //System.printString("ltmp= "+ltmp); - if (dev > 1.0e-10 ){ - //if (ldev > ltmp ){ + long l = (long) refval[size] *1000000; + long r = (long) dval * 1000000; + if (l != r ){ System.printString("Validation failed\n"); System.printString("Kinetic Energy = " + (long)dval + " " + (long)dev + " " + size + "\n"); } - System.printString("End of JGFvalidate\n"); JGFInstrumentor.stopTimer("Section3:MolDyn:Total", instr.timers); double interactions; - System.printString("Here #3\n"); interactions = mold.interactions; - System.printString("Here #4\n"); JGFInstrumentor.addOpsToTimer("Section3:MolDyn:Run", (double) interactions, instr.timers); JGFInstrumentor.addOpsToTimer("Section3:MolDyn:Total", 1, instr.timers); JGFInstrumentor.printTimer("Section3:MolDyn:Run", instr.timers); JGFInstrumentor.printTimer("Section3:MolDyn:Total", instr.timers); + System.printString("Finished\n"); } } diff --git a/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/MDWrap.java b/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/MDWrap.java new file mode 100644 index 00000000..5c4ed746 --- /dev/null +++ b/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/MDWrap.java @@ -0,0 +1,9 @@ +public class MDWrap { + public mdRunner md; + public MDWrap() { + } + + public MDWrap(mdRunner m) { + md=m; + } +} diff --git a/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/makefile b/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/makefile index ba8f95cf..3140b7b0 100644 --- a/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/makefile +++ b/Robust/src/Benchmarks/Prefetch/Moldyn/javasingle/makefile @@ -3,9 +3,11 @@ SRC=${MAINCLASS}.java \ JGFInstrumentor.java \ JGFTimer.java \ JGFMolDynBench.java \ -Barrier.java +DoubleWrapper.java \ +IntWrapper.java \ +MDWrap.java -FLAGS2= -thread -optimize -mainclass ${MAINCLASS} -o ${MAINCLASS}NP +FLAGS2= -thread -optimize -mainclass ${MAINCLASS} -o ${MAINCLASS} default: ../../../../buildscript ${FLAGS2} ${SRC} -- 2.34.1