Foster's Design Methodology

Partition


  • Divide the problem into tasks
  • Intention is to identify and expose opportunities for parallel execution

Communication


  • Sharing data between computations
  • Determine amount and pattern of communication

Aglomeration


  • Combine or group tasks to improve performance

Mapping


  • Assign agglomerated tasks to threads/physical processors.