用于优化全局归约处理的方法和系统技术方案

技术编号:2826846 阅读:181 留言:0更新日期:2012-04-11 18:40
一种优化归约操作的系统和方法,所述系统和方法通过以下来优化归约操作:将操作合并到有限数目的参与进程中,继而将结果分配回所有进程,从而优化非2的幂个进程上的大消息全局归约操作。该方法将进程群组划分为子群组,在一些进程执行配对交换和局部归约操作以获得部分归约结果的半向量,将部分归约结果合并到剩余进程集合中,在剩余进程集合执行连续的递归二分和递归倍增,直到剩余进程集合中的每个进程都具有完成结果的半向量,并在每个进程提供完整的完成结果。

【技术实现步骤摘要】

本专利技术涉及并行计算,并且更特别地,涉及用于优化在非2的 幂个进程之间的大向量全局归约操作以增强并行计算性能的方法和系统。
技术介绍
在并行计算中,全局归约(reduce)操作被广泛用于并行应用。 数据在一组进程之间被选择性地共享,以最小化进程之间所交换的 通信。消息传递接口 (MPI)标准定义了用于归约操作的若干汇集接 口 ,其中最著名的归约操作是MPI—REDUCE和MPI—ALLREDUCE。 全局归约操作可能是高开销的;因此,高效MPI—REDUCE和 MPI—ALLREDUCE是重要的。 一项长期分析研究证明,并行应用执 行MPI一REDUCE和MPI—ALLREDUCE操作花费的时间占该应用在 所有MPI功能上花费的时间的40%以上。全局归约操作在MPI通信子(communicator)所定义的进程群 组的所有成员(即,所有进程)上共同执行。为了本专利技术的目的, 将详细描述使用最为广泛的交换性归约操作。在通信子群组中,每 个进程具有相等长度的数据输入向量。全局归约操作使用指定操作 来组合所有输入向量。进程交换数据并执行局部归约操作以得到部 分归约结果。对部分归约结果进行交换和组合,直到产生完成归约 结果。在MPI一REDUCE中,具有归约操作的完成归约结果的全向量 在已知为根的一个进程处返回。在MPI_ALLREDUCE中,完成归约 结果在通信子群组的每个进程处返回。对于小消息MPI一REDUCE而言,最著名的算法是最小生成树 (MST)算法,其中MPI REDUCE的根是进程MST的根。树上的进程首先接收包含来自其所有子进程的向量的消息,继而将所接收 的数据和其自己的输入向量组合。该进程继而将结果向量发送至其父进程。在MPI—ALLREDUCE中, 一个进程被选作根。 一旦根接收 并组合了向量并且得到了最终结果,则它就将结果广播至通信子的 群组的其它成员。如果MST是二叉树,则MST MPI—REDUCE算法 的代价可建摸如下<formula>formula see original document page 9</formula>其中a是每个消息的延迟卩是每个字节的通信代价Y是每个字节的局部归约代价N是通信子的进程数目;以及L是进程对归约操作的输入向量的长度。很明显,MST算法对于大消息而言不是高效的,因为每个处理 器将不得不始终在全向量上执行归约操作,而没有利用并行性。已 经针对大消息MPI—REDUCE和MPI—ALLREDUCE操作开发了更好 的算法。 一个这样的算法是递归二分递归倍增(RHRD)算法。在用 于MPI—REDUCE的RHRD算法中,每个进程执行log(N)个步骤的计 算和通信。在步骤的计算阶段之前是分配阶段,在分配阶段中进程 与其它进程交换数据(即,向量信息)。在也称为预备阶段的分配 阶段的第一步骤中,进程i与进程j交换它们输入向量的一半,其中 j=(iAmask)。符号A表示按位异或操作,mask等于1的二进制表 示。如果KJ,则进程j将其向量的第一半发送给进程i并接收进程i 的向量的第二半。进程i组合两个向量的第一半,并且进程j組合两 个向量的第二半。在第二步骤中,进程i和进程j交换它们从第一步骤得到的中间 归约结果的 一 半,并且将接收的数据与没有发送的 一 半进行组合, 其中j=iAmask并且mask是将1的二进制表示左移1位的结果。在步 骤k,进程i和进程j交换它们从步骤(k-1)得到的中间归约结果的一半,并将接收的部分与没有发送的一半进行组合,其中j=iAmask 并且mask是将1的二进制表示左移(k-l)位的结果。如果i<j,则 进程i发送中间结果的第二半并接收第 一 半。该过程递归地继续,在总共log(N)个步骤的每个步骤,都对所交 换和组合的数据的大小进行二分。最终,每个进程都拥有结果向量 的1/N:进程0拥有第一个1/N,进程1拥有第二个1/N,进程i拥 有第(i-l )个1/N,等等。在MPI—REDUCE中,根继而执行收集(gather) 操作,用以将完成归约结果的其余部分从其它进程处收集回来。向 量是通过传递消息在进程之间交换的。很明显,向量越大,消息就 越大,并且开销就越高,消息交换的潜在延迟就越大。在MPI_ALLREDUCE中,执行的是全部收集(allgather)步骤 而不是收集步骤,在全部收集步骤中,每个进程都从其它进程收集 完成归约结果。RHRD算法的代价可建摸为T = 2*log (N) *a + 2*(N-1)/N * L *|3 + (N-l)/N * L*y 。当消息大小基于较大的向量长度而较大时,RHRD算法比MST 算法执行地更好,因为与该算法中其它两项的大小相比,延迟项a 很小并且基本上可以忽略。RHRD算法仅适用于2的幂,,个进程。研究已经表明,归约操 作在非2的幂个进程上同样广泛应用。对于非2的幂的N,个进程, 现有技术解决方案与RHRD算法相比而言在操作开始时执行一个额 外的准备步骤。另外,对于MPI—ALLREDUCE的情况,还要在才喿作 结束时执行其它额外步骤。开始步骤是将r个进程从算法中排除,其 中r^N,-N, N是小于N,的最大的2的幂。前2个进程交换输入向 量。在前2个进程中,具有偶数顺序的进程将其向量的第二半发送 给其右邻居,并且具有奇数顺序的进程将其向量的第一半分发送给其左邻居。 一旦向量信息的交换完成,这前24个进程就执行局部归 约操作。那些具有奇数顺序的进程继而将其局部归约结果发送给其 左邻居,并且不参与算法的其余部分。N个其它进程遵循先前针对2 的幂个进程描述的算法。在MPI—ALLREDUCE中,那些被第一步骤排除的进程在最后步骤中从其左邻居处接收最终结果。图1示出了 7 (也就是说,非2的幂)个进程上的 MPI—ALLREDUCE纟喿作的现有技术处理流程,假设大小为4的大向 量包含元素ABCD。部分归约操作结果由元素和顺序号(以下标) 表示,例如A-B。—3表示进程0、 1、 2和3的元素A-B的归约结果。现有技术方法在非2的幂个进程上的代价可建模为 对于MPI—REDUCE:T=(2+2*log(N))*a + (1+2*(N-1)/N)*L*(3 + (l/2+(N-l)/N)*L*y。 (1) 且对于MPI—ALLREDUCE:T=(3+2*log(N))* a + (2+2*(N-l)/N)*L*p + (l/2+(N-l)/N)*L *y (2)针对非2的幂个进程的一个或多个额外步骤,将MPI—REDUCE 的带宽需求提高了大于50%,并将MPI—ALLREDUCE的带宽需求提 高了大于100%。很明显,因此期望提供一种针对非2的幂个进程执 行大消息MPI—REDUCE/MPI—ALLREDUCE才乘作的改进方法,这是 本专利技术的一个目的。本专利技术的另 一个目的是通过消除现有技术算法的准备步骤中的 不必要的数据转发来改进大消息 MPI—REDUCE 和 MPI—ALLREDUCE操作的性能。本专利技术的又一个目的是通过重新配置部分归约结果的流程,在 用于MPI一ALLREDUCE的最终步骤中完全使用互连带宽。
技术实现思路
上述及其本文档来自技高网
...

【技术保护点】
一种用于在多于一个的N’个进程执行大消息全局归约操作的方法,其中每个进程具有至少一个输入数据向量,所述方法包括以下步骤:    将所述N’个进程划分为两个子群组S0和S1,其中S0包括2*r个进程并且S1包括N’-2*r个进程,其中r=N’-N,N是小于N’的最大的2的幂;    在S0中的进程执行配对数据交换和局部归约操作,由此,S0中的r个进程获得第一半向量的部分归约结果,并且S0中的其它r个进程获得第二半向量的部分归约结果;    将所述部分归约结果的所述半向量合并到剩余进程集合中,所述集合包括N个进程;    在所述剩余进程集合执行连续的递归二分和递归倍增,直到所述剩余进程集合中的每个进程具有完成归约结果的半向量;以及    将所述完成归约结果的全向量提供给每个进程。

【技术特征摘要】
US 2007-1-31 11/669,6001.一种用于在多于一个的N’个进程执行大消息全局归约操作的方法,其中每个进程具有至少一个输入数据向量,所述方法包括以下步骤将所述N’个进程划分为两个子群组S0和S1,其中S0包括2*r个进程并且S1包括N’-2*r个进程,其中r=N’-N,N是小于N’的最大的2的幂;在S0中的进程执行配对数据交换和局部归约操作,由此,S0中的r个进程获得第一半向量的部分归约结果,并且S0中的其它r个进程获得第二半向量的部分归约结果;将所述部分归约结果的所述半向量合并到剩余进程集合中,所述集合包括N个进程;在所述剩余进程集合执行连续的递归二分和递归倍增,直到所述剩余进程集合中的每个进程具有完成归约结果的半向量;以及将所述完成归约结果的全向量提供给每个进程。2. 根据权利要求1所述的方法,其中r是偶整数。3. 根据权利要求2所述的方法,其中所述合并包括以下步骤 将所述第一半向量的部分归约结果从SO的r个发送进程发送至SO的r个接收进程,其中所述发送和接收进程具有相同半向量的部 分归约结果;在所述接收进程执行本地归约操作,由此每个接收进程具有部分归约结果的半向量;以及在SI的进程执行配对交换和局部归约操作,由此SI中的一半 进程具有所述第一半向量的部分归约结果,并且其余进程具有所述第二半向量的部分归约结果。4. 根据权利要求3所述的方法,其中所述提供完成归约结果的 全向量包括以下步骤将所述完成归约结果的半向量从所述r个接收进程发送至所述r个发送进程;在SO的进程执行配对交换,由此SO中的每个进程获得所述完 成归约结果的全向量;以及在SI的进程执行配对交换,由此SI中的每个进程获得所述完 成归约结果的全向量。5. 根据权利要求1所述的方法,其中r是奇整数。6. 根据权利要求5所述的方法,其中所述合并包括以下步骤 将SO进程划分为r-1个发送进程、r-1个接收进程、以及2个其它进程;将部分归约结果的半向量从SO的r-1个发送进程发送至SO的r-1 个接收进程,所述发送和接收进程具有相同半向量的部分归约结果;在所述r-l个接收进程执行局部归约操作,由此每个接收进程具 有部分归约结果的半向量;以及将所述部分归约结果的半向量从SO的第一所述其它进程发送至SI的进程;将输入数据的其它半向量从SI的所述进程发送至SO的第二所 述其它进程;在SI的所述进程和SO的所述第二其它进程执行局部归约操作, 由此,每个进程具有半向量的部分归约结果;以及在SI的其余进程执行配对交换和局部归约操作,由此,Sl中的 其余进程的一半具有第一半向量的部分归约结果,并且S1中的另一 半进程具有第二半向量的部分归约结果。7. 根据权利要求5所述的方法,其中,所述提供完成归约结果 的全向量包括以下步骤将所述完成归约结果的半向量从SO的所述r-1个接收进程发送 至SO的所述r-1个发送进程;将所述完成归约结果的半向量从合并的SO的第二所述其它进程 发送至合并的SI的所述进程,由此所述S1的进程具有完成归约结 果的全向量;将完成归约结果的其它半向量从Sl的所述进程发送至SO的第 一所述其它进程;在SO的进程执行配对交换,由此SO中的每个进程获得所述完 成归约结果的全向量;以及在S1的其余进程执行配对交换,由此每个进程获得所述完成归 约结果的全向量。8. —种有形地包含机器可执行指令程序的机器可读的程序存储 设备,用以执行一种在多于一个的N,个进程执行大消息全局归约操 作的方法,其中每个进程都具有至少一个输入数据向量,其中所述 方法包括以下步骤将所述N,个进程划分为两个子群组SO和Sl,其中SO包括2*r 个进程并且SI包括N,-2^个进程,其中fN,-N, N是小于N,的最 大的2的幂;在SO中的进程执行配对数据交换和局部归约操作,由此SO中 的r个进程获得第一半向量的部分归约结果,并且SO中的其它r个 进程获得第二半向量的部分归约结果;将所述部分归约结果的所述半向量合并到剩余进程集合中,所述 集合包括N个进程;在所述剩余进程集合执行连续的递归二分和递归倍增,直到所述 剩余进程集合中的每个进程具有完成归约结果的半向量;以及将所述完成归约结果的全向量提供给每个进程。9. 根据权利要求8所述的程序存储设备,其中r是偶整数。10. 根据权利要求9所述的程序存储设备,其中所述合并包括以 下步骤将所述第一半向量的部分归约结果从SO的r个发送进程发送至 SO的r个接收进程,其中所述发送和接收进程具有相同半向量的部 分归约结果;在所述接收进程执行本地归约操作,由此每个接收进程具有部分 归约结果的半向量;以及在Sl的进程执行配对交换和局部归约操作,由此Sl中的一半进程具有所述第 一...

【专利技术属性】
技术研发人员:贾彬
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1