the name “memory parallelism” doesn't make sense. Or maybe it makes sense and I don't understand what the point of this pattern is.
Parallelism built around the data in a problem is data parallelism. So I assume this pattern is about something else. I assume its about organizing a computation around the way memory is laid out in memory.
Just to see if I understand the pattern, here is my start at writign the pattern. Can you tell me where I'm on the right (or wrong) track?
Problem: On modern computer systems, the costs of data movement can dominate the runtime of an application. How do you organize an algorithm around the layout of data in memory to minimize the impact of data movement on a computation's runtime?
Solution: Define the data strcutures in your problem and how they are laid out in memory. Then define computation relative to this layout. In other words, instead of defining a computation and then optimizing it to minimize data movement costs, start with the data. Understand how it is laid out in memory and organize a computation around that layout
Example 1: the SUMA algorithm for matrix multiplication. A geometric decomposition agorithms implemented in parallel with the SPMD pattern. The breakdown into rank-K update over panels of the matrix is defined by the data layout.
Example 2: the data parallel patterns implemented with the SIMD pattern for GPGPU workloads