summaryrefslogtreecommitdiffstats
path: root/test/com/mbien/opencl
diff options
context:
space:
mode:
Diffstat (limited to 'test/com/mbien/opencl')
-rw-r--r--test/com/mbien/opencl/CLProgramTest.java91
-rw-r--r--test/com/mbien/opencl/HighLevelBindingTest.java45
2 files changed, 93 insertions, 43 deletions
diff --git a/test/com/mbien/opencl/CLProgramTest.java b/test/com/mbien/opencl/CLProgramTest.java
new file mode 100644
index 00000000..0ca0fa9e
--- /dev/null
+++ b/test/com/mbien/opencl/CLProgramTest.java
@@ -0,0 +1,91 @@
+package com.mbien.opencl;
+
+import java.io.IOException;
+import java.util.Map;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+import static java.lang.System.*;
+import static com.mbien.opencl.TestUtils.*;
+import static com.sun.gluegen.runtime.BufferFactory.*;
+
+/**
+ *
+ * @author Michael Bien
+ */
+public class CLProgramTest {
+
+ @Test
+ public void rebuildProgramTest() throws IOException {
+
+ out.println(" - - - CLProgramTest; rebuild program test - - - ");
+
+ CLContext context = CLContext.create();
+ CLProgram program = context.createProgram(getClass().getResourceAsStream("testkernels.cl"));
+
+ try{
+ program.getCLKernels();
+ fail("expected exception but got none :(");
+ }catch(CLException ex) {
+ out.println("got expected exception: "+ex.getCLErrorString());
+ assertEquals(ex.errorcode, CL.CL_INVALID_PROGRAM_EXECUTABLE);
+ }
+
+ program.build();
+ assertTrue(program.isExecutable());
+ out.println(program.getBuildStatus());
+
+ Map<String, CLKernel> kernels = program.getCLKernels();
+ assertNotNull(kernels);
+ assertTrue("kernel map is empty", kernels.size() > 0);
+
+ // rebuild
+ // 1. release kernels (internally)
+ // 2. build program
+ program.build();
+ assertTrue(program.isExecutable());
+ out.println(program.getBuildStatus());
+
+ // try again with rebuilt program
+ kernels = program.getCLKernels();
+ assertNotNull(kernels);
+ assertTrue("kernel map is empty", kernels.size() > 0);
+ assertTrue(kernels.size() > 0);
+
+ context.release();
+ }
+
+ @Test
+ public void programBinariesTest() throws IOException {
+
+ out.println(" - - - CLProgramTest; down-/upload binaries test - - - ");
+
+ CLContext context = CLContext.create();
+ CLProgram program = context.createProgram(getClass().getResourceAsStream("testkernels.cl")).build();
+
+ // optain binaries
+ Map<CLDevice, byte[]> binaries = program.getBinaries();
+ assertFalse(binaries.isEmpty());
+
+ CLDevice[] devices = program.getCLDevices();
+ for (CLDevice device : devices) {
+ assertTrue(binaries.containsKey(device));
+ }
+
+ // 1. release program
+ // 2. re-create program with old binaries
+ program.release();
+
+ program = context.createProgram(binaries);
+
+ out.println(program.getBuildStatus());
+
+ program.build();
+
+ assertTrue(program.isExecutable());
+
+ }
+
+
+
+}
diff --git a/test/com/mbien/opencl/HighLevelBindingTest.java b/test/com/mbien/opencl/HighLevelBindingTest.java
index d28dd042..171c972f 100644
--- a/test/com/mbien/opencl/HighLevelBindingTest.java
+++ b/test/com/mbien/opencl/HighLevelBindingTest.java
@@ -120,8 +120,8 @@ public class HighLevelBindingTest {
assertFalse(source.trim().isEmpty());
// out.println("source:\n"+source);
-// Map<CLDevice, byte[]> binaries = program.getBinaries();
-// assertFalse(binaries.isEmpty());
+ Map<CLDevice, byte[]> binaries = program.getBinaries();
+ assertFalse(binaries.isEmpty());
int elementCount = 11444777; // Length of float arrays to process (odd # for illustration)
int localWorkSize = 256; // set and log Global and Local work size dimensions
@@ -189,46 +189,5 @@ public class HighLevelBindingTest {
context.release();
}
- @Test
- public void rebuildProgramTest() throws IOException {
-
- out.println(" - - - highLevelTest; rebuild program test - - - ");
-
- CLContext context = CLContext.create();
- CLProgram program = context.createProgram(getClass().getResourceAsStream("testkernels.cl"));
-
- try{
- program.getCLKernels();
- fail("expected exception but got none :(");
- }catch(CLException ex) {
- out.println("got expected exception:\n"+ex.getMessage());
- assertEquals(ex.errorcode, CL.CL_INVALID_PROGRAM_EXECUTABLE);
- }
-
- program.build();
- assertTrue(program.isExecutable());
- out.println(program.getBuildStatus());
-
- Map<String, CLKernel> kernels = program.getCLKernels();
- assertNotNull(kernels);
- assertTrue("kernel map is empty", kernels.size() > 0);
-
- // rebuild
- // 1. release kernels (internally)
- // 2. build program
- program.build();
- assertTrue(program.isExecutable());
- out.println(program.getBuildStatus());
-
- // try again with rebuilt program
- kernels = program.getCLKernels();
- assertNotNull(kernels);
- assertTrue("kernel map is empty", kernels.size() > 0);
- assertTrue(kernels.size() > 0);
-
- context.release();
- }
-
-
}