What is CUDA? How is it linked to NVIDIA? What does CUDA have to do with GPU? What is OpenGL? How is linked to GPU? What are the differences between CUDA and OpenGL? Is it restricted to any particular graphics card family?