Designing software for multicore platforms is a significant challenge, as one has to break-down the work into items that can run concurrently. In this chapter we address the design problem from two perspectives: the decomposition and the program structure.
The decomposition problem is solved both at a low-level, by describing the PCAM methodology, that is a systematic approach to workload partitioning and mapping, and at a high-level by covering a large collection of decomposition patterns. The use of patterns allows software developers to gain from past experience. These patterns are explained through simple examples and their performance characteristics are analyzed.
Finally, commonly ...