Robert C. Green II Ph.D.

CS 4170/5170: Introduction to Parallel Programming - Fall 2026

Interactive companions to the lectures. Each one is a single page: concept map, animations, predict-then-reveal questions, step-by-step runs on OSC, and a self-check. Nothing is recorded; progress is kept in your own browser.

Module Page What it covers
MPI I Processes, Messages, and the Machine Six separate rooms: SPMD, the four-call skeleton, Send/Recv, Probe before Recv, barrier-fenced timing, Slurm and one-process-per-node
MPI II Splitting the Work, Timing It, Talking to It The trapezoid split by rank, linear vs tree merge, the cost model and when splitting pays, whose clock counts, who does I/O
One File, Three Questions Code walk: the hand merge, designing MPI_Reduce and MPI_Bcast, the n/p bug that prints a plausible answer, the fix, timing rules
MPI III Moving the Data, Not Just the Answer Scatter/Gather and the bytes bill, Scatterv counts and displs, the collectives family and rules, t(m) = α + m·β and the 40 KB crossover
Five Ways to Add Two Vectors Code walk: the N/p and ANY_SOURCE bugs, counts and displs by hand, the same in three calls, cyclic deals and the pack loop
MPI IV Describe the Data, Don't Copy It Struct padding and offsets, size vs extent, Type_vector for a column, resized types, Boost.MPI and what the wrapper costs
One Record, One Column, One Deal Code walk: the guessed-offsets bug byte by byte, pack and position, Boost serialize, the column, the resized cyclic scatter
MPI V Who Am I Talking To? Comm_split color and key, context and dup, the ragged two-stage sum, groups, Cartesian grids, Cart_shift and PROC_NULL, strips vs blocks
MPI VI Hang, Wrong, Crash, Silent Sorting every bug by symptom, eager vs rendezvous, choosing p from the shape, tracing a hang, error handlers, the silent Bcast, one model for R01–R04
MPI Review MPI Quiz/Exam Review Messages, costs, and the bugs that pass. Weeks 3–8: SPMD, collectives, the cost model, derived types, communicators, hang/wrong/crash/silent, metrics
Foundations I Where the Data Lives The memory ladder measured, the 64-byte line, row vs column traversal, first touch and NUMA, the roofline and where AXPY sits
OpenMP I One Process, Many Threads Fork/join, parallel for and the schedule, shared/private/firstprivate, the race, critical vs atomic vs reduction, running it on Cardinal
The Trapezoid, Three Ways, in Threads Code walk: TrapRule1/2/3, the int-coordinate and remainder bugs, what a critical section holds, the fixed split, floating-point order, running it on Cardinal
OpenMP II A Must Precede B Flow, anti and output dependence, what removing each costs, the prefix-sum scan, odd–even sort and the barrier, why a racy loop passes k of 100 runs, how to detect it