Well... I want to broaden my horizon. The intended use so far is for computational statistics and machine learning. So, CUDA: 1. NVIDIA only. 2. Propietary (So continuous support from NVIDIA is almost guaranteed, but vendor lock-in). 3. Have better performance than OpenCL (from what I've read). OpenCL: 1. ATI/AMD and NVIDIA graphic card can use this. 2. Since ATI is an option, they say ATI card gives more "bang for the buck" than NVIDIA. I haven't researched about this. 3. Open Source. To be honest, my heart lean to OpenCL than CUDA for my first time learning. Recommend me which one should I learn first?
If you are starting fresh, I would recommend CUDA. There are already many pre existing libraries. The bang for buck argument is no longer valid due to the mining craze.
For fun right now. Not really fun, but I have some interest in this and want to see if this is worth pursuing. No work pressure or something like that.
it's a question of practicality. if you're just starting to learn, consider what's available to you, which is, the course/books you're going to use, the language you're using, the hardware you currently have and how active the community is. It's not just about "performance" or being "proprietary". Because if most of your prospective companies are using these technologies, you're only going to screw yourself over if you use a divergent library. anyway, in the end, you can relearn how to use the corresponding modules/libraries, what matters is your foundation on the theories and application of the knowledge.