You are viewing the course site for a past offering of this course. The current offering may be found here.
Lecture 24: High Performance Image Processing & Halide (19)
sean-dooher

The code in this slide is using the Intel SSE vector extensions. These increase performance on performing the same operation on many different pieces of data at once (SIMD). Intel's approach is known as a packed SIMD approach which has fixed sized vectors for adding code. However, this can lead to complicated code and it is not the only method of vectorization in architectures. RISC-V, for example, uses a style of vectorization with variable length vectors that is modelled after old Cray-style vector supercomputers. This can lead to easier to write and more flexible code with less remainder loops and so on. If you are interested in these and how they are implemented in computer architecture I highly recommend taking 152!

Here's an article by Dave Patterson on Intel SIMD vs RISC-V vectors: https://www.sigarch.org/simd-instructions-considered-harmful/

152 Lecture slides on vectors: http://www-inst.eecs.berkeley.edu/~cs152/sp19/lectures/L15-Vectors.pdf

nathanpetreaca

To add to the above, you may recall using these in CS61c for example in this project http://inst.eecs.berkeley.edu/~cs61c/fa18/projs/02/.

youtuyy

To be more specific about SMID, SIMD (Single Instruction Multiple Data) is an instruction set available mostly on all current processors. SIMD instructions give data-level parallelism on a unit (vector of data). A single instruction is executed in parallel on multiple data points as opposed to executing multiple instructions. This improves the performance of application. Here is a detailed description from Intel https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference

You must be enrolled in the course to comment