diff --git a/examples/javaonedemo/life.bat b/examples/javaonedemo/life.bat index 54a444556af7f2ba85946de61c7d9f299daf2e5b..7b3bd0bfec9f866eff99591ae97731e65a2a33de 100644 --- a/examples/javaonedemo/life.bat +++ b/examples/javaonedemo/life.bat @@ -1,7 +1,6 @@ +@echo off java ^ -Djava.library.path=../../com.amd.aparapi.jni/dist ^ - -Dcom.amd.aparapi.enableProfiling=false ^ - -Dcom.amd.aparapi.enableVerboseJNI=false ^ -classpath ../../com.amd.aparapi/dist/aparapi.jar;javaonedemo.jar ^ com.amd.aparapi.examples.javaonedemo.Life diff --git a/examples/javaonedemo/mandel.bat b/examples/javaonedemo/mandel.bat index 11988e6f013993be6130fcd5c44596fc7f08d65c..f8372d855cee20527763625c27e2335b44d13bd2 100644 --- a/examples/javaonedemo/mandel.bat +++ b/examples/javaonedemo/mandel.bat @@ -1,13 +1,6 @@ +@echo off java ^ -Djava.library.path=../../com.amd.aparapi.jni/dist ^ - -Dcom.amd.aparapi.executionMode=%1 ^ - -Dcom.amd.aparapi.logLevel=SEVERE^ - -Dcom.amd.aparapi.enableVerboseJNI=false ^ - -Dcom.amd.aparapi.enableProfiling=false ^ - -Dcom.amd.aparapi.enableShowGeneratedOpenCL=false ^ - -Dcom.amd.aparapi.enableVerboseJNIOpenCLResourceTracking=false ^ - -Dcom.amd.aparapi.dumpFlags=true ^ - -Dcom.amd.aparapi.enableInstructionDecodeViewer=false ^ -classpath ../../com.amd.aparapi/dist/aparapi.jar;javaonedemo.jar ^ com.amd.aparapi.examples.javaonedemo.Mandel diff --git a/examples/javaonedemo/nbody.bat b/examples/javaonedemo/nbody.bat index 215e7061e009a9a8e3a36d0fcee8d90b1ed10ba6..87d3f6d62e1f45ad14a7874acbbaa47a3a0579f8 100644 --- a/examples/javaonedemo/nbody.bat +++ b/examples/javaonedemo/nbody.bat @@ -1,12 +1,6 @@ @echo off - java ^ -Djava.library.path=..\..\com.amd.aparapi.jni\dist;jogamp ^ - -Dcom.amd.aparapi.executionMode=%1 ^ - -Dcom.amd.aparapi.enableProfiling=false ^ - -Dbodies=%2 ^ - -Dheight=600 ^ - -Dwidth=600 ^ -classpath jogamp\gluegen-rt.jar;jogamp\jogl.all.jar;..\..\com.amd.aparapi\dist\aparapi.jar;javaonedemo.jar ^ com.amd.aparapi.examples.javaonedemo.NBody diff --git a/examples/javaonedemo/src/com/amd/aparapi/examples/javaonedemo/Life.java b/examples/javaonedemo/src/com/amd/aparapi/examples/javaonedemo/Life.java index 8653873a668fc861e46854cfb09c67d70c70a2bf..fafb309ff84be6bafccfdc1c18b0b27222cf80c7 100644 --- a/examples/javaonedemo/src/com/amd/aparapi/examples/javaonedemo/Life.java +++ b/examples/javaonedemo/src/com/amd/aparapi/examples/javaonedemo/Life.java @@ -186,6 +186,8 @@ public class Life{ // static LifeKernel lifeKernel = null; + static long start= 0L; + static int generations= 0; static double generationsPerSecondField = 0; public static void main(String[] _args) { @@ -193,7 +195,7 @@ public class Life{ JFrame frame = new JFrame("Game of Life"); final int width = Integer.getInteger("width", 1024 + 256); - final int height = Integer.getInteger("height", 768 - 64); + final int height = Integer.getInteger("height", 768 - 64 -32); // Buffer is twice the size as the screen. We will alternate between mutating data from top to bottom // and bottom to top in alternate generation passses. The LifeKernel will track which pass is which @@ -208,7 +210,6 @@ public class Life{ @Override public void paintComponent(Graphics g) { g.setFont(font); g.setColor(Color.WHITE); - // if (lifeKernel != null) { if (lifeKernel.isExplicit()) { lifeKernel.get(lifeKernel.imageData); // We only pull the imageData when we intend to use it. List<ProfileInfo> profileInfo = lifeKernel.getProfileInfo(); @@ -226,9 +227,14 @@ public class Life{ } else { g.drawImage(image, 0, 0, width, height, 0, height, width, 2 * height, this); } + long now = System.currentTimeMillis(); + if (now - start > 1000) { + generationsPerSecondField = (generations * 1000.0) / (now - start); + start = now; + generations = 0; + } g.drawString(String.format("%5.2f", generationsPerSecondField), 20, 100); - // } } }; @@ -246,7 +252,6 @@ public class Life{ controlPanel.add(startButton); final String[] choices = new String[] { - // "Java Sequential", "Java Threads", "GPU OpenCL" }; @@ -256,29 +261,16 @@ public class Life{ modeButton.addItemListener(new ItemListener(){ @Override public void itemStateChanged(ItemEvent e) { String item = (String) modeButton.getSelectedItem(); - - // if (item.equals(choices[2])) { - // modeButton = gpuMandelBrot; - // } else if (item.equals(choices[0])) { lifeKernel.setExecutionMode(Kernel.EXECUTION_MODE.JTP); - - // modeButton = javaMandelBrot; } else if (item.equals(choices[1])) { lifeKernel.setExecutionMode(Kernel.EXECUTION_MODE.GPU); - // modeButton = javaMandelBrotMultiThread; } } }); controlPanel.add(modeButton); - // controlPanel.add(new JLabel(lifeKernel.getExecutionMode().toString())); - - // controlPanel.add(new JLabel(" Generations/Second=")); - // JLabel generationsPerSecond = new JLabel("0.00"); - // controlPanel.add(generationsPerSecond); - // Set the default size and add to the frames content pane viewer.setPreferredSize(new Dimension(width, height)); frame.getContentPane().add(viewer); @@ -288,8 +280,6 @@ public class Life{ frame.setVisible(true); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); - long start = System.currentTimeMillis(); - long generations = 0; while (!running) { try { Thread.sleep(10); @@ -299,18 +289,11 @@ public class Life{ e1.printStackTrace(); } } + start = System.currentTimeMillis(); while (true) { - lifeKernel.nextGeneration(); // Work is performed here - viewer.repaint(); // Request a repaint of the viewer (causes paintComponent(Graphics) to be called later not synchronous generations++; - long now = System.currentTimeMillis(); - if (now - start > 1000) { - generationsPerSecondField = (generations * 1000.0) / (now - start); - // generationsPerSecond.setText(String.format("%5.2f", generationsPerSecondField)); - start = now; - generations = 0; - } + viewer.repaint(); // Request a repaint of the viewer (causes paintComponent(Graphics) to be called later not synchronous } } diff --git a/examples/javaonedemo/src/com/amd/aparapi/examples/javaonedemo/Mandel.java b/examples/javaonedemo/src/com/amd/aparapi/examples/javaonedemo/Mandel.java index 5348073ad49b2634a6a67e951facf5182dbcdfc4..7ea0d3fc2eb8a1cbfc02a810f04809349433403f 100644 --- a/examples/javaonedemo/src/com/amd/aparapi/examples/javaonedemo/Mandel.java +++ b/examples/javaonedemo/src/com/amd/aparapi/examples/javaonedemo/Mandel.java @@ -178,10 +178,10 @@ public class Mandel{ JFrame frame = new JFrame("MandelBrot"); /** Width of Mandelbrot view. */ - final int width = 768; + final int width = 768-64-32; /** Height of Mandelbrot view. */ - final int height = 768; + final int height = 768-64-32; /** Mandelbrot image height. */ final Range range = Range.create(width * height); @@ -280,9 +280,6 @@ public class Mandel{ System.arraycopy(rgb, 0, imageRgb, 0, rgb.length); viewer.repaint(); - // Report target execution mode: GPU or JTP (Java Thread Pool). - System.out.println("Execution mode=" + kernel.getExecutionMode()); - // Window listener to dispose Kernel resources on user exit. frame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent _windowEvent) { diff --git a/examples/javaonedemo/src/com/amd/aparapi/examples/javaonedemo/NBody.java b/examples/javaonedemo/src/com/amd/aparapi/examples/javaonedemo/NBody.java index a6aa782d514132f57612d08e5a732cbd07ef3de6..14d7742815f050426e1835891a8727c404a2fd90 100644 --- a/examples/javaonedemo/src/com/amd/aparapi/examples/javaonedemo/NBody.java +++ b/examples/javaonedemo/src/com/amd/aparapi/examples/javaonedemo/NBody.java @@ -200,7 +200,7 @@ public class NBody{ public static void main(String _args[]) { - final NBodyKernel kernel = new NBodyKernel(Range.create(Integer.getInteger("bodies", 12288 - 256 - 32))); + final NBodyKernel kernel = new NBodyKernel(Range.create(Integer.getInteger("bodies", 10000))); kernel.setExecutionMode(Kernel.EXECUTION_MODE.JTP); JFrame frame = new JFrame("NBody"); @@ -217,7 +217,6 @@ public class NBody{ } }); controlPanel.add(startButton); - controlPanel.add(new JLabel(kernel.getExecutionMode().toString())); // controlPanel.add(new JLabel(" Particles")); @@ -260,7 +259,7 @@ public class NBody{ final GLUT glut = new GLUT(); - Dimension dimension = new Dimension(Integer.getInteger("width", 1024 + 256), Integer.getInteger("height", 768 - 64)); + Dimension dimension = new Dimension(Integer.getInteger("width", 1024 + 256), Integer.getInteger("height", 768 - 64-32)); canvas.setPreferredSize(dimension); canvas.addGLEventListener(new GLEventListener(){ @@ -320,11 +319,11 @@ public class NBody{ frames++; if (running) { - int framesPerSecond = (int) ((frames * 1000.0f) / time); + float framesPerSecond = (float) ((frames * 1000.0f) / time); gl.glColor3f(.5f, .5f, .5f); gl.glRasterPos2i(-40, 38); - glut.glutBitmapString(8, String.format("%5d fps", framesPerSecond)); + glut.glutBitmapString(8, String.format("%5.2f fps", framesPerSecond)); gl.glFlush(); } frames = 0; diff --git a/samples/convolution/src/com/amd/aparapi/sample/convolution/Convolution.java b/samples/convolution/src/com/amd/aparapi/sample/convolution/Convolution.java index 4a7b08835393e4dda07f7a33c0294f2821b77e8f..4d322f7b8da920786a2f2f5d267c9c33b13b8ec1 100644 --- a/samples/convolution/src/com/amd/aparapi/sample/convolution/Convolution.java +++ b/samples/convolution/src/com/amd/aparapi/sample/convolution/Convolution.java @@ -103,6 +103,8 @@ public class Convolution{ -10f, 0f, }; + + new ConvolutionViewer(file, convMatrix3x3){ @Override protected void applyConvolution(float[] _convMatrix3x3, byte[] _inBytes, byte[] _outBytes, int _width, diff --git a/samples/life/life.bat b/samples/life/life.bat index 269f06c21499b989ba7e46fd5c46bd1c7e591b88..61f894b3623406c5cc1cddb59ed62a96d098acb7 100644 --- a/samples/life/life.bat +++ b/samples/life/life.bat @@ -1,5 +1,6 @@ java ^ -Djava.library.path=../../com.amd.aparapi.jni/dist ^ + -Dsequential=false^ -Dcom.amd.aparapi.executionMode=%1 ^ -Dcom.amd.aparapi.enableProfiling=false ^ -Dcom.amd.aparapi.enableVerboseJNI=false ^ diff --git a/samples/life/src/com/amd/aparapi/sample/life/Main.java b/samples/life/src/com/amd/aparapi/sample/life/Main.java index f3810725171b7a7f4999f73b4a7e678af6281a79..58b294c79e917ed31c8117339442094f892f09d6 100644 --- a/samples/life/src/com/amd/aparapi/sample/life/Main.java +++ b/samples/life/src/com/amd/aparapi/sample/life/Main.java @@ -114,7 +114,11 @@ public class Main{ imageData = ((DataBufferInt) _image.getRaster().getDataBuffer()).getData(); width = _width; height = _height; - range = Range.create(width * height, 256); + if (System.getProperty("com.amd.aparapi.executionMode").equals("JTP")){ + range = Range.create(width * height, 4); + }else{ + range = Range.create(width * height); + } System.out.println("range = " + range); fromBase = height * width; toBase = 0; @@ -129,8 +133,7 @@ public class Main{ } - @Override public void run() { - int gid = getGlobalId(); + public void processPixel(int gid){ int to = gid + toBase; int from = gid + fromBase; int x = gid % width; @@ -158,16 +161,28 @@ public class Main{ } } + } + @Override public void run() { + int gid = getGlobalId(); + processPixel(gid); } + boolean sequential = Boolean.getBoolean("sequential"); + public void nextGeneration() { // swap fromBase and toBase int swap = fromBase; fromBase = toBase; toBase = swap; + if (sequential){ + for(int gid = 0; gid<(width*height); gid++){ + processPixel(gid); + } - execute(range); + }else{ + execute(range); + } } @@ -178,9 +193,9 @@ public class Main{ public static void main(String[] _args) { JFrame frame = new JFrame("Game of Life"); - final int width = Integer.getInteger("width", 1024 + 512); + final int width = Integer.getInteger("width", 1024 + 512+256+128); - final int height = Integer.getInteger("height", 768); + final int height = Integer.getInteger("height", 768+256); // Buffer is twice the size as the screen. We will alternate between mutating data from top to bottom // and bottom to top in alternate generation passses. The LifeKernel will track which pass is which