"Unified" in CUDA


This is a very simple question about CUDA. I read somewhere that CUDA archtecture has a “unified shader model”:

1- What do we exactly mean by a unified shader model ?

2- What are the various advantages of unified shaders?

3- When we are doing non-graphical processing on GPUs, what is the significance of shaders? (I understand that shaders are software instructions used in graphics programming, like pixel shaders, geometry shaders )


In FACT CUDA programming use the Scalar Processors (from 8 to 240 on each actual GPU) that is used on 3D rendering to process the shaders, and it doesn’t use “shaders” or “unified shaders”.

Unified shaders means that there’s the same PROGRAMMABLE units that do the whole processing instead having specialized units on the GPU, and it’s an important architecture difference in GeForce 8xxx (and over) from the GeForce 7xxx generations, it enables to programmatically use any shader (or Scalar Processor) for any part of the calculation of the 3D scene, without bottleneck when a kinda unit is saturated and the other waiting for data to process.

And these units where extended to be used as programmble computation units for CUDA GPGPU or OpenCL.

iAPX you said NVIDIA does not use Shaders neither Unified Shaders…then what is the meaning of “Unified” in 'CUDA"?

Previous generations (up to GeForce 7xxx series) had two different kinds of ‘shaders’. The vertex shader and the fragment shader which were executed by vertex processing units and fragment processing units respectively. In the unified model, both the vertex shader as well as the fragment shader are executed by the same hardware units (cfr. the scalar processor in CUDA)


May be it wasn’t clear, the point is :

CUDA use Scalar Processors for GPGPU computing.
“Unified Shaders” use the same Scalar Processors for 3D rendering.

But CUDA technology doesn’t use “Unified Shaders” that is just a 3D processing point-of-view of the Scalar Processor really used :-)