CLProgram(CLContext context, CLDevice... devices) { super(0, true); this.context = context; this.devices = devices == null || devices.length == 0 ? context.getDevices() : devices; } CLProgram(CLContext context, Map<CLDevice, byte[]> binaries, String source) {
CLProgram(CLContext context, CLDevice... devices) { super(0, true); this.context = context; this.devices = devices == null || devices.length == 0 ? context.getDevices() : devices; } CLProgram(CLContext context, Map<CLDevice, byte[]> binaries, String source) {
public ByteOrder getKernelsDefaultByteOrder() { if (kernelsDefaultByteOrder == null) { ByteOrder order = null; for (CLDevice device : getDevices()) { ByteOrder devOrder = device.getKernelsDefaultByteOrder(); if (order != null && devOrder != order) return null; order = devOrder; } kernelsDefaultByteOrder = order; } return kernelsDefaultByteOrder; }
public ByteOrder getKernelsDefaultByteOrder() { if (kernelsDefaultByteOrder == null) { ByteOrder order = null; for (CLDevice device : getDevices()) { ByteOrder devOrder = device.getKernelsDefaultByteOrder(); if (order != null && devOrder != order) return null; order = devOrder; } kernelsDefaultByteOrder = order; } return kernelsDefaultByteOrder; }
public boolean isByteAddressableStoreSupported() { if (byteAddressableStoreSupported == null) { boolean supported = true; for (CLDevice device : getDevices()) { if (!device.isByteAddressableStoreSupported()) { supported = false; break; } } byteAddressableStoreSupported = supported; } return byteAddressableStoreSupported; } }
/** * Max size of memory object allocation in bytes. The minimum value is max (1/4th of CL_DEVICE_GLOBAL_MEM_SIZE , 128*1024*1024) */ public long getMaxMemAllocSize() { if (maxMemAllocSize < 0) { long min = Long.MAX_VALUE; for (CLDevice device : getDevices()) { long m = device.getMaxMemAllocSize(); if (m < min) min = m; } maxMemAllocSize = min; } return maxMemAllocSize; }
public boolean isByteAddressableStoreSupported() { if (byteAddressableStoreSupported == null) { boolean supported = true; for (CLDevice device : getDevices()) { if (!device.isByteAddressableStoreSupported()) { supported = false; break; } } byteAddressableStoreSupported = supported; } return byteAddressableStoreSupported; } }
/** * Whether all the devices in this context support half-precision numbers (see {@link CLDevice#isHalfSupported()}). */ public boolean isHalfSupported() { if (halfSupported == null) { boolean supported = true; for (CLDevice device : getDevices()) { if (!device.isHalfSupported()) { supported = false; break; } } halfSupported = supported; } return halfSupported; }
/** * Get the endianness common to all devices of this context, or null if the devices have mismatching endiannesses. */ public ByteOrder getByteOrder() { if (byteOrder == null) { ByteOrder order = null; for (CLDevice device : getDevices()) { ByteOrder devOrder = device.getByteOrder(); if (order != null && devOrder != order) return null; order = devOrder; } byteOrder = order; } return byteOrder; }
/** * Whether all the devices in this context support half-precision numbers (see {@link CLDevice#isHalfSupported()}). */ public boolean isHalfSupported() { if (halfSupported == null) { boolean supported = true; for (CLDevice device : getDevices()) { if (!device.isHalfSupported()) { supported = false; break; } } halfSupported = supported; } return halfSupported; }
/** * Max size of memory object allocation in bytes. The minimum value is max (1/4th of CL_DEVICE_GLOBAL_MEM_SIZE , 128*1024*1024) */ public long getMaxMemAllocSize() { if (maxMemAllocSize < 0) { long min = Long.MAX_VALUE; for (CLDevice device : getDevices()) { long m = device.getMaxMemAllocSize(); if (m < min) min = m; } maxMemAllocSize = min; } return maxMemAllocSize; }
/** * Whether all the devices in this context support any double-precision numbers (see {@link CLDevice#isDoubleSupported()}). */ public boolean isDoubleSupported() { if (doubleSupported == null) { boolean supported = true; for (CLDevice device : getDevices()) { if (!device.isDoubleSupported()) { supported = false; break; } } doubleSupported = supported; } return doubleSupported; }
/** * Get the endianness common to all devices of this context, or null if the devices have mismatching endiannesses. */ public ByteOrder getByteOrder() { if (byteOrder == null) { ByteOrder order = null; for (CLDevice device : getDevices()) { ByteOrder devOrder = device.getByteOrder(); if (order != null && devOrder != order) return null; order = devOrder; } byteOrder = order; } return byteOrder; }
public String toString() { StringBuilder b = new StringBuilder("CLContext(platform = ").append(getPlatform().getName()).append("; devices = "); boolean first = true; for (CLDevice d : getDevices()) { if (first) first = false; else b.append(", "); b.append(d.getName()); } b.append(")"); return b.toString(); } public CLQueue createDefaultOutOfOrderQueueIfPossible() {
public String toString() { StringBuilder b = new StringBuilder("CLContext(platform = ").append(getPlatform().getName()).append("; devices = "); boolean first = true; for (CLDevice d : getDevices()) { if (first) first = false; else b.append(", "); b.append(d.getName()); } b.append(")"); return b.toString(); } public CLQueue createDefaultOutOfOrderQueueIfPossible() {
/** * Restore a program previously saved with {@link CLProgram#store(java.io.OutputStream) } * @param in will be closed * @return a CLProgram object representing the previously saved program * @throws IOException */ public CLProgram loadProgram(InputStream in) throws IOException { Pair<Map<CLDevice, byte[]>, String> binaries = CLProgram.readBinaries(Arrays.asList(getDevices()), null, in); return createProgram(binaries.getFirst(), binaries.getSecond()); }
/** * Restore a program previously saved with {@link CLProgram#store(java.io.OutputStream) } * @param in will be closed * @return a CLProgram object representing the previously saved program * @throws IOException */ public CLProgram loadProgram(InputStream in) throws IOException { Pair<Map<CLDevice, byte[]>, String> binaries = CLProgram.readBinaries(Arrays.asList(getDevices()), null, in); return createProgram(binaries.getFirst(), binaries.getSecond()); }
public boolean supportsImages() { for (CLDevice device : context.getDevices()) if (device.hasImageSupport()) return true; return false; } @Test
CLQueue createQueue() { CLContext c = createContext(); CLDevice d = c.getDevices()[0]; return d.createQueue(c); }
AbstractCommon(CLDevice device) { this.device = device; platform = device.getPlatform(); context = platform.createContext(null, device); queue = context.createDefaultQueue(); device = context.getDevices()[0]; formatsRead2D = context.getSupportedImageFormats(CLMem.Flags.ReadOnly, CLMem.ObjectType.Image2D); formatsWrite2D = context.getSupportedImageFormats(CLMem.Flags.WriteOnly, CLMem.ObjectType.Image2D); formatsRead3D = context.getSupportedImageFormats(CLMem.Flags.ReadOnly, CLMem.ObjectType.Image3D); formatsWrite3D = context.getSupportedImageFormats(CLMem.Flags.WriteOnly, CLMem.ObjectType.Image3D); formatsReadWrite2D = context.getSupportedImageFormats(CLMem.Flags.ReadWrite, CLMem.ObjectType.Image2D); formatsReadWrite3D = context.getSupportedImageFormats(CLMem.Flags.ReadWrite, CLMem.ObjectType.Image3D); }