from my understanding the main 2 differences between a gpu and cpu are:
the cpu can access large amounts of data from the ram and can coherently manage it between a single line of calculations so that each calculation can be made aware of the results of other ones easily, whereas the gpu can do a ******** of calculations, but the cannot be interdependant.
The other difference is the instruction sets. The cpu has a vastly more expansive set of different instructions and calculations it can perform, whereas the gpu is much more limited to simpler things.