If you use OpenCL, you can easily use it on both Windows and Linux, because it is enough to display the drivers to run OpenCL programs, and for programming you just need to install the SDK. CUDA has more requirements for specific versions of GCC, etc. But installing it on Linux is also not so difficult.
On Linux, CUDA has strange requirements, such as using GCC 4.6 or 4.7. If you use a different version of GCC, you can no longer compile it. If you use OpenCL, you can use any compiler, because you just need to link to the shared OpenCL library. Thus, OpenCL is easier to configure, use, and compile. Once you compile the OpenCL program, it can be run on any hardware (if it is encoded for this), even if it was compiled using another OpenCL SDK brand.
You can write OpenCL programs that will run on Nvidia, AMD, and Intel devices, on GPUs, processors, and accelerators. Moreover, Altera is working on OpenCL support on FPGA! If you use CUDA, you will have to use only Nvidia GPUs and re-write your code again in OpenCL or in another language for other platforms. A serious limitation on the use of CUDA and a serious waste of time in the long run.
I see that someone posted some old links between CUDA and OpenCL, but they are old! When these documents were missing, only AMD correctly supported OpenCL. Since 2013, OpenCL has been supported by ARM, Altera, Intel, etc., and has become an industry standard.
The only drawback is that since OpenCL is so flexible, you come across a lot of options and methods for allocating memory, transferring, etc. in your program. Therefore, perhaps he may feel more complex.
Evren Yurtesen Oct 11 '13 at 11:47
source share