CUDA stands for "Compute Unified Device Architecture" CUDA
OpenCL stands for "Open Computing Language" OpenCL
Regarding CUDA running on Nvidia, mining bitcoins on AMD GPU perform significantly better than mining on NVIDIA GPUs. This had been something that I'd been curious about. I've read that it is because the SHA-256 algorithm to mine bitcoin uses 32-bit integer right rotate operation. The rotation can been done AMD GPUs in a single step while NVIDIA GPUs require three steps. I'm curious about how certain architectural implementations can affect performance in a variety of situations.
@acfeng, Different architectural decisions can definitely affect performance a lot in certain situations. One thing that comes to mind is tessellation. I remember back when DirectX 11 was released, Nvidia's implementation of the hardware tessellation units on their GPUs gave a massive performance advantage over AMD GPUs. Newer AMD GPUs have caught up a bit with tessellation performance, but Nvidia is still ahead.
OpenGL stands for "Open Graphic Library"... OpenGL