diff --git a/com.amd.aparapi.jni/src/cpp/invoke/OpenCLJNI.cpp b/com.amd.aparapi.jni/src/cpp/invoke/OpenCLJNI.cpp
index a0916bc09544bb6077dcc1ed55da0f22549374e8..7e499fa7255273af374c207a1ddfa7ef5a78e5bc 100644
--- a/com.amd.aparapi.jni/src/cpp/invoke/OpenCLJNI.cpp
+++ b/com.amd.aparapi.jni/src/cpp/invoke/OpenCLJNI.cpp
@@ -250,6 +250,16 @@ void getArg(JNIEnv *jenv, cl_context context, cl_command_queue commandQueue, cl_
}
}
+JNI_JAVA(jobject, OpenCLJNI, getProfileInfo)
+ (JNIEnv *jenv, jobject jobj, jobject programInstance) {
+ jobject returnList = JNIHelper::createInstance(jenv, ArrayListClass, VoidReturn );
+ for (int i=0; i< 5; i++){
+ jobject writeProfileInfo = NULL;
+ JNIHelper::callVoid(jenv, returnList, "add", ArgsBooleanReturn(ObjectClassArg), writeProfileInfo);
+ }
+ return(returnList);
+}
+
JNI_JAVA(void, OpenCLJNI, disposeProgram)
(JNIEnv *jenv, jobject jobj, jobject programInstance) {
//fprintf(stderr, "dispose program \n");
diff --git a/com.amd.aparapi/src/java/com.amd.aparapi.iml b/com.amd.aparapi/src/java/com.amd.aparapi.iml
new file mode 100644
index 0000000000000000000000000000000000000000..d5c074327501eaec3fe451ed56ce5160f1e97e16
--- /dev/null
+++ b/com.amd.aparapi/src/java/com.amd.aparapi.iml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+</module>
+
diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/device/OpenCLDevice.java b/com.amd.aparapi/src/java/com/amd/aparapi/device/OpenCLDevice.java
index 9793d4c7db3424f8ac95f3968c071c9429c8d6c9..4ec4cbcfaa81691f510bd996542346c3b3bb83a0 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/device/OpenCLDevice.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/device/OpenCLDevice.java
@@ -1,5 +1,6 @@
package com.amd.aparapi.device;
+import com.amd.aparapi.ProfileInfo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
@@ -180,6 +181,12 @@ public class OpenCLDevice extends Device{
disposed=true;
} else if (method.getName().equals("end")) {
System.out.println("end not implemented");
+ } else if (method.getName().equals("getProfileInfo")){
+ // public List<ProfileInfo> getProfileInfo() {
+ // return (kernelRunner.getProfileInfo());
+ // }
+ System.out.println("get profile info");
+ proxy = (Object)program.getProfileInfo();
}
}
return proxy;
@@ -268,7 +275,8 @@ public class OpenCLDevice extends Device{
|| _methods.getName().equals("get")
|| _methods.getName().equals("dispose")
|| _methods.getName().equals("begin")
- || _methods.getName().equals("end"));
+ || _methods.getName().equals("end")
+ || _methods.getName().equals("getProfileInfo"));
}
private String streamToString(InputStream _inputStream) {
diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/internal/jni/KernelRunnerJNI.java b/com.amd.aparapi/src/java/com/amd/aparapi/internal/jni/KernelRunnerJNI.java
index a672093fe97114a2e1fe4d5ed1fc63c73bb7e5bf..f8020cdecf2a7bdcae32dfc63521adeedb75e783 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/internal/jni/KernelRunnerJNI.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/internal/jni/KernelRunnerJNI.java
@@ -286,12 +286,11 @@ public abstract class KernelRunnerJNI{
* synchronized to avoid race in clGetPlatformIDs() in OpenCL lib problem should fixed in some future OpenCL version
*
* @param _kernel
+ * @param _device
* @param _flags
- * @param numProcessors
- * @param maxJTPLocalSize
* @return
*/
- @DocMe protected native synchronized long initJNI(Kernel _kernel, OpenCLDevice device, int _flags);
+ @DocMe protected native synchronized long initJNI(Kernel _kernel, OpenCLDevice _device, int _flags);
protected native int getJNI(long _jniContextHandle, Object _array);
@@ -305,13 +304,5 @@ public abstract class KernelRunnerJNI{
protected native String getExtensionsJNI(long _jniContextHandle);
- // @Deprecated protected native int getMaxWorkGroupSizeJNI(long _jniContextHandle);
-
- // @Deprecated protected native int getMaxWorkItemSizeJNI(long _jniContextHandle, int _index);
-
- // @Deprecated protected native int getMaxComputeUnitsJNI(long _jniContextHandle);
-
- // @Deprecated protected native int getMaxWorkItemDimensionsJNI(long _jniContextHandle);
-
protected native synchronized List<ProfileInfo> getProfileInfoJNI(long _jniContextHandle);
}
diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/internal/jni/OpenCLJNI.java b/com.amd.aparapi/src/java/com/amd/aparapi/internal/jni/OpenCLJNI.java
index b69f5aebbd92d19aa83eb94c2434b4c1c3736d3f..9fa182204030714805caa1872f64ce469b31d9c5 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/internal/jni/OpenCLJNI.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/internal/jni/OpenCLJNI.java
@@ -1,5 +1,6 @@
package com.amd.aparapi.internal.jni;
+import com.amd.aparapi.ProfileInfo;
import java.util.List;
import com.amd.aparapi.device.OpenCLDevice;
@@ -26,6 +27,8 @@ public abstract class OpenCLJNI{
protected native void disposeProgram(OpenCLProgram openCLProgram);
+ protected native List<ProfileInfo> getProfileInfo(OpenCLProgram openCLProgram);
+
protected native void remap(OpenCLProgram program, OpenCLMem mem, long address);
protected native byte[] getBytes(String className);
diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/internal/kernel/KernelRunner.java b/com.amd.aparapi/src/java/com/amd/aparapi/internal/kernel/KernelRunner.java
index 26e46c4a376adc23d75a035ed6844a9abd690f12..926546097193c41848212f5fe151811bbb669600 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/internal/kernel/KernelRunner.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/internal/kernel/KernelRunner.java
@@ -114,7 +114,7 @@ public class KernelRunner extends KernelRunnerJNI{
/**
* <code>Kernel.dispose()</code> delegates to <code>KernelRunner.dispose()</code> which delegates to <code>disposeJNI()</code> to actually close JNI data structures.<br/>
*
- * @see KernelRunner#disposeJNI()
+ * @see KernelRunnerJNI#disposeJNI()
*/
public void dispose() {
if (kernel.getExecutionMode().isOpenCL()) {
@@ -218,7 +218,7 @@ public class KernelRunner extends KernelRunnerJNI{
/**
* Execute using a Java thread pool. Either because we were explicitly asked to do so, or because we 'fall back' after discovering an OpenCL issue.
*
- * @param _globalSize
+ * @param _range
* The globalSize requested by the user (via <code>Kernel.execute(globalSize)</code>)
* @param _passes
* The # of passes requested by the user (via <code>Kernel.execute(globalSize, passes)</code>). Note this is usually defaulted to 1 via <code>Kernel.execute(globalSize)</code>.
diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/internal/opencl/OpenCLKernel.java b/com.amd.aparapi/src/java/com/amd/aparapi/internal/opencl/OpenCLKernel.java
index 19c065927c35121d1a93c81e05f97be9d5b881e2..bc464a0115f0994ad18e6c03f36f28824b009333 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/internal/opencl/OpenCLKernel.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/internal/opencl/OpenCLKernel.java
@@ -1,5 +1,7 @@
package com.amd.aparapi.internal.opencl;
+import com.amd.aparapi.ProfileInfo;
+import com.amd.aparapi.internal.kernel.KernelRunner;
import java.util.List;
import com.amd.aparapi.internal.jni.OpenCLJNI;
@@ -60,4 +62,6 @@ public class OpenCLKernel extends OpenCLJNI{
public void dispose(){
disposeKernel(this);
}
+
+
}
diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/internal/opencl/OpenCLProgram.java b/com.amd.aparapi/src/java/com/amd/aparapi/internal/opencl/OpenCLProgram.java
index 23855513e8921a91d137b19e8c2622fe5f2e7481..91ecff5c7976c50eec64bcc5836bf7c5d2c56192 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/internal/opencl/OpenCLProgram.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/internal/opencl/OpenCLProgram.java
@@ -1,6 +1,8 @@
package com.amd.aparapi.internal.opencl;
+import com.amd.aparapi.ProfileInfo;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import com.amd.aparapi.device.OpenCLDevice;
@@ -88,4 +90,8 @@ public class OpenCLProgram extends OpenCLJNI{
public void dispose(){
disposeProgram(this);
}
+
+ public List<ProfileInfo> getProfileInfo(){
+ return(getProfileInfo(this));
+ }
}
diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/opencl/OpenCL.java b/com.amd.aparapi/src/java/com/amd/aparapi/opencl/OpenCL.java
index 134622506dc755e4c94a5a6aaea24e3ddd639ab4..8fd113c9e529d989281c192df86c51c6a82eed50 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/opencl/OpenCL.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/opencl/OpenCL.java
@@ -1,9 +1,11 @@
package com.amd.aparapi.opencl;
+import com.amd.aparapi.ProfileInfo;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import java.util.List;
public interface OpenCL<T> {
@@ -106,4 +108,6 @@ public interface OpenCL<T> {
public T end();
public T dispose();
+
+ public List<ProfileInfo> getProfileInfo();
}
diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/opencl/OpenCLAdapter.java b/com.amd.aparapi/src/java/com/amd/aparapi/opencl/OpenCLAdapter.java
index 5681b3af86e032f2c8dfccd04cf120810b620b3f..7568fc2ec44a85361c8d4a3f5c1d6bac54e5e8f9 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/opencl/OpenCLAdapter.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/opencl/OpenCLAdapter.java
@@ -1,5 +1,9 @@
package com.amd.aparapi.opencl;
+import com.amd.aparapi.ProfileInfo;
+import java.util.ArrayList;
+import java.util.List;
+
public class OpenCLAdapter<T> implements OpenCL<T>{
@SuppressWarnings("unchecked") public T put(byte[] array) {
@@ -70,4 +74,8 @@ public class OpenCLAdapter<T> implements OpenCL<T>{
return ((T) this);
}
+ public List<ProfileInfo> getProfileInfo(){
+ return(new ArrayList<ProfileInfo>());
+ }
+
}
diff --git a/examples/javaonedemo/nbody.sh b/examples/javaonedemo/nbody.sh
index 74160f0deab592118bfcde90b70156b0646c95ac..7505a7dbbf66647752742c7969db171abf601d05 100644
--- a/examples/javaonedemo/nbody.sh
+++ b/examples/javaonedemo/nbody.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
-java -Djava.library.path=../../com.amd.aparapi.jni/dist:../third-party/jogamp \
- -classpath ../third-party/jogamp/gluegen-rt.jar:../third-party/jogamp/jogl-all.jar:../../com.amd.aparapi/dist/aparapi.jar:javaonedemo.jar \
- com.amd.aparapi.examples.javaonedemo.NBody
+#!/bin/bash
+java -Djava.library.path=../../com.amd.aparapi.jni/dist:../third-party/jogamp \
+ -classpath ../third-party/jogamp/gluegen-rt.jar:../third-party/jogamp/jogl-all.jar:../../com.amd.aparapi/dist/aparapi.jar:javaonedemo.jar \
+ com.amd.aparapi.examples.javaonedemo.NBody
diff --git a/samples/extension/src/com/amd/aparapi/sample/extension/SquareExample.java b/samples/extension/src/com/amd/aparapi/sample/extension/SquareExample.java
index b954226ed50cf3b3f7defa99fd75e63c86e25a62..9c6f2a608b9d9d77ee75ecfc6e104c1f03b7b588 100644
--- a/samples/extension/src/com/amd/aparapi/sample/extension/SquareExample.java
+++ b/samples/extension/src/com/amd/aparapi/sample/extension/SquareExample.java
@@ -1,11 +1,13 @@
package com.amd.aparapi.sample.extension;
+import com.amd.aparapi.ProfileInfo;
import com.amd.aparapi.Range;
import com.amd.aparapi.device.Device;
import com.amd.aparapi.device.OpenCLDevice;
import com.amd.aparapi.opencl.OpenCL;
import com.amd.aparapi.opencl.OpenCL.Resource;
import com.amd.aparapi.opencl.OpenCL.Source;
+import java.util.List;
public class SquareExample{
@@ -57,7 +59,7 @@ public class SquareExample{
if (device instanceof OpenCLDevice) {
final OpenCLDevice openclDevice = (OpenCLDevice) device;
- for (int l=0; l<1000; l++){
+ for (int l=0; l<5; l++){
final SquarerWithResource squarer = openclDevice.bind(SquarerWithResource.class);
squarer.square(range, in, squares);
@@ -71,8 +73,12 @@ public class SquareExample{
for (int i = 0; i < size; i++) {
System.out.println(l+" "+ in[i] + " " + squares[i] + " " + quads[i]);
}
-
+ List<ProfileInfo> profileInfo =squarer.getProfileInfo();
+ for (ProfileInfo pi:profileInfo){
+ System.out.println("whooo");
+ }
squarer.dispose();
+
}
}
}