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