Why do you need this? What can you do with it?
Our cluster-wide OpenCL platform handles 3rd-party OpenCL applications, so it has no advance knowledge about kernel arguments and their type (and we do not have our own parser either to try to analyze the kernel source-codes ourselves).
Our implementation of “clSetKernelArg” needs to look at the kernel argument that is supplied by the application, return an appropriate error-code to the calling application if necessary, then convert memory-objects and samplers to its internal representation.
While the platform is operational, it currently needs to rely on dirty and expensive tricks to find the necessary information, and those tricks also happen to differ from one SDK to the next, which is not good at all. We need a simple way, once a program is built (which would generally be on a different computer) to send back information about all its kernel-argument types and sizes to the computer where the application is running.
It helps greatly when you are creating OpenCL bindings from another language. It provides easier run-time type checking to ensure that a parameter in the language binding is correctly type mapped to a kernel parameter.