Note that OpenGL and OpenCL are two distinct things. OpenGL is a graphics interface library, whereas OpenCL is an API for parallel computation. Both are relevant for GPU programming.
You can access the GPU via CUDA programming or OpenCL. CUDA is definitely Nvidia specific, whereas OpenCL seems to apply to both AMD and Nvidia hardware, perhaps others.
Tom's Computer Info / tom@mmto.org