Skip to content

Commit 3fca298

Browse files
committed
JavaCL: deprecated CLContext.getKernelsDefaultByteOrder() and CLDevice.getKernelsDefaultByteOrder()
1 parent 1fe6ab5 commit 3fca298

6 files changed

Lines changed: 26 additions & 84 deletions

File tree

libraries/OpenCL-JNA/Core/src/main/java/com/nativelibs4java/opencl/CLDevice.java

Lines changed: 9 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -104,63 +104,19 @@ public static Map<String, List<CLDevice>> getDevicesBySignature(List<CLDevice> d
104104
}
105105

106106

107+
private volatile ByteOrder byteOrder;
107108
public ByteOrder getByteOrder() {
108-
return isEndianLittle() ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN;
109+
if (byteOrder == null)
110+
byteOrder = isEndianLittle() ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN;
111+
return byteOrder;
109112
}
110113

111-
ByteOrder kernelsDefaultByteOrder;
114+
/**
115+
* @deprecated Use {@link CLDevice#getByteOrder()}
116+
*/
117+
@Deprecated
112118
public synchronized ByteOrder getKernelsDefaultByteOrder() {
113-
if (kernelsDefaultByteOrder == null) {
114-
kernelsDefaultByteOrder = getByteOrder();//ByteOrder.nativeOrder();
115-
/*
116-
CLPlatform platform = getPlatform();
117-
if (platform != null && platform.getVendor().toLowerCase().contains("nvidia"))
118-
kernelsDefaultByteOrder = getByteOrder();
119-
else {
120-
CLContext context = JavaCL.createContext((Map)null, this);
121-
CLQueue queue = context.createDefaultQueue();
122-
try {
123-
int n = 16;
124-
125-
CLIntBuffer inputMatchResult = context.createIntBuffer(CLMem.Usage.Output, n);
126-
float testValue = 12;
127-
CLFloatBuffer inPtr = context.createFloatBuffer(CLMem.Usage.Input, n);
128-
inPtr.write(queue, FloatBuffer.wrap(new float[] { testValue }), true);
129-
CLProgram program =
130-
context.createProgram(IOUtils.readText(CLDevice.class.getResourceAsStream("EndiannessTest.cl")))
131-
.defineMacro("TEST_VALUE", testValue)
132-
.build();
133-
134-
CLKernel test = program.createKernel("testEndianness", inPtr, inPtr, inPtr, inputMatchResult);
135-
test.enqueueNDRange(queue, new int[] { n }, new int[] { 1 });
136-
queue.finish();
137-
138-
IntBuffer b = NIOUtils.directInts(n, getByteOrder());
139-
inputMatchResult.read(queue, b, true);
140-
switch (b.get(0)) {
141-
case 1: // device endianness
142-
kernelsDefaultByteOrder = getByteOrder();
143-
break;
144-
case 2: // host endianness
145-
kernelsDefaultByteOrder = ByteOrder.nativeOrder();
146-
break;
147-
default:
148-
throw new RuntimeException("Default kernel argument endianness of this device couldn't be guessed out.");
149-
}
150-
151-
} catch (CLBuildException ex) {
152-
throw new RuntimeException("Default kernel argument endianness of this device couldn't be guessed out.", ex);
153-
} catch (IOException ex) {
154-
throw new RuntimeException("Couldn't find internal resources needed to guess this device's kernel argument endianness.", ex);
155-
} finally {
156-
queue.finish();
157-
System.gc();
158-
queue.release();
159-
context.release();
160-
}
161-
}//*/
162-
}
163-
return kernelsDefaultByteOrder;
119+
return getByteOrder();
164120
}
165121

166122
/** Bit values for CL_DEVICE_EXECUTION_CAPABILITIES */

libraries/OpenCL-JNA/Core/src/main/velocity/com/nativelibs4java/opencl/CLContext.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -657,19 +657,11 @@ private CLByteBuffer createBuffer(final Buffer buffer, long byteCount, final int
657657
}
658658

659659
/**
660-
* The OpenCL specification states that the default endianness of kernel arguments is that of the device.<br/>
661-
* However, there are implementations where this does not appear to be respected, so it is compulsory to perform a runtime test on those platforms.
662-
* @return byte order needed for pointer kernel arguments that do not have any <code>__attribute__ ((endian(device))</code> or <code>__attribute__ ((endian(host))</code> attribute.
660+
* @deprecated Use {@link CLContext#getByteOrder()}
663661
*/
662+
@Deprecated
664663
public ByteOrder getKernelsDefaultByteOrder() {
665-
ByteOrder order = null;
666-
for (CLDevice device : getDevices()) {
667-
ByteOrder devOrder = device.getKernelsDefaultByteOrder();
668-
if (order != null && devOrder != order)
669-
return null;
670-
order = devOrder;
671-
}
672-
return order;
664+
return getByteOrder();
673665
}
674666

675667
/**

libraries/OpenCL/Core/src/main/java/com/nativelibs4java/opencl/CLDevice.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,15 +102,19 @@ public static Map<String, List<CLDevice>> getDevicesBySignature(List<CLDevice> d
102102
return ret;
103103
}
104104

105-
105+
private volatile ByteOrder byteOrder;
106106
public ByteOrder getByteOrder() {
107-
return isEndianLittle() ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN;
107+
if (byteOrder == null)
108+
byteOrder = isEndianLittle() ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN;
109+
return byteOrder;
108110
}
109111

110-
ByteOrder kernelsDefaultByteOrder;
112+
/**
113+
* @deprecated Use {@link CLDevice#getByteOrder()}
114+
*/
115+
@Deprecated
111116
public synchronized ByteOrder getKernelsDefaultByteOrder() {
112-
if (kernelsDefaultByteOrder == null) {
113-
kernelsDefaultByteOrder = getByteOrder();//ByteOrder.nativeOrder();
117+
return getByteOrder();
114118
/*
115119
CLPlatform platform = getPlatform();
116120
if (platform != null && platform.getVendor().toLowerCase().contains("nvidia"))
@@ -158,8 +162,6 @@ public synchronized ByteOrder getKernelsDefaultByteOrder() {
158162
context.release();
159163
}
160164
}//*/
161-
}
162-
return kernelsDefaultByteOrder;
163165
}
164166

165167
/** Bit values for CL_DEVICE_EXECUTION_CAPABILITIES */

libraries/OpenCL/Core/src/main/velocity/com/nativelibs4java/opencl/CLContext.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -650,19 +650,11 @@ private <T> CLBuffer<T> createBuffer(PointerIO<T> io, Pointer<T> data, long byte
650650
}
651651

652652
/**
653-
* The OpenCL specification states that the default endianness of kernel arguments is that of the device.<br/>
654-
* However, there are implementations where this does not appear to be respected, so it is compulsory to perform a runtime test on those platforms.
655-
* @return byte order needed for pointer kernel arguments that do not have any <code>__attribute__ ((endian(device))</code> or <code>__attribute__ ((endian(host))</code> attribute.
653+
* @deprecated Use {@link CLContext#getByteOrder()}
656654
*/
655+
@Deprecated
657656
public ByteOrder getKernelsDefaultByteOrder() {
658-
ByteOrder order = null;
659-
for (CLDevice device : getDevices()) {
660-
ByteOrder devOrder = device.getKernelsDefaultByteOrder();
661-
if (order != null && devOrder != order)
662-
return null;
663-
order = devOrder;
664-
}
665-
return order;
657+
return getByteOrder();
666658
}
667659

668660
/**

libraries/OpenCL/Tutorials/Simple/src/main/resources/archetype-resources/src/main/java/JavaCLTutorial1.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class JavaCLTutorial1 {
1313
public static void main(String[] args) throws IOException {
1414
CLContext context = JavaCL.createBestContext();
1515
CLQueue queue = context.createDefaultQueue();
16-
ByteOrder byteOrder = context.getKernelsDefaultByteOrder();
16+
ByteOrder byteOrder = context.getByteOrder();
1717

1818
int n = 1024;
1919
Pointer<Float>

libraries/OpenCL/Tutorials/Simple/src/main/resources/archetype-resources/src/main/java/JavaCLTutorial2.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class JavaCLTutorial2 {
1313
public static void main(String[] args) throws IOException {
1414
CLContext context = JavaCL.createBestContext();
1515
CLQueue queue = context.createDefaultQueue();
16-
ByteOrder byteOrder = context.getKernelsDefaultByteOrder();
16+
ByteOrder byteOrder = context.getByteOrder();
1717

1818
int n = 1024;
1919
Pointer<Float>

0 commit comments

Comments
 (0)