Is it possible to have an OpenCL kernel output a single (float2, float4 etc. ) value based on an analysis of an image?
I must admit to being confused by how to specify input and output values for kernels, and haven’t found a clear explanation.
Kerenls can’t return values. They are always defined with the void type. To return values you can simply create a cl_mem object and write to it. The only tricky part is figuring out which work-item does the writing, since you will presumably have many work-items working together.
I’m writing OpenCL kernels in Apple’s Quartz Composer, so don’t have full access to the way OpenCL is setup in the background. I’ll try and find out more from the QC devlist.
You can do this in quartz composer but you may have to turn on the advanced options. Basically you need to define an output that’s of size 2 to get 2 floats out from quartz composer. It will then generate a global float* output and you can write to output[0] and [1].