Entry-level questions on some term relationships?

Hi, all:

A very entry-level question:

  1. What is the relationship between CG and CUDA?
  2. What is the relationship between GPU and OpenCL?
  3. What is the relationship between OpenCL and OpenGL?
  4. What is ATI Stream SDK for? Is it corresponding to NVidia’s CUDA?

Sorry, so many fundamental questions. Expecting your detailed explanation.

Best Regards
Pei

What is the relationship between GPU and OpenCL?

GPU is a piece of hardware, a microchip inside your PC. OpenCL is one kind of software that lets you use that microchip.

  1. What is the relationship between OpenCL and OpenGL?

Two different software packages with two different objectives. OpenCL allows you to accelerate many different kinds of programs. OpenGL has a narrow objective of making it as easy as possible for you to write fast programs that render 3-dimensional scenes on your screen. (For example, I’m pretty sure that it’s possible to write a simple program that draws a rotating cube on your screen with less than 100 lines of code if you use OpenGL.) OpenCL is much more flexible and much less specialized. The commonality is that both are very likely to be accelerated by the video card hardware (the GPU).

  1. What is ATI Stream SDK for? Is it corresponding to NVidia’s CUDA?

Yes, ATI Stream SDK roughly corresponds to NVIDIA CUDA. However, ATI Stream SDK only implements OpenCL, but CUDA SDK implements both OpenCL and it’s own SDK (which is often also referred to as CUDA).