Graph partitioning comments
I worry that this problem statement could almost work just as well for the “graphical algorithms’ pattern. It needs to be more narrowly focused. How about:
Notes from the class workshop 4/8
What should the graph be representing?
There are two categories of graph representations:
Your context section assumes the reader already knows about parallel graph algorithms and graph partitioning. Remember, the goal is to setup the context of the problem such that it leads you into graph partitioning as a solution.
I’d reorganize your content to stress the following progression:
Then define the graph partitioning problem as a technique to effectively address all three of these points. In other words, don’t assume the reader knows all about graph partitioning. Lead them to this problem.
Notes from class workshop 4/8
(note: task vs data representation in the graph is mixed here, comments address both cases)
The forces were fine.
The solution was good. I thought it was a useful summary of the key approaches used. I liked the use of clear pedagogical examples.
Notes from class workshop 4/8
Forces = Universal forces
Last sentence in the second force - unclear
Solution
Make sure to address the Forces, highlight important trade-offs.
Add mapping & locality discussion (implementation layer).
1. Find representation model - add data structure as something that can be represented as a graph.
Add examples to the graph structure descriptions.
If this is an implementation strategy pattern - move the partitioning algorithm description to an appendix and focus on the implementation considerations such as load-balancing and locality
Invariant
Tasks don't need data outside of their partition during computation
Sum of tasks in the partitions = total set of tasks
Add 3. what do you do after you decompose, how does it help parallelism (implementation layer)
This pattern appears at a low level in the pattern language where we should be guiding the user to solutions expressed as actual source code. Hence, I’d carry your example through to show pseudo code or better yet and actual working program using your API of choice.
Sparse matrix-vector multiplication is OK, but I’d prefer a more complex example … maybe a PDE solver.
You forgot the “known uses” and an “Other Patterns” sections.