LecNote-9-并行计算中的任务分配.pptVIP

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LecNote-9-并行计算中的任务分配

第九讲 并行计算中的任务分配 任务分配方法 静态任务分配 动态任务分配 动态任务分配的实现 对等协同:peer-to-peer collaborating 集中调度:master-slave POSIX并行程序中的计算任务划分 对等协同 锁 信号量 CELL BE上的计算任务划分 集中调度 邮箱 DMA数据传输 并行算法设计:BSP与PCAM BSP:子任务在时间和空间上的规划 时间上的规划:整个算法由若干个串行执行的superstep组成 空间上的规划:每个superstep上包含一组互相独立的子任务 PCAM:发现问题中的子任务、产生规划的方法 P:通过功能分解、数据分解,寻找并行性。解决两方面的问题 并行程序的伸缩性 并行计算任务划分的负载均衡性 C:检查子任务间的依赖关系,发现规划必须满足的约束条件 A:选择合适的子任务粒度,减小并行计算的额外开销 子任务分配开销 子任务间的通信开销 子任务间的同步开销 M:将子任务组织成若干个superstep 并行计算中的任务分配方法 并行算法设计的结果: BSP模型 若干个顺序执行的superstep 每个superstep上是一组互相独立的子任务 这些子任务是通过功能分解发现的:子任务的数量有限、与被处理数据的规模无关 这些子任务是通过数据分解发现的:被处理的数据规模越大,子任务的数量越多 在每个superstep上,如何确定各个处理器/执行内核上的子任务 静态任务分配:在开始superstep上的数据处理之前,已经确定了需要执行其中的哪些子任务 例如N-Body问题的实现 动态任务分配:superstep的数据处理过程中,动态确定每个处理器/执行内核上的子任务。 例如求素数问题 静态任务分配:通过功能分解得到superstep上的一组子任务 每个子任务分别实现一个子功能,子任务的数量有限 一个处理器/执行内核负责一个子任务 并行程序伸缩性(scalability)不好 负载均衡难以控制:取决于子任务算法的复杂性、所涉及的数据规模等 子任务之间的关系 形式1:互相独立,各自处理不同的数据集合 形式2:构成一个流水,依次对一组数据集合进行处理。数据集合的数量很大 静态任务分配:通过数据分解得到superstep上的一组子任务 各个子任务的数据处理功能相同,各自处理不同的数据集合 子任务之间互相独立 子任务的数量大 一个处理器/执行内核在开始superstep上的数据处理之前,先确定需要处理其中哪些子任务 并行程序有好的伸缩性(scalability) 负载均衡问题 子任务具有相同的运算量、且处理器/执行内核的性能相同,具有好的负载均衡性 例如在Intel多核处理器上执行Laplace计算 子任务的运算量不一致、或者处理器/执行内核的性能不一致时,难以控制负载均衡。例如 在Intel多核处理器上执行求素数计算 在CELL处理器上执行Laplace计算,让PPE和8个SPE分别负责一部分数据处理 静态任务分配在POSIX线程并行程序中的实现 superstep上的子任务是通过功能分解发现的:每个子任务分别处理不同的数据集合 为每个子任务各编写一个函数,分别由一个并发线程执行 superstep上的子任务是通过功能分解发现:每个数据集合要经过这些子任务依次处理——流水并行 每个子任务分别开发一个函数,各由一个线程执行 子任务之间通过条件信号进行同步 superstep上的子任务是通过数据分解发现的:数据并行——子任务的数量确定、子任务的复杂性一致 编写一个函数 根据并发线程的数量和自己的ID,计算自己负责哪些子任务 实现子任务的数据处理功能 创建多个并发线程,同时执行这个函数 动态任务分配 动态任务分配:处理器/执行内核完成一个子任务后,再分配一个新的子任务 什么样的并行子任务能够动态分配?基于数据分解发现的子任务 各个处理器/执行内核运行的算法要相同:都能实现子任务需要的数据处理功能 子任务要互相独立,分别处理不同的数据集合 为什么需要动态任务分配?平衡负载 子任务的计算量不一致。例如求素数问题 处理器/执行内核的性能不一致。例如:在CELL处理器上,让PPE和8个SPE分别负责一部分子任务的处理 子任务的数量不确定。例如 图书馆查询、银行记帐等大规模并发用户的计算问题 处理一个数据文件中的记录,每个记录作为一个子任务分别处理。各个记录不定长,读到文件末尾才知道总的记录数。例如:一个稀疏矩阵与向量的乘法运算,部分行中全部是0元素。稀疏矩阵按照行优先存储在文件中 动态任务分配的实现 可以将整个superstep看做一个“子任务池”( pool) 每次从“子任务池”中取一个出来,交给当前空闲的某个处理器/执行内核去执行 实现方式1:对等协同的(peer-to-peer collabora

文档评论(0)

zijingling + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档