Parallel Processing — Course Materials
A hands-on course on how modern computers run thousands of things at once — from Flynn's taxonomy and cache coherence to writing real parallel programs in OpenMP, MPI, and CUDA. Concepts first, then code.
The end of the free lunch, concurrency vs parallelism vs multitasking, where speedup comes from
SISD, SIMD, MISD, MIMD; shared vs distributed vs hybrid memory
Bus, crossbar, multistage, hypercube, mesh, torus — how processors talk
The cache coherence problem, MESI protocol, SMP vs AMP
Decomposition, granularity, dependency graphs, the PCAM method
Speedup, efficiency, scalability, Amdahl's Law vs Gustafson's Law
Shared-memory parallelism, directives, reductions, matrix multiplication (Lab 1)
Distributed-memory programming, send/recv, collectives, parallel sort (Lab 2)
Simulations, parallel databases, data mining at scale
Hadoop, the MapReduce model, Apache Spark
Hand-picked tools, courses, and papers for learning parallel computing
Prepared by Rajiv Ramakrishnan