GPU = Graphics Processing Unit (ex. Nvidia GeForce GTX 1050 Ti)
CPU = Central Processing Unit (ex. Intel Core i7)
When programming your graphics processor, there are a lot more moving parts compared to programming on the CPU. Coders go through the trouble of converting their CPU code to GPU code (where appropriate) in the name of speed. Faster processing is more valuable than liquid gold I tell you!
A GPU’s claim to fame in this soap opera is that it can run threads simultaneously, while a CPU can only run a single thread and process things sequentially. To demonstrate the point, watch this video from nVidia:
To keep track of all the threads in your nVidia GPU (all the miniature paintball guns in the video), there are a set of variables provided that helps you to keep track of all the processing/productivity going on in the background. Visit Elemar Jr’s Understanding the Basics of CUDA Thread Hierarchies to get an excellent understanding of how it all works.
I will dive into code in another post, but for now just understand the concept.