If I was building a computer, which item should I care about more?
From a practical standpoint you should probably pay quite a bit of attention to the motherboard and CPU given the relative difficulty of upgrading compared to the GPU. After purchase is an awful time to discover you don't have space for four GPUs or a fast enough processor to keep them all busy.
You should also be aware that GPU performance is most often reported in single-precision FLOPs, and drops quite a bit for double precision. If you need the extra precision in your simulations you'll end up well below the advertised speed.
Off to the software engineering races
There are really two primary concerns from a software standpoint, the Von Neumann bottleneck and programming model. The CPU has fairly good access to main memory, the GPU has a large amount of faster memory onboard. It's not unknown that the time moving data in and out of the GPU completely negates any speed win. In general the CPU is a winner for moderate computation on large amounts of data while the GPU excels at heavy computation on smaller amounts. All of which brings us to the programming model.
At a high level the problem is the ancient and honored MIMD/SIMD debate. Multiple-Instruction/Multiple-Data systems have been the big winners in general and commercial computing. In this model, which includes the SMP, there multiple processors each executing their own individual instruction stream. It's the computer equivalent of a French kitchen, where you direct a small number of skilled cooks to complete relatively complicated tasks.
Single-Instruction/Multiple-Data systems, on the other hand, more closely resemble a huge room full of clerks chained to their desks following instructions from a master controller. "Everybody ADD lines 3 and 5!" It was used in its pure form in the ILLIAC and some "mini-super" systems but lost out in the marketplace. Current GPUs are a close cousin, they're more flexible but share the same general philosophy.
To sum up briefly:
- For any given operation the CPU will be faster, while the GPU can perform many simultaneously. The difference is most apparent with 64-bit floats.
- CPU cores can operate on any memory address, data for the GPU must be packaged into a smaller area. You only win if you're doing enough computations to offset the transfer time.
- Code heavy in conditionals will typically be happier on the CPU.