Search in sources :

Example 6 with CLKernel

use of com.jogamp.opencl.CLKernel in project javacv by bytedeco.

the class JavaCVCL method remap.

public void remap(CLImage2d srcImg, CLImage2d dstImg, CLImage2d mapxImg, CLImage2d mapyImg, long sensorPattern) {
    // new CLEventList(1);
    CLEventList list = null;
    CLKernel kernel;
    if (sensorPattern != -1L) {
        kernel = remapBayerKernel.putArg(srcImg).putArg(dstImg).putArg(mapxImg).putArg(mapyImg).putArg(sensorPattern).rewind();
    } else {
        kernel = remapKernel.putArg(srcImg).putArg(dstImg).putArg(mapxImg).putArg(mapyImg).rewind();
    }
    // execute program
    executeKernel(kernel, 0, 0, alignCeil(dstImg.width, 2), alignCeil(dstImg.height, 64), 2, 64, list);
// finish();
// CLEvent event = list.getEvent(0);
// System.out.println("remap: " + (event.getProfilingInfo(CLEvent.ProfilingCommand.END) -
// event.getProfilingInfo(CLEvent.ProfilingCommand.START))/1000000.0);
}
Also used : CLEventList(com.jogamp.opencl.CLEventList) CLKernel(com.jogamp.opencl.CLKernel)

Example 7 with CLKernel

use of com.jogamp.opencl.CLKernel in project javacv by bytedeco.

the class ProCamTransformerCL method transform.

@Override
public void transform(CLImage2d srcImg, CLImage2d subImg, CLImage2d srcDotImg, CLImage2d transImg, CLImage2d dstImg, CLImage2d maskImg, ImageTransformer.Parameters[] parameters, boolean[] inverses, InputData inputData, OutputData outputData) {
    if (inverses != null) {
        for (int i = 0; i < inverses.length; i++) {
            if (inverses[i]) {
                throw new UnsupportedOperationException("Inverse transform not supported.");
            }
        }
    }
    prepareTransforms(H1Buffer, H2Buffer, XBuffer, inputData.pyramidLevel, parameters);
    final int dotSize = parameters[0].size();
    final int localSize = parameters.length > 1 ? parameters.length : (inputData.roiWidth > 32 ? 64 : 32);
    final int globalSize = JavaCVCL.alignCeil(inputData.roiWidth, localSize);
    final int reduceSize = globalSize / localSize;
    // allocate buffers if necessary
    CLBuffer inputBuffer = inputData.getBuffer(context);
    CLBuffer outputBuffer = outputData.getBuffer(context, dotSize, reduceSize);
    CLEventList list = new CLEventList(1);
    // setup kernel
    if (surfaceTransformer != null) {
        // upload H1
        context.writeBuffer(H1Buffer, false);
    }
    // upload H2
    context.writeBuffer(H2Buffer, false);
    // upload X
    context.writeBuffer(XBuffer, false);
    if (inputData.autoWrite) {
        inputData.writeBuffer(context);
    }
    CLImage2d srcImg2 = projectorImageCL[inputData.pyramidLevel];
    CLKernel kernel = null;
    if (subImg == null) {
        assert parameters.length == 1;
        kernel = oneKernel.putArg(srcImg2).putArg(srcImg).putArg(dstImg == null ? transImg : dstImg).putArg(maskImg).putArg(H2Buffer);
    } else if (srcDotImg == null) {
        assert parameters.length == 1;
        kernel = subKernel.putArg(srcImg2).putArg(srcImg).putArg(subImg).putArg(transImg).putArg(dstImg).putArg(maskImg).putArg(H2Buffer);
    } else {
        assert parameters.length == dotSize;
        kernel = dotKernel.putArg(srcImg2).putArg(srcImg).putArg(subImg).putArg(srcDotImg).putArg(maskImg).putArg(H2Buffer);
    // System.out.println(kernel.getWorkGroupSize(context.getCLCommandQueue().getDevice()));
    }
    if (H1Buffer != null) {
        kernel.putArg(H1Buffer);
    } else {
        kernel.putNullArg(nullSize);
    }
    kernel.putArg(XBuffer).putArg(inputBuffer).putArg(outputBuffer).rewind();
    context.executeKernel(kernel, inputData.roiX, 0, 0, globalSize, 1, parameters.length, localSize, 1, parameters.length, // execute program
    list);
    if (reduceSize > 1) {
        reduceKernel.putArg(outputBuffer).rewind();
        context.executeKernel(reduceKernel, 0, reduceSize, reduceSize);
    }
    if (outputData.autoRead) {
        outputData.readBuffer(context);
    }
// CLEvent event = list.getEvent(0);
// System.out.println((event.getProfilingInfo(CLEvent.ProfilingCommand.END) -
// event.getProfilingInfo(CLEvent.ProfilingCommand.START))/1000000.0);
// long res = q.getDevice().getProfilingTimerResolution();
// System.out.println(res);
}
Also used : CLBuffer(com.jogamp.opencl.CLBuffer) CLImage2d(com.jogamp.opencl.CLImage2d) CLEventList(com.jogamp.opencl.CLEventList) CLKernel(com.jogamp.opencl.CLKernel)

Example 8 with CLKernel

use of com.jogamp.opencl.CLKernel in project javacv by bytedeco.

the class ProjectiveColorTransformerCL method transform.

@Override
public void transform(CLImage2d srcImg, CLImage2d subImg, CLImage2d srcDotImg, CLImage2d transImg, CLImage2d dstImg, CLImage2d maskImg, ImageTransformer.Parameters[] parameters, boolean[] inverses, InputData inputData, OutputData outputData) {
    prepareHomographies(HBuffer, inputData.pyramidLevel, parameters, inverses);
    prepareColorTransforms(XBuffer, inputData.pyramidLevel, parameters, inverses);
    final int dotSize = parameters[0].size();
    final int localSize = parameters.length > 1 ? parameters.length : (inputData.roiWidth > 32 ? 64 : 32);
    final int globalSize = JavaCVCL.alignCeil(inputData.roiWidth, localSize);
    final int reduceSize = globalSize / localSize;
    // allocate buffers if necessary
    CLBuffer inputBuffer = inputData.getBuffer(context);
    CLBuffer outputBuffer = outputData.getBuffer(context, dotSize, reduceSize);
    CLEventList list = new CLEventList(1);
    // setup kernel
    // upload H
    context.writeBuffer(HBuffer, false);
    // upload X
    context.writeBuffer(XBuffer, false);
    if (inputData.autoWrite) {
        inputData.writeBuffer(context);
    }
    CLKernel kernel = null;
    if (subImg == null) {
        assert parameters.length == 1;
        kernel = oneKernel.putArg(srcImg).putArg(dstImg == null ? transImg : dstImg).putArg(maskImg).putArg(HBuffer).putArg(XBuffer).putArg(inputBuffer).putArg(outputBuffer).rewind();
    } else if (srcDotImg == null) {
        assert parameters.length == 1;
        kernel = subKernel.putArg(srcImg).putArg(subImg).putArg(transImg).putArg(dstImg).putArg(maskImg).putArg(HBuffer).putArg(XBuffer).putArg(inputBuffer).putArg(outputBuffer).rewind();
    } else {
        assert parameters.length == dotSize;
        kernel = dotKernel.putArg(srcImg).putArg(subImg).putArg(srcDotImg).putArg(maskImg).putArg(HBuffer).putArg(XBuffer).putArg(inputBuffer).putArg(outputBuffer).rewind();
    }
    context.executeKernel(kernel, inputData.roiX, 0, 0, globalSize, 1, parameters.length, localSize, 1, parameters.length, // execute program
    list);
    if (reduceSize > 1) {
        reduceKernel.putArg(outputBuffer).rewind();
        context.executeKernel(reduceKernel, 0, reduceSize, reduceSize);
    }
    if (outputData.autoRead) {
        outputData.readBuffer(context);
    }
// CLEvent event = list.getEvent(0);
// System.out.println((event.getProfilingInfo(CLEvent.ProfilingCommand.END) -
// event.getProfilingInfo(CLEvent.ProfilingCommand.START))/1000000.0);
// long res = q.getDevice().getProfilingTimerResolution();
// System.out.println(res);
}
Also used : CLBuffer(com.jogamp.opencl.CLBuffer) CLEventList(com.jogamp.opencl.CLEventList) CLKernel(com.jogamp.opencl.CLKernel)

Aggregations

CLKernel (com.jogamp.opencl.CLKernel)8 CLEventList (com.jogamp.opencl.CLEventList)4 CLBuffer (com.jogamp.opencl.CLBuffer)3 CLProgram (com.jogamp.opencl.CLProgram)3 IOException (java.io.IOException)2 InputStream (java.io.InputStream)2 CLCommandQueue (com.jogamp.opencl.CLCommandQueue)1 CLContext (com.jogamp.opencl.CLContext)1 CLDevice (com.jogamp.opencl.CLDevice)1 CLImage2d (com.jogamp.opencl.CLImage2d)1 CLPlatform (com.jogamp.opencl.CLPlatform)1 SequenceInputStream (java.io.SequenceInputStream)1 URL (java.net.URL)1 DoubleBuffer (java.nio.DoubleBuffer)1 FloatBuffer (java.nio.FloatBuffer)1 Vector (java.util.Vector)1 GlowServer (net.glowstone.GlowServer)1 SimplexOctaveGenerator (net.glowstone.util.noise.SimplexOctaveGenerator)1