Computing C = A × B for 8×8 matrices. Each output cell
C[i][j] is an independent dot product — computing one never needs another. That makes
matrix multiply embarrassingly parallel: split the rows across workers and they all fill in
at once.
Why it's the textbook case: every worker only reads A and B (shared, no conflict) and only writes its own cells of C — no two workers ever touch the same cell, so there's no race condition. The work is uniform (every cell costs the same dot product), so simple static load balancing — a fixed band of rows each — is perfect. This is Lab 1 (OpenMP) and Lab 3 (CUDA, one thread per cell).