ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

并行编程——Foster设计方法

2021-10-03 18:03:54  阅读:247  来源: 互联网

标签:并行算法 映射 编程 并行 通信 任务 Foster 处理器


Foster设计方法

定义

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

Foster四步

1. 划分

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

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

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

好的分解应当:

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

2. 通信

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

好的通信应当:

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

3. 聚集

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

好的聚集应当:

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

4.映射

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

好的映射应当:

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

标签:并行算法,映射,编程,并行,通信,任务,Foster,处理器
来源: https://blog.csdn.net/saoqi_boy/article/details/120583258

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有