I create two float buffers like so
int size = 1;
inputBuffer = BufferUtils.createFloatBuffer(size);
while (inputBuffer.position() < inputBuffer.capacity()) {
inputBuffer.put(-1.0f);
}
inputBuffer.rewind();
inputMemory = CL10.clCreateBuffer(clContext, CL10.CL_MEM_READ_WRITE, inputBuffer, clErrorBuffer);
outputBuffer = BufferUtils.createFloatBuffer(size);
outputBuffer.rewind();
outputMemory = CL10.clCreateBuffer(clContext, CL10.CL_MEM_READ_WRITE, outputBuffer, clErrorBuffer);
then in my kernel I have
kernel void myKernel(global const float* input, global float* output){
if(input[0] < 0.0f){
output[0] = 1;
} else {
output[0] = 2;
}
}
When I retrieve output[0] in java later it is always 2. Any idea why this is? I explicitly set the input buffer to be -1 for all values, and then in the kernel if input[0] is less than 0, which it should be, set output[0] to 1.