I just went through the section 5.7.2 Setting Kernel Arguments of the OpenCL specification and I am guessing that I cannot pass an array to the kernel without putting it on to the global memory. Putting it in another way, to pass an array to the kernel, it has to be put in the global memory and then passed as a pointer. Is this right?

-- Bharath