[ELI5] Why is SIMD still important to include in a CPU. When GPUs exist and serve the exact same purpose?

254 viewsOtherTechnology

SIMD to my understanding is supposed to accelerate 3D Processing and other multimedia processing. GPUs do the exact same thing but instead they’re dedicated into doing that role. I heard SIMD is an early attempt to make 3D Processing possible on CPUs

“GPU is a compute device which implements a SIMD (Single Instruction Multiple Data) in a much more multi-threaded fashoin, in fact SIMD is coined as SIMT (Single Instruction, Multiple Thread) in a GPU. So basically GPU is a an extension of the SIMD paradigm with large scale multi-threading, streaming memory and dynamic scheduling”

-Gary Cole, Quora

Unless I’m wrong. And there are many other things SIMD can be useful for other than Multimedia use and can help with traditional CPU tasks like integer operations but I have not found any info of SIMD being used outside of Multimedia use. It could do operations related to Audio which is very handy but couldn’t they instead be handled by a Digital Signal Processing?

My understanding of computer science is limited so I may gather a ton of knowledge to learn with this post

In: Technology

5 Answers

Anonymous 0 Comments

Other answers about the cost of copying data are on point, but you should also understand that CPUs and GPUs are designed for different kinds of programs.

CPUs are optimized for ‘sequential’ programs, where there is very little work available to do in parallel. GPUs are the opposite, they are built for programs with TONS of available parallelism.

What that means is a GPU is really really really bad at running sequential programs. You want those on the CPU. But sometimes, within the sequential program, there are short bursts of parallelism. It would be nice to be able to run those as efficiently as possible. As others have said, copying the data to a GPU is too expensive. So SIMD instructions on CPUs help you get some performance at low cost.

Note that, historically, many SIMD machines were big vector processors that are much closer to modern GPUs in their design and target applications than current CPUs. GPUs are technically ‘SIMT’ processors, but the distinction between SIMD and SIMT is really inconsequential for your question, and you can accurately think of a GPU as a SIMD processor.

You are viewing 1 out of 5 answers, click here to view all answers.