Skip to content

Commit 22832c5

Browse files
committed
JavaCL: run tests on all detected devices, rather than just on the best one
1 parent 129d734 commit 22832c5

File tree

10 files changed

+88
-57
lines changed

10 files changed

+88
-57
lines changed

Core/src/test/java/com/nativelibs4java/opencl/AbstractCommon.java

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,46 +9,38 @@
99
import org.junit.BeforeClass;
1010

1111
import com.nativelibs4java.test.MiscTestUtils;
12+
import java.util.ArrayList;
13+
import java.util.List;
14+
import org.junit.After;
15+
import org.junit.runner.RunWith;
16+
import org.junit.runners.Parameterized;
1217

1318
/**
1419
*
1520
* @author ochafik
1621
*/
22+
@RunWith(Parameterized.class)
1723
public abstract class AbstractCommon {
1824

1925
CLPlatform platform;
2026
CLContext context;
2127
CLQueue queue;
2228
CLDevice device;
2329
CLImageFormat[] formatsRead2D, formatsRead3D, formatsWrite2D, formatsWrite3D, formatsReadWrite2D, formatsReadWrite3D;
24-
30+
/*
2531
@BeforeClass
2632
public static void setup() {
2733
MiscTestUtils.protectJNI();
2834
}
35+
*/
2936

30-
static String chosenPlatformName = System.getProperty("javacl.test.platform", System.getenv("JAVACL_TEST_PLATFORM"));
3137
static boolean listedPlatforms;
3238

33-
@Before
34-
public void setUp() {
35-
CLPlatform chosenPlatform = null;
36-
for (CLPlatform platform : JavaCL.listPlatforms()) {
37-
if (!listedPlatforms)
38-
System.out.println("Platform Detected : \"" + platform.getName() + "\"");
39-
if (chosenPlatformName != null && platform.getName().contains(chosenPlatformName)) {
40-
chosenPlatform = platform;
41-
}
42-
}
43-
listedPlatforms = true;
44-
if (chosenPlatform != null) {
45-
platform = chosenPlatform;
46-
context = platform.createContext(null, platform.getBestDevice());
47-
} else {
48-
context = JavaCL.createBestContext();
49-
platform = context.getPlatform();
50-
}
51-
queue = context.createDefaultQueue();
39+
AbstractCommon(CLDevice device) {
40+
this.device = device;
41+
platform = device.getPlatform();
42+
context = platform.createContext(null, device);
43+
queue = context.createDefaultQueue();
5244
device = context.getDevices()[0];
5345
formatsRead2D = context.getSupportedImageFormats(CLMem.Flags.ReadOnly, CLMem.ObjectType.Image2D);
5446
formatsWrite2D = context.getSupportedImageFormats(CLMem.Flags.WriteOnly, CLMem.ObjectType.Image2D);
@@ -57,6 +49,23 @@ public void setUp() {
5749
formatsReadWrite2D = context.getSupportedImageFormats(CLMem.Flags.ReadWrite, CLMem.ObjectType.Image2D);
5850
formatsReadWrite3D = context.getSupportedImageFormats(CLMem.Flags.ReadWrite, CLMem.ObjectType.Image3D);
5951
}
60-
61-
52+
53+
@Parameterized.Parameters
54+
public static List<Object[]> getDeviceParameters() {
55+
List<Object[]> ret = new ArrayList<Object[]>();
56+
for (CLPlatform platform : JavaCL.listPlatforms())
57+
for (CLDevice device : platform.listAllDevices(true))
58+
ret.add(new Object[] { device });
59+
return ret;
60+
}
61+
/*
62+
@After
63+
public void cleanup() {
64+
queue.finish();
65+
queue.release();
66+
context.release();
67+
device.release();
68+
platform.release();
69+
}
70+
*/
6271
}

Core/src/test/java/com/nativelibs4java/opencl/BinaryKernelTest.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,22 @@
99
import org.bridj.Pointer;
1010
import static org.bridj.Pointer.*;
1111
import com.nativelibs4java.test.MiscTestUtils;
12+
import java.util.List;
13+
import org.junit.runners.Parameterized;
1214

1315
/**
1416
*
1517
* @author Kazo Csaba
1618
*/
1719
@SuppressWarnings("unchecked")
1820
public class BinaryKernelTest extends AbstractCommon {
19-
20-
@BeforeClass
21-
public static void setup() {
22-
MiscTestUtils.protectJNI();
21+
public BinaryKernelTest(CLDevice device) {
22+
super(device);
23+
}
24+
25+
@Parameterized.Parameters
26+
public static List<Object[]> getDeviceParameters() {
27+
return AbstractCommon.getDeviceParameters();
2328
}
2429

2530
@Test

Core/src/test/java/com/nativelibs4java/opencl/BufferTest.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,22 @@
2121
import java.nio.ByteOrder;
2222
import static org.bridj.Pointer.*;
2323
import java.nio.ByteOrder;
24+
import java.util.List;
25+
import org.junit.runners.Parameterized;
2426

2527
/**
2628
*
2729
* @author ochafik
2830
*/
2931
@SuppressWarnings("unchecked")
3032
public class BufferTest extends AbstractCommon {
31-
32-
@BeforeClass
33-
public static void setup() {
34-
MiscTestUtils.protectJNI();
33+
public BufferTest(CLDevice device) {
34+
super(device);
35+
}
36+
37+
@Parameterized.Parameters
38+
public static List<Object[]> getDeviceParameters() {
39+
return AbstractCommon.getDeviceParameters();
3540
}
3641

3742
@Test

Core/src/test/java/com/nativelibs4java/opencl/ByteOrderHackTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,20 @@
99
import org.bridj.Pointer;
1010
import static org.bridj.Pointer.*;
1111
import com.nativelibs4java.test.MiscTestUtils;
12+
import java.util.List;
13+
import org.junit.runners.Parameterized;
1214

1315
@SuppressWarnings("unchecked")
1416
public class ByteOrderHackTest extends AbstractCommon {
17+
public ByteOrderHackTest(CLDevice device) {
18+
super(device);
19+
}
20+
21+
@Parameterized.Parameters
22+
public static List<Object[]> getDeviceParameters() {
23+
return AbstractCommon.getDeviceParameters();
24+
}
25+
1526
@Test
1627
public void test() {
1728
if (!ByteOrderHack.hackEnabled)

Core/src/test/java/com/nativelibs4java/opencl/EventTest.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,18 @@
99
import org.bridj.Pointer;
1010
import static org.bridj.Pointer.*;
1111
import com.nativelibs4java.test.MiscTestUtils;
12+
import java.util.List;
13+
import org.junit.runners.Parameterized;
1214

1315
@SuppressWarnings("unchecked")
1416
public class EventTest extends AbstractCommon {
15-
16-
@BeforeClass
17-
public static void setup() {
18-
MiscTestUtils.protectJNI();
17+
public EventTest(CLDevice device) {
18+
super(device);
19+
}
20+
21+
@Parameterized.Parameters
22+
public static List<Object[]> getDeviceParameters() {
23+
return AbstractCommon.getDeviceParameters();
1924
}
2025

2126
@Test

Core/src/test/java/com/nativelibs4java/opencl/ImageTest.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,20 @@
2323
import java.nio.FloatBuffer;
2424
import java.util.Arrays;
2525
import java.util.List;
26+
import org.junit.runners.Parameterized;
2627

2728
/**
2829
*
2930
* @author ochafik
3031
*/
3132
public class ImageTest extends AbstractCommon {
32-
33-
@BeforeClass
34-
public static void setup() {
35-
MiscTestUtils.protectJNI();
33+
public ImageTest(CLDevice device) {
34+
super(device);
35+
}
36+
37+
@Parameterized.Parameters
38+
public static List<Object[]> getDeviceParameters() {
39+
return AbstractCommon.getDeviceParameters();
3640
}
3741

3842
public boolean supportsImages() {

Core/src/test/java/com/nativelibs4java/opencl/InfoGettersTest.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,6 @@
2020
* @author ochafik
2121
*/
2222
public class InfoGettersTest {
23-
24-
@BeforeClass
25-
public static void setup() {
26-
MiscTestUtils.protectJNI();
27-
}
28-
2923
@Before
3024
public void gc() {
3125
System.gc();

Core/src/test/java/com/nativelibs4java/opencl/OpenCL4JavaBasicTest.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,6 @@ public class OpenCL4JavaBasicTest {
2020
public static final double ABSOLUTE_FLOAT_ERROR_TOLERANCE = 1e-4;
2121
public static final double RELATIVE_FLOAT_ERROR_TOLERANCE = 1e-8;
2222

23-
@BeforeClass
24-
public static void setup() {
25-
MiscTestUtils.protectJNI();
26-
}
27-
2823
@Test
2924
public void simpleTest() {
3025
try {

Core/src/test/java/com/nativelibs4java/opencl/OpenCL4JavaBenchmarkTest.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,6 @@
2323
//import com.nativelibs4java.scalacl.*;
2424
/// @see http://ati.amd.com/technology/streamcomputing/intro_opencl.html#simple
2525
public class OpenCL4JavaBenchmarkTest {
26-
27-
@BeforeClass
28-
public static void setup() {
29-
MiscTestUtils.protectJNI();
30-
}
31-
3226
static final boolean warmup = true;
3327

3428
static ExecResult<FloatBuffer> testJava_float_aSinB(int loops, int dataSize) throws CLBuildException {

Core/src/test/java/com/nativelibs4java/opencl/OverheadTest.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,22 @@
1919
import java.util.logging.Logger;
2020

2121
import java.nio.ByteBuffer;
22+
import java.util.List;
23+
import org.junit.runners.Parameterized;
2224
/**
2325
*
2426
* @author Kazo Csaba
2527
*/
2628
@SuppressWarnings("unchecked")
2729
public class OverheadTest extends AbstractCommon {
28-
30+
public OverheadTest(CLDevice device) {
31+
super(device);
32+
}
33+
34+
@Parameterized.Parameters
35+
public static List<Object[]> getDeviceParameters() {
36+
return AbstractCommon.getDeviceParameters();
37+
}
2938
static void gc() {
3039
try {
3140
System.gc();

0 commit comments

Comments
 (0)