English
Topic 7. SIMD vectorization in .NET and parallel linear algebra algorithms
Goal: become familiar with vector registers, SIMD instruction sets, and the vectorization tools of the .NET platform; learn to write vectorized loops with Vector<T> and Vector128/256/512<T>, using masks and tail handling, and to use TensorPrimitives; master combining SIMD with multithreading in linear algebra algorithms, measuring speedup, and verifying results against a scalar version.
Lecture contents
- SIMD and System.Numerics types — SIMD in modern processors · The Vector<T> type and System.Numerics types
- Fixed-width vectors and intrinsics — Fixed-width vectors · Platform intrinsics
- Memory, the tail, and TensorPrimitives — Working with memory and handling the tail · The TensorPrimitives library · SIMD and multithreading
- Linear algebra and performance — BLAS levels and matrix multiplication · Parallel methods for solving linear systems · Measuring and analyzing performance
- Examples and common mistakes — Program examples · Common mistakes