OpenCL is a standardized, cross platform, parallel computing API which allows to development of portable parallel applications for the systems with heterogeneous devices. It also based on C language like CUDA and it standardizes the parallel programming approach for rapidly growing various parallel computing platforms. For an example if we develops an application with CUDA then it is harder to use that application with different hardware platform other than Nvidia. But OpenCL eliminates this issue of vendor specificity with a more complex platform and device management model. With this multi vendor portability OpenCL device management model, kernel compilation model and kernel launch are really harder than the CUDA counterpart. But this standardization model will leads to more improvements on parallel computing with heterogeneous devices. References: OpenCL Programming Guide for the CUDA Architecture Version 3.1, 2010. NVIDIA CUDA Programming Guide Version 2.3.1, 2009.
(Knowledge + Technology + Life)