=== Week 5 - Class I ===
** SIMD is an acronym for "Single Instruction, Multiple Data", and refers to a class of instructions which perform the same operation on several separate pieces of data in parallel. SIMD instructions also include related instructions to set up data for SIMD processing, and to summarize results.
** SIMD is based on very wide registers (128 bits to 2048 bits on implementations current as of 2019), and these wide registers can be treated as multiple "lanes" of similar data. These SIMD registers, also called vector registers, can therefore be thought of as small arrays of values.
*#* This works for the basic SIMD operations, but may not be applicable to advanced SIMD instructions, which don't clearly map to C statements.
*#* The compiler will be very cautious about vectorizing code. See the Resources section below for insight into these challenges.
*#* Vectorization in applied by default only at the -O3 level in most compilers. *# [[Inline Assembly Language|Inline Assembler]]*# C Intrinsics
* [[SPO600 Vectorization Lab|Vectorization Lab]] (Optional lab - recommended)
=== Week 5 - Class II ===