15

I just cant understand whats the diffrence between them...

is SPMD is in the programming level and SIMD in the hardware level ?

example would be good !

thanks

skaffman
  • 398,947
  • 96
  • 818
  • 769
RanZilber
  • 1,840
  • 4
  • 31
  • 42

1 Answers1

13

SIMD is vectorization at the instruction level - each CPU instruction processes multiple data elements.

SPMD is a much higher level abstraction where processes or programs are split across multiple processors and operate on different subsets of the data.

Paul R
  • 208,748
  • 37
  • 389
  • 560
  • So if SIMD is about instruction on ONE cpu that can process multiple data - where is the parallelism here? is it the ability to manipulate multiple data ? – RanZilber Feb 16 '11 at 09:11
  • 3
    @RanZilber: yes, with SIMD in one instruction you process N data points instead of 1, where N is typically 4, 8 or 16 for typical SIMD implementations on common CPUs. So you get N-way data parallelism at the instruction level. – Paul R Feb 16 '11 at 09:13
  • @PaulR Maybe, it's clearer if you add a precision. With SPMD, you have a single program which takes the thread ID as an argument. This ID can be used in a switch case statement for example. –  Jan 29 '21 at 16:05