基于任务复制的异构集群并行程序的执行

\begin{align} \Large{\textbf{基于任务复制的异构集群并行程序的执行}} \end{align}
概述:在本文中,我们在一个异构的计算机集群中使用一种基于重复任务调度方法。基于重复调度方法是为了减少有相关联的任务之间的通信操作,在这里关键任务被多次分配到多台机器上,而随后的任务的开始时间也会减少。这种任务重复的过程也会不均匀地被各个系统所处理,那些关键的任务会被分配或者复制到运行得更快的机器中。这个算法已经应用到我们的原型程序并行化工具中,这个工具是为了生成可在一个奔腾计算机集群上运行的MPI代码。我们的实验使用3种数值计算应用表明异构的计算机集群正成为一个不可避免的趋势,也说明其确实有利于对并行程序的执行优化。

关键字:调度,任务图,算法,并行处理,异构系统,计算机集群计算,任务重复,资源管理。


1、介绍
       近年来,我们看到越来越多使用高速网络连接的计算机解决许多计算密集型问题的并行应用程序。使用计算机集群的并行处理,通常也称为集群计算,能够使一个比以往任何时候更大的用户社区在一个现成的平台有效地解决许多困难的优化问题。然而,实现有效的目标集群计算的任务需要处理大量的资源管理问题,其中一个最重要的问题就是任务的调度。事实上,有效地利用这种异构集群的聚合计算能力,关键在于如何明智地在机器上分配任务和制定任务序列。从广义上讲,调度问题中存在两种形式:动态和静态。在动态调度中,在任务的执行之前只能对并行任务进行一些假设,因此,必须使动态调度决策。一个这样动态调度算法的目标不仅包括最小化项目的完成时间,而且包括最小化调度开销,这也是调度程序运行成本计算中的很大一部分。在集群计算机环境中,这样的动态调度算法通常采用的所谓“空闲周期窃取”的方法,它试图动态地把工作负载均匀地分散到所有的机器上。然而,当调度的目标是尽量减少并行应用程序的执行时间,这样的动态调度策略不合适。
       另一方面, 使用静态调度算法的方法,它可以使用更长时间来生成一个优化的离线调度策略。这对许多科学应用尤其有效,比如自适应性模拟n体问题、使用迭代的对象识别图像处理算法,和其他一些数值应用等,因为这样的应用程序可以在编译时就可以确定其特征。因此并行程序可以用一个有向无环图来表示,任务的节点权重代表任务处理时间和边的权值表示数据依赖关系以及任务之间的通信时间。一般来说静态调度问题是非完全多项式和可以在许多启发式并行机器调度相关的文献中找到。然而,集群的任务的调度问题是一个相对较少探讨的话题。具体来说, 在集群计算的调度问题中有两个困难的研究问题需要解决:
1) 通信开销:
       相对于机器的处理能力来说,计算机网络的通信开销仍然是非常不可忽视的。因此,为了避免过度的并行通信开销,任务通信的数量应该尽可能小。
2) 异构性:
       在不断进行升级的计算机集群中,硬件配置差异性是不可避免的。这些差异性对一些高度常规的应用程序(例如,一些数据并行问题)可能是一个潜在的问题。

在这项研究中,我们将任务复制的方法应用到集群任务调度。在基于复制任务的调度中,为了减少有关联的任务之间的通信操作,关键任务会被分配到多个机器中,这接下来的任务的开始时间也减少了。这里可以在很多文献中找到任务复制的方法。然而,这些方法都为了设计均匀的并行体系结构。此外,前人的方法的评估方式都是使用模拟而不是真实并行编译器的应用程序。在我们的方法中,复制过程是通过跟踪任务的异构系统给出的关键路径图来将任务分配或者复制到更快的机器中。任务重复对异构系统来说确实是尤其有效,因为应用程序的整体完成时间通常可以由一个子集任务决定( 即关键路径,在第二节中详细讨论),这放到更快的机器上执行。我们的原型程序并行化工具中实现了该基于复制的调度的算法,这个工具产生的MPI代码可以在奔腾计算机上执行。我们的测试系统示意图见图1。在通过快速以太网交换机连接奔腾II计算机异构集群中,我们使用几个实际应用证明了复制技术是可以非常有效的减少应用程序的完成时间。本文的其余部分组织如下。在下一节中,我们将详细描述模型使用和复制算法的设计思路。第三节包括我们的性能研究的结果。最后一节总结了全文。

图1、支持对异构系统的高性能计算集群。

\begin{align} 图1、支持对异构系统的高性能计算集群。 \end{align}
2、 异构计算机集群的调度
       在本节中,我们首先描述调度模型,然后讨论了重复技术在我们的并行代码生成器的调度模块中的使用。

2.1 模型
      并行程序是由n任务{T1,T2,...,Tn T_1, T_2, ... , T_n}组成,其中有一个偏序关系:,Ti<TjT_i 意味着直到TiT_i 完成后TjT_j 才能开始执行,因为它们之间存在数据依赖关系。因此,并行程序可以用一个有向无环图任务来表示。并行性存在于独立任务之间——TiT_i和TjT_j 独立指不存在Ti<TjT_i<T_j 和 Tj<TiT j<Ti 。每个任务TiTi的执行时间τi\tau _i是指TiT_i 在参考的异构系统机器上的所需的执行时间。同样,通信成本CijC_{ij}是与从TiT_i到TjT_j 的消息MijM_{ij} 有关系。如果有ee条消息,其中(n−1)≤e<(n2)(n - 1)≤e ,则这个任务图是连通图。
       为了对有mm 个处理器{P1,P2,...,PmP_1, P_2, ... , P_m}的异构系统进行建模,这些异构因子也将会被用到。举个例子,如果一个任务TiTi 分配给一个处理器PxPx,那么其实际执行成本是由hixτih_{ix} \tau _i,其中hih_i 异构因子是由TiT_i 所使用的机器的处理器性能(如速度等)决定。类似地,如果一个消息MijM_{ij}是来自于处理器PxP_x和PyP_y之间的通信链路LxyL_{xy} ,其实际通信成本是由h′ijxycijh '_{ijxy}c_{ij}给出。一个并行程序图如图2所示。

图2、高斯消去法的任务图。

\begin{align} 图2、高斯消去法的任务图。 \end{align}
    消息 MijM_{ij}在通信链路 LxyL_{xy}上从 TiT_i到 TjT_j的开始时间和结束时间分别由 MST(Mij,Lxt)MST(M_{ij}, L_{xt})和 MFT(Mij,Lxy)表示MFT(M_{ij}, L_{xy})表示。很明显,我们有:

MFT(Mij,Lxy)=MST(Mij,Lxy)+h′ijxycij

MFT(M_{ij}, L_{xy}) = MST(M_{ij}, L_{xy} )+h'_{ijxy}c_{ij}

任务TiTi在处理器PxPx上的开始时间由ST(Ti,Px)ST(T_i, P_x)表示,这极度依赖于任务的数据准备时间(DRT)(DRT)。一个任务的DRTDRT被定义为最新消息与从其前一个消息的时间间隔。一个任务的完成时间由FT(Ti,Px)=ST(Ti,Px)+HixτiFT(T_i, P_x) = ST(T_i, P_x) + H_{ix}\tau_{i}给出。调度的目标是最大化FTFT,这也被 称为调度长度(STST)。

2.2 基于重复调度的并行代码生成
      CASCH(计算机辅助调度)工具是以复制调度为核心模块的。CASCH工具的系统结构如图3所示。它使用一个调度算法来执行调度,将一个顺序的程序生成一个任务图,然后通过该任务图按照预定形式生成能够在集群的工作站工作的并行代码。通过时序数据库,我们可以对任务和消息进行时序分配,而时序数据库可以通过分析基本操作得到。一旦生成任务图,则可以调用基于重复的调度程序。

图3、CASCH工具的组织。

\begin{align} 图3、CASCH工具的组织。 \end{align}
      为了最小化集群的应用程序的整体执行时间,调度程序必须首先确定哪些任务是更重要的,因为它们需要被安排在较早的时段开始,这也可能会对他们的祖先进行复制。在任务图中,关键路径CP指包含任务的最长路径,这是一个重要的结构,因为它可能会决定的整体执行时间。为了判断一个任务是否在关键路径之中,我们引入两个值: t−levelt-level(最高级别)和 b−levelb-level(最低级别) 。一个任务的 b−levelb-level是指这个任务开始后的最长路径长度。一个任务的 t−levelt-level是指到达该任务最长的路径长度。所以关键路径中的所有任务的 (b−levle+t−level)(b-levle + t-level)都相等,也等于关键路径的长度。基于CP的长度,我们可以很容易的对并行程序任务分为三类:CP(关键路径),IB(分支),和OB(分支)任务。IB任务是CP任务的祖先但不是CP任务本身。OB任务既不是CP也不是IB任务,它们相对地来说并不是重要。这个划分可以在 O(e)O(e)的时间内完成,因为所有的任务的 tt和bb都可以用深度优先搜索的计算。当一个任务的 b−levelb-level较大时较大时,那就意味着它是一个拥有长链的任务,因此,我们应该给予更高的优先级。下面的一个过程是通过划分任务的基础来构建一个调度列表。

算法1:构造调度列表
输入:一个拥有N个任务{T1,T2,……,TN}\{ T_1,T_2,……,T_N \}
的程序的任务图
输出:一系列任务的顺序
1、采用深度优先搜索计算出所有任务的t−levelt-level和b−levelb-level;
2、确定CP;如果有多个CPs,随机地选择执行时间最长的一条,然后随机断开CP;
3、将没有前驱任务的CP任务放到的有序表的开始位置;
4、i←2;Tx←下一个CP任务i ← 2 ; T_x ← 下一个CP任务;
5、while 没有将所有的CP任务包含到有序表中do
6 、if TxT_x 的所有前驱任务都在有序表中then
7、将TxT_x放到第i个位置,然后i自增1
8、else 让 TyT_y d成为TxT_x的前驱任务,这里的TxT_x包必须不在顺序列表中且有着最大的b−levelb-level。
9、如果TyT_y的所有前驱都在有序列表中,那么把TyT_y放到有序表中的第i位置,然后让i增1;否则递归地将TyT_y的所有的前驱任务放到有序表中,这样拥有最大的b−levelb-level的前驱任务就会被优先加进去了。
10、重复上面的操作直到TxT_x的前驱任务都加入到了有序表中。
11、将TxT_x放入到有序表中的i位置,将i自增1。
12、TxT_x← 下一个CP任务。
13、依据b−levelb-level递减的顺序将所有的OB任务加入到有序表中。

使用上面的调度列表,我们就可以确定哪些任务在复制过程中必须优先考虑。在调度过程中,CP任务总是被优先考虑的。然而,除非不依赖CP任务的前驱任务都已经被调度,否则我们无法安排所有的CP任务。所以,我们需要使用递归方法。对于每一个CP任务,我们首先递归检查它的前驱是否被安排。如果不是,那么调度候选队列将被调整成在调度列表前面的未调度的前驱任务。实际上安排一个任务,我们尽量将它安排到最快的机器以减少它的完成时间。重复是为了能够最小化完成时间,因为一个任务需要尽可能多的前驱任务被插到它之前。当任务的完成时间开始增加或者增加的时间已经用完时,复制过程就会停止。其中选择复制的前驱任务的顺序由调度列表来管理。而异构因子hixh_{ix}也会被用于确定完成时间。在所有的CP任务(和所有的IB任务)调度完成后,OB任务将被调度。为了避免使用过多的机器,我们不会对OB任务进行复制。这很有用,因为OB任务通常不影响整体完成时间,所以,它们并不需要尽快完成。但是,如果这样一个方法失效,没有复制的OB任务会引起整体完成时间的增加,然后相同的复制过程也会应用到OB任务中。这整个基于复制任务的调度过程如下算法2概括。

算法2:异构复制调度
输入:n任务的程序任务{T1,T2,……Tn}\{T1,T2,……Tn\},m机器的异构系统{P1,P2,……Pm}\{P1,P2,……Pm\},和机器的相对速度。
输出:一个重复的调度列表。
1.构建调度表(使用算法1)
2.对于每个CP任务,首先递归地分配它的所有未调度的前驱BI任务到一台机器上,因而它们能够通过同时复制更多前驱任务到多个机器上以加快完成(使用异构因子hixh_{ix}来确定完成时间)。复制任务的顺序由调度列表来管理;最后应用同样的递归过程到CP任务本身。
3.将余下任务(例如OB任务)不使用任何重复直接安排到最快的机器上以保证该调度列表的长度不增加;如果失败,就使用递归复制技术来安排OB任务。

关于如何利用机器的异构性,可以看图4中的高斯消去法任务图中的两个调度过程时间表(之前图1也展示过了)。在异构机器上,左边的图是没用用到复制技术的最好调度方式。而右边的图中使用了6台异构机器,其中P2P_2是与左图中机器是同样的速度的,而P0P_0和P1P_1的速度要分别是其2倍和1.3倍。剩下的机器均比P2P_2慢,我们可以发现任务图的CP分配给最快的机器P0P_0。而关键的CP任务T4T_4和jT5jT_5则以可能快地分别在机器P1P_1和P2P_2上完成,这两台机器上都复制了T1T_1。最后,全部任务在182个时间单位内完成,远远比没有使用复制技术的调度方式的330个时间单位快。由于篇符有限,这两个具体的调度列表就不在此列出了。

图4、异构性的影响。

\begin{align} 图4、异构性的影响。 \end{align}

在调度的特征生成之后,代码生成器就可以使用SPMD(Single Program Multimple Data)模型来实施调度过程了。将构成任务的程序语句或程序分配给指定的机器执行,通过机器的ID来检测执行状态,如图5所示。与此同时,与该任务相关联的数据结构也被复制。代码生成器的输出是一个插入MPI通信原语的C程序。然后由此产生的并行程序代码会在集群上的工作站被编译和执行。

基于任务复制的异构集群并行程序的执行相关推荐

  1. 国内首个基于Windows操作系统的GPU高性能计算集群研制成功

    国内首个基于Windows操作系统的GPU高性能计算集群研制成功 一个普通的实验室里,在一台普通的台式机上发出一条集群工作的指令,通过一个小小的交换机,三台计算机同时进行演算,一个蒙特卡洛的计算问题在 ...

  2. 基于VMWare虚拟机搭建Linux集群

    基于VMWare虚拟机搭建Linux集群 1.虚拟机的安装 2.下载CentOS系统 3.虚拟机安装CentOS系统 4.虚拟机和本机文件通信 5.虚拟机网络配置 6.本机物理机下载Xshell连接操 ...

  3. Redis异构集群数据在线迁移工具Redis-Migrate-Tool【转】

    摘要:Redis-Migrate-Tool(后面都简称RMT),是唯品会开源的redis数据迁移工具,主要用于异构redis集群间的数据在线迁移,即数据迁移过程中源集群仍可以正常接受业务读写请求,无业 ...

  4. (超详细)基于Zookeeper的Hadoop HA集群的搭建

    基于Zookeeper的Hadoop HA集群的搭建 JunLeon--go big or go home 前言: 高可用(high availability,HA)指的是若当前工作中的机器宕机了,系 ...

  5. 基于 Alluxio 的 HDFS 多集群统一入口的实现

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的Alluxio! 本文作者郭业俊,同济大学自动化专业硕士毕业,现担任苏宁易购大数据存储平台负责人.主要负责苏宁Hadoop分布式文件系统 ...

  6. Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建

    Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建 1. 前言 2. 安装三个Ubuntu 2.1 三个机器都关闭防火墙 2.2 三个机器都关闭swap 2.3 三个机器都 ...

  7. ACK正式支持对基于Alibaba Cloud Linux操作系统的集群进行等保加固

    简介:我们对基于Alibaba Cloud linux操作系统的ACK集群进行等保加固,意味着阿里云在云产品开发和交付的过程中将安全作为重要组成部分,将合规融入到产品的"血液"中, ...

  8. 基于Docker方式实现Elasticsearch集群

    文本环境:Docker + (Elasticsearch6.8.5 * 3) 1.拉取Elasticsearch docker pull elasticsearch6.8.5 2.创建es挂载目录 创 ...

  9. 如何基于Docker快速搭建Elasticsearch集群?

    如何基于Docker快速搭建Elasticsearch集群? Elasticsearch  作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步 ...

最新文章

  1. GitHub的十大JavaScript项目
  2. max与top的效率
  3. C# Windows Phone 8 WP8 开发,取得手机萤幕大小两种方法。
  4. Laravel核心解读--服务容器(IocContainer)
  5. 【kafka】kafka 消费速度 小于 日志清理速度 (kafka数据被清理了)会发生什么 auto.offset.reset 参数
  6. python数据库操作封装_Python 封装一个操作mysql的类
  7. 将多张连续的静态图转成gif动态图
  8. 句句真研—每日长难句打卡Day4
  9. python多维数据分析_使用python进行数据分析
  10. TOMCAT SSL 配置
  11. python樱花树画法图片_武大樱花又盛开,用Python画一棵樱花树
  12. 一台 ZXHN F650(GPON ONU) 学习小记
  13. 如何搭建威纶通触摸屏与S7-200smart之间无线PPI通信?
  14. Excel的统计字符数
  15. python导入包总是失败
  16. 视觉SLAM十四讲CH9代码解析及课后习题详解
  17. linux物理接口数据结构,Linux Regulator Framework(1)_概述
  18. 区块链运作机制_区块链如何运作? 铂 4
  19. 【密码学】HMAC与HS256算法
  20. 计算机哪所民办学校好,哪所民办高校计算机软件方面好?

热门文章

  1. background-attachment: fixed
  2. Java实现 蓝桥杯VIP 算法提高 3000米排名预测
  3. 投放钻展要如何布局才能提升钻展推广的ROI
  4. Linux部署war包项目
  5. python采用强制缩进的方式是代码具有极佳的可读性_python入门
  6. LTR问题 position debias方法
  7. Bandit算法与推荐系统
  8. 计算机的发展与什么息息相关,第一单元第二课《计算机的发展与应用》.doc
  9. 怎么用pdf压缩软件简单实现pdf压缩
  10. 主机序、网络序的理解