Previous | Next --- Slide 17 of 63
Back to Lecture Thumbnails
cbfariasc

In other words, ISPC is the interface/abstraction that helps the programmer explicitly implement SIMD execution?

jyeung27

@cbfariasc I think the way David explained it to me once is that ISPC is essentially a scheduler that helps execute SIMD computations through assigning work to the "gangs."

yonkus

The way I understand this is that SPMD is just a way of thinking about the problem from a high level- we see computations that are repeated independently and so we know that they can be computed independently in a gang, but the SIMD is what actually does the dirty work of all the scheduling and masking like outlined in the second set of bullet points.

bmo

In addition to the other points, I like to think of it this way:

Abstraction (SPMD) SPMD provides an easy way for programmers to perform the same set of operations on multiple data in parallel. Programmers don't need to worry about how this is implemented on the hardware. More like a library.

Implementation (SIMD) Underlying implementation for SPMD. SIMD is the processor capability to perform same instruction on multiple data using vector registers and execution units.

Therefore, you can create a library for doing SPMD on processors that don't support SIMD, by creating threads to do the work instead of using SIMD. A good abstraction can change its implementation without breaking the clients/users.

Please log in to leave a comment.