A CPU is a limited number of multi-purpose processors. Each core can execute a complex task from start to finish and does it step by step.
A GPU is a large number of purpose built processors with extremely high bandwidth for heavy parallel processing. Each core can do a small, less complex, task very quickly so the end result is a lot of fast processing.
They can't really be directly compared unless they are doing the same tasks. And if the GPU is doing a more CPU oriented task it will be very slow. And the same is true of things like rendering using a CPU.
Another way of putting it is GPUs are designed as a single instruction, multiple data (SIMD) processor. For example, this is a diagram of an execution unit in a RTX 30 GPU:
This structure is called an SM. For each SM, there's four blocks of execution units, each with 32 units that can calculate something (plus others but we'll ignore those to keep it simple). Each of those blocks of execution units can only run one instruction. So basically, one instruction will process 32 pieces of data. If you need to run two instructions, you have to run them on two separate blocks.
To contrast with a CPU, here's a block diagram of an older Intel Core part (Intel's later processors still use this design)
The bottom block is the execution group of a CPU core. If you notice, there's lots of different sub-blocks connected to a port that can do something. Each of these sub-blocks can process an instruction, meaning that up to 6 instructions can be executed at once. However, that only means up to 6 pieces of data will be processed. This processing type is called Multiple Instruction, Multiple Data (MIMD). However, note that a multi-core processor can act like a SIMD one depending on the workload.
Another thing of note is CPUs tend to spend a lot of their processing time processing instructions, not so much the data that its working on.