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?

  • I've found this to be a useful description of how a modern GPU draws polygons. The shaders (cuda cores for Nvidia) are very intimately involved in defining how a "polygon" is drawn and it does seem to imply that the shader cores do resolve the actual triangles and deal with pixel output. It is ARM processor based but the GPU principle is the same. – Mokubai Dec 24 '14 at 12:58
  • @Mokubai Thanks for linking the article, it is nice read on GPU drawing. I see why it is relevant, but it's doesn't help much with the specific case of CUDA cores. – Remy Baratte Dec 24 '14 at 13:35
up vote 2 down vote accepted

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.

  • Thank you for clarifying the unified cores being able to process any shader. "CUDA is simply Nvidias API that gives developers access to the cores on the GPU." is what I was looking for. As long as the GPU is not saturated I should be able to use it's leftover computing power using CUDA. – Remy Baratte Dec 24 '14 at 14:33
  • I would recommend GPU-z to see what is going on with your graphics card. As an example I can play Far Cry 3 on "ultra" settings and max out my GPU load to 98%, but if I simply turn off anti-aliasing and reduce the post processing (with little real loss in graphics quality) my GPU load falls to 45-55%. You will want to enable vertical sync in games as it provides a "pause" before the next frame needs to be generated and thus pauses the processing of the graphics shaders, with vsync off frames are generated as fast as possible meaning full graphics load. – Mokubai Dec 24 '14 at 14:48
  • I personally use Adaptive V-sync right now although the tearing is worse in some games. My GPU usually sits around 50-80% on max on most games (GTX 970 MSI). I tend to tweak some Post-Processing and AA to noticable levels or according to frames/load (usually negligible). I use MSI Afterburner to monitor the usage and I have room to overclock for a ~10% increase if I really needed the extra juice. I just wasn't sure if rendering or converting stuff using CUDA would bottle game performance as it isn't made explicitly clear. – Remy Baratte Dec 24 '14 at 15:10

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.