【技术实现步骤摘要】
本专利技术涉及并行计算,并且更特别地,涉及用于优化在非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的根。树上的进程首先接收包含来自其所有子进程的向量的消息 ...
【技术保护点】
一种用于在多于一个的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中的一半进程具有所述第 一...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。