并行编程——Foster设计方法

Foster设计方法是一个用于并行算法设计的四阶段过程,包括划分、通信、聚集和映射。划分涉及将计算和数据分解,通信关注任务间的数据交换,聚集旨在减少并行开销,映射则涉及任务分配到处理器的策略。该方法旨在提高并行性,平衡计算和通信,并优化可拓展性。
摘要由CSDN通过智能技术生成


Foster设计方法

定义

Foster设计方法由lan Foster提出,它是一个由四步构成的并行算法设计过程。Foster设计方法中的四步为划分、通信、聚集和映射。

Foster四步

1. 划分

为了发现并行算法的更多并行性,需要将计算和数据划分成许多小片。

域分解是一种并行程序设计方法,我们通常考虑程序中最大和最频繁访问的数据,先将数据分解成片,再考虑将计算和数据联系起来。

功能分解为域分解的补充策略。功能分解常常生成通过流水实现并发的任务的集合。

好的分解应当:

  • 原始任务数应当比处理器数高出一个数量级。
  • 冗余数据和冗余计算结构存储最小化。
  • 原始任务的大小大概相同。
  • 任务数是问题规模的一个增量函数。

2. 通信

并行算法的通信方式分为局部通信和全局通信两种。当一个任务为执行某个计算而需要来自少数其它任务的数据时使用局部通信,当一个任务为执行某个计算而需要来自大量其它任务的数据时使用全局通信。

好的通信应当:

  • 平衡任务间的操作数。
  • 每个任务仅仅与少数的邻居进行通信。
  • 任务能够并发地执行它们的通信。
  • 任务能够并发地执行它们的计算。

3. 聚集

考虑将原始任务合并成较大的任务,以减少并行开销的量。可以考虑将发送任务与接收任务合并以减少通信开销,可以考虑将发送任务组和接收任务组合并以减少任务间通信条数。发送相同数据量的少量长消息比多数短消息花费时间更短,因为每次消息发送都有一个消息启动的开销。
要维持程序并行的可拓展性,使得并行程序不需要为硬件的变化而重新设计。
减少软件开发的工程量,聚集使得可以利用更多原有的串行代码。

好的聚集应当:

  • 增加并行算法的局部性。
  • 复制的计算比它们所替代的通信花费时间要少。
  • 复制的数据总量足够小,使得算法具有可拓展性。
  • 聚集后的任务有相似的计算和通信开销。
  • 任务数是问题规模的一个增函数。
  • 任务数要尽可能少,但至少要和处理器的数目一样多。
  • 合理平衡聚集所带来的好处和修改现行串行代码所带来的好处。

4.映射

映射即将任务分配给处理器的过程。映射的目标是最大化处理器的利用率和最小化处理器之间的通信。

好的映射应当:

  • 考虑一个任务对应一个处理器和多个任务对应一个处理器的情况。
  • 已经评估了静态和动态地将任务分配给处理器。
  • 如果已经选择了将任务动态地分配给处理器,则分配者不是性能的瓶颈。
  • 如果已经选择了将任务静态地分配给处理器,则任务数与处理器数的比不低于10:1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值