Foster设计方法由lan Foster提出,它是一个由四步构成的并行算法设计过程。Foster设计方法中的四步为划分、通信、聚集和映射。
为了发现并行算法的更多并行性,需要将计算和数据划分成许多小片。
域分解是一种并行程序设计方法,我们通常考虑程序中最大和最频繁访问的数据,先将数据分解成片,再考虑将计算和数据联系起来。
功能分解为域分解的补充策略。功能分解常常生成通过流水实现并发的任务的集合。
好的分解应当:
并行算法的通信方式分为局部通信和全局通信两种。当一个任务为执行某个计算而需要来自少数其它任务的数据时使用局部通信,当一个任务为执行某个计算而需要来自大量其它任务的数据时使用全局通信。
好的通信应当:
考虑将原始任务合并成较大的任务,以减少并行开销的量。可以考虑将发送任务与接收任务合并以减少通信开销,可以考虑将发送任务组和接收任务组合并以减少任务间通信条数。发送相同数据量的少量长消息比多数短消息花费时间更短,因为每次消息发送都有一个消息启动的开销。
要维持程序并行的可拓展性,使得并行程序不需要为硬件的变化而重新设计。
减少软件开发的工程量,聚集使得可以利用更多原有的串行代码。
好的聚集应当:
映射即将任务分配给处理器的过程。映射的目标是最大化处理器的利用率和最小化处理器之间的通信。
好的映射应当: