@Override public long getMaxWorkGroupSize(Device device) { CLDevice d = ((LwjglDevice) device).getDevice(); return kernel.getWorkGroupInfoSize(d, CL10.CL_KERNEL_WORK_GROUP_SIZE); }
return; devices.add(ld.getDevice());
@Override public long getMaxWorkGroupSize(Device device) { long d = ((LwjglDevice) device).getDevice(); return Info.clGetKernelWorkGroupInfoPointer(kernel, d, CL10.CL_KERNEL_WORK_GROUP_SIZE); }
return; devices.add(ld.getDevice());
private String Log() { StringBuilder str = new StringBuilder(); for (LwjglDevice device : context.getDevices()) { CLDevice d = device.getDevice(); str.append(device.getName()).append(":\n"); str.append(program.getBuildInfoString(d, CL10.CL_PROGRAM_BUILD_LOG)); str.append('\n'); } return str.toString(); }
private String Log() { StringBuilder str = new StringBuilder(); for (LwjglDevice device : context.getDevices()) { long d = device.getDevice(); str.append(device.getName()).append(":\n"); //str.append(Info.clGetProgramBuildInfoStringASCII(program, d, CL10.CL_PROGRAM_BUILD_LOG)); //This throws an IllegalArgumentException in Buffer.limit() str.append(Log(d)); str.append('\n'); } return str.toString(); }
@Override @SuppressWarnings("element-type-mismatch") public CommandQueue createQueue(Device device) { assert (devices.contains(device)); //this also ensures that device is a LwjglDevice long d = ((LwjglDevice) device).getDevice(); long properties = 0; long q = CL10.clCreateCommandQueue(context, d, properties, Utils.errorBuffer); Utils.checkError(Utils.errorBuffer, "clCreateCommandQueue"); return new LwjglCommandQueue(q, device); }
@Override @SuppressWarnings("element-type-mismatch") public CommandQueue createQueue(Device device) { assert (devices.contains(device)); //this also ensures that device is a LwjglDevice CLDevice d = ((LwjglDevice) device).getDevice(); long properties = 0; CLCommandQueue q = CL10.clCreateCommandQueue(context, d, properties, Utils.errorBuffer); Utils.checkError(Utils.errorBuffer, "clCreateCommandQueue"); return new LwjglCommandQueue(q, device); }
@Override public void build(String args, Device... devices) throws KernelCompilationException { PointerBuffer deviceList = null; if (devices != null) { deviceList = PointerBuffer.allocateDirect(devices.length); deviceList.rewind(); for (Device d : devices) { deviceList.put(((LwjglDevice) d).getDevice()); } deviceList.flip(); } int ret = CL10.clBuildProgram(program, deviceList, args, null, 0); if (ret != CL10.CL_SUCCESS) { String log = Log(); LOG.log(Level.WARNING, "Unable to compile program:\n{0}", log); if (ret == CL10.CL_BUILD_PROGRAM_FAILURE) { throw new KernelCompilationException("Failed to build program", ret, log); } else { Utils.checkError(ret, "clBuildProgram"); } } else { LOG.log(Level.INFO, "Program compiled:\n{0}", Log()); } }
@Override public Program createProgramFromBinary(ByteBuffer binaries, Device device) { Utils.errorBuffer.rewind(); Utils.tempBuffers[0].b16i.rewind(); Utils.pointerBuffers[0].rewind(); Utils.pointerBuffers[0].put(0, ((LwjglDevice) device).getDevice()); long p = CL10.clCreateProgramWithBinary(context, Utils.pointerBuffers[0], binaries, Utils.tempBuffers[0].b16i, Utils.errorBuffer); Utils.checkError(Utils.errorBuffer, "clCreateProgramWithBinary"); Utils.checkError(Utils.tempBuffers[0].b16i, "clCreateProgramWithBinary"); return new LwjglProgram(p, this); }
int index = -1; for (int i=0; i<numDevices; ++i) { if (devices.get(i) == device.getDevice()) { index = i;
@Override public long getMaxWorkGroupSize(Device device) { long d = ((LwjglDevice) device).getDevice(); return Info.clGetKernelWorkGroupInfoPointer(kernel, d, CL10.CL_KERNEL_WORK_GROUP_SIZE); }
private String Log() { StringBuilder str = new StringBuilder(); for (LwjglDevice device : context.getDevices()) { long d = device.getDevice(); str.append(device.getName()).append(":\n"); //str.append(Info.clGetProgramBuildInfoStringASCII(program, d, CL10.CL_PROGRAM_BUILD_LOG)); //This throws an IllegalArgumentException in Buffer.limit() str.append(Log(d)); str.append('\n'); } return str.toString(); }
@Override @SuppressWarnings("element-type-mismatch") public CommandQueue createQueue(Device device) { assert (devices.contains(device)); //this also ensures that device is a LwjglDevice long d = ((LwjglDevice) device).getDevice(); long properties = 0; long q = CL10.clCreateCommandQueue(context, d, properties, Utils.errorBuffer); Utils.checkError(Utils.errorBuffer, "clCreateCommandQueue"); return new LwjglCommandQueue(q, device); }
@Override public void build(String args, Device... devices) throws KernelCompilationException { PointerBuffer deviceList = null; if (devices != null) { deviceList = PointerBuffer.allocateDirect(devices.length); deviceList.rewind(); for (Device d : devices) { deviceList.put(((LwjglDevice) d).getDevice()); } deviceList.flip(); } int ret = CL10.clBuildProgram(program, deviceList, args, null, 0); if (ret != CL10.CL_SUCCESS) { String log = Log(); LOG.log(Level.WARNING, "Unable to compile program:\n{0}", log); if (ret == CL10.CL_BUILD_PROGRAM_FAILURE) { throw new KernelCompilationException("Failed to build program", ret, log); } else { Utils.checkError(ret, "clBuildProgram"); } } else { LOG.log(Level.INFO, "Program compiled:\n{0}", Log()); } }
@Override public Program createProgramFromBinary(ByteBuffer binaries, Device device) { Utils.errorBuffer.rewind(); Utils.tempBuffers[0].b16i.rewind(); Utils.pointerBuffers[0].rewind(); Utils.pointerBuffers[0].put(0, ((LwjglDevice) device).getDevice()); long p = CL10.clCreateProgramWithBinary(context, Utils.pointerBuffers[0], binaries, Utils.tempBuffers[0].b16i, Utils.errorBuffer); Utils.checkError(Utils.errorBuffer, "clCreateProgramWithBinary"); Utils.checkError(Utils.tempBuffers[0].b16i, "clCreateProgramWithBinary"); return new LwjglProgram(p, this); }
int index = -1; for (int i=0; i<numDevices; ++i) { if (devices.get(i) == device.getDevice()) { index = i;