4 ms·
There's a degree of convergent evolution between CPUs and GPUs. The basic question is "what shall we do while waiting for memory". Branch prediction and specula
by JonChesterfield 3y ago
There's a degree of convergent evolution between CPUs and GPUs. The basic question is "what shall we do while waiting for memory". Branch prediction and speculative execution gives you a CPU, swap to another thread gives you a GPU.
The wide vector unit vs scalar unit choice is sort of orthogonal to that. I'd guess you reach for a GPU if the problem decomposes into lots of similar independent operations, at which point vector units are also what you want. And a CPU when there are deep data dependencies, where you're less likely to be able to pack the vector.
Implicitly vectorised code on a CPU might be interesting given the increasing variety of avx instructions. I'm interested in scalar workloads on a GPU but there's a credible chance performance won't work out well enough.