Are CUDA cores the same as rendering cores on a GPU

cudagpugraphics cardnvidia-graphics-card

After reading into CUDA cores I am under the assumption that the CUDA cores are just the normal cores of the GPU. They can be used to perform physics calculation to unload the CPU using PhysX or they can be used to perform other computation intesive work such as encoding/rendering which is often slower on a CPU. This also assumes that rendering graphics is nothing more than lots of computing which is correct to my knowledge.

The context for asking is that I would like to know if it is feasible to play games and render/convert stuff at the same time, increasing productivity while my machine is on.

Are CUDA cores the working cores of the GPU or are they seperate cores which can be used exclusively for computation?

Best Answer

Modern graphics engines are based on shaders. Shaders are programs that run on graphics hardware to produce geometry (the scene), images (the rendered scene), and then pixel based post-effects.

From the Wikipedia article on shaders:

Shaders are simple programs that describe the traits of either a vertex or a pixel. Vertex shaders describe the traits (position, texture coordinates, colors, etc.) of a vertex, while pixel shaders describe the traits (color, z-depth and alpha value) of a pixel. A vertex shader is called for each vertex in a primitive (possibly after tessellation); thus one vertex in, one (updated) vertex out. Each vertex is then rendered as a series of pixels onto a surface (block of memory) that will eventually be sent to the screen.

Modern graphics cards have between hundreds and thousands of computational cores that are capable of executing these shaders. They used to be split between geometry, vertex and pixel shaders but the architecture is now unified, a core is capable of executing any type of shader. This allows a much better use of resources as a game engine and/or graphics card driver can adjust how many shaders get apropriated to which task. More cores allocated to geometry shaders can give you more detail in the landscape, more cores allocated to pixel shading can give better after effects such as motion blur or lighting effects.

Essentially for every pixel you see on the screen a number of shaders are run at various levels on the computational cores that are available.

CUDA is simply Nvidias API that gives developers access to the cores on the GPU. While I have heard the term "CUDA core", in graphics a CUDA core is analogous to a stream processor which is the type of processing core that the graphics cards use. CUDA runs programs on the graphics cores, the programs can be shaders or they can be compute tasks to do highly parallel tasks such as video encoding.

If you turn down the level of detail in a game you can feasibly reduce the computational load on the graphics card to a point where you can use it to do other things, but unless you can tell those other tasks to slow down as well then they are likely to try and hog the graphics processor cores and make your game unplayable.

Related Question