CN101236511A - 用于优化全局归约处理的方法和系统 - Google Patents
用于优化全局归约处理的方法和系统 Download PDFInfo
- Publication number
- CN101236511A CN101236511A CNA2008100090229A CN200810009022A CN101236511A CN 101236511 A CN101236511 A CN 101236511A CN A2008100090229 A CNA2008100090229 A CN A2008100090229A CN 200810009022 A CN200810009022 A CN 200810009022A CN 101236511 A CN101236511 A CN 101236511A
- Authority
- CN
- China
- Prior art keywords
- result
- semivector
- reduction
- reduction result
- finishing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
一种优化归约操作的系统和方法,所述系统和方法通过以下来优化归约操作:将操作合并到有限数目的参与进程中,继而将结果分配回所有进程,从而优化非2的幂个进程上的大消息全局归约操作。该方法将进程群组划分为子群组,在一些进程执行配对交换和局部归约操作以获得部分归约结果的半向量,将部分归约结果合并到剩余进程集合中,在剩余进程集合执行连续的递归二分和递归倍增,直到剩余进程集合中的每个进程都具有完成结果的半向量,并在每个进程提供完整的完成结果。
Description
技术领域
本发明涉及并行计算,并且更特别地,涉及用于优化在非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算法的代价可建摸如下:
T=log(N)*(α+L*β+L*γ),
其中
α是每个消息的延迟
β是每个字节的通信代价
γ是每个字节的局部归约代价
N是通信子的进程数目;以及
L是进程对归约操作的输入向量的长度。
很明显,MST算法对于大消息而言不是高效的,因为每个处理器将不得不始终在全向量上执行归约操作,而没有利用并行性。已经针对大消息MPI_REDUCE和MPI_ALLREDUCE操作开发了更好的算法。一个这样的算法是递归二分递归倍增(RHRD)算法。在用于MPI_REDUCE的RHRD算法中,每个进程执行log(N)个步骤的计算和通信。在步骤的计算阶段之前是分配阶段,在分配阶段中进程与其它进程交换数据(即,向量信息)。在也称为预备阶段的分配阶段的第一步骤中,进程i与进程j交换它们输入向量的一半,其中j=(i^mask)。符号^表示按位异或操作,“mask”等于1的二进制表示。如果i<j,则进程j将其向量的第一半发送给进程i并接收进程i的向量的第二半。进程i组合两个向量的第一半,并且进程j组合两个向量的第二半。
在第二步骤中,进程i和进程j交换它们从第一步骤得到的中间归约结果的一半,并且将接收的数据与没有发送的一半进行组合,其中j=i^mask并且mask是将1的二进制表示左移1位的结果。在步骤k,进程i和进程j交换它们从步骤(k-1)得到的中间归约结果的一半,并将接收的部分与没有发送的一半进行组合,其中j=i^mask并且mask是将1的二进制表示左移(k-1)位的结果。如果i<j,则进程i发送中间结果的第二半并接收第一半。
该过程递归地继续,在总共log(N)个步骤的每个步骤,都对所交换和组合的数据的大小进行二分。最终,每个进程都拥有结果向量的1/N:进程0拥有第一个1/N,进程1拥有第二个1/N,进程i拥有第(i-1)个1/N,等等。在MPI_REDUCE中,根继而执行收集(gather)操作,用以将完成归约结果的其余部分从其它进程处收集回来。向量是通过传递消息在进程之间交换的。很明显,向量越大,消息就越大,并且开销就越高,消息交换的潜在延迟就越大。
在MPI_ALLREDUCE中,执行的是全部收集(allgather)步骤而不是收集步骤,在全部收集步骤中,每个进程都从其它进程收集完成归约结果。RHRD算法的代价可建摸为:
T=2*log(N)*α+2*(N-1)/N*L*β+(N-1)/N*L*γ。
当消息大小基于较大的向量长度而较大时,RHRD算法比MST算法执行地更好,因为与该算法中其它两项的大小相比,延迟项“α”很小并且基本上可以忽略。
RHRD算法仅适用于“2的幂”个进程。研究已经表明,归约操作在非2的幂个进程上同样广泛应用。对于非2的幂的N’个进程,现有技术解决方案与RHRD算法相比而言在操作开始时执行一个额外的准备步骤。另外,对于MPI_ALLREDUCE的情况,还要在操作结束时执行其它额外步骤。开始步骤是将r个进程从算法中排除,其中r=N’-N,N是小于N’的最大的2的幂。前2*r个进程交换输入向量。在前2*r个进程中,具有偶数顺序的进程将其向量的第二半发送给其右邻居,并且具有奇数顺序的进程将其向量的第一半分发送给其左邻居。一旦向量信息的交换完成,这前2*r个进程就执行局部归约操作。那些具有奇数顺序的进程继而将其局部归约结果发送给其左邻居,并且不参与算法的其余部分。N个其它进程遵循先前针对2的幂个进程描述的算法。在MPI_ALLREDUCE中,那些被第一步骤排除的进程在最后步骤中从其左邻居处接收最终结果。
图1示出了7(也就是说,非2的幂)个进程上的MPI_ALLREDUCE操作的现有技术处理流程,假设大小为4的大向量包含元素ABCD。部分归约操作结果由元素和顺序号(以下标)表示,例如A-B0-3表示进程0、1、2和3的元素A-B的归约结果。
现有技术方法在非2的幂个进程上的代价可建模为:
对于MPI_REDUCE:
T=(2+2*log(N))*α+(1+2*(N-1)/N)*L*β+(1/2+(N-1)/N)*L*γ。(1)
且对于MPI_ALLREDUCE:
T=(3+2*log(N))*α+(2+2*(N-1)/N)*L*β+(1/2+(N-1)/N)*L*γ(2)
针对非2的幂个进程的一个或多个额外步骤,将MPI_REDUCE的带宽需求提高了大于50%,并将MPI_ALLREDUCE的带宽需求提高了大于100%。很明显,因此期望提供一种针对非2的幂个进程执行大消息MPI_REDUCE/MPI_ALLREDUCE操作的改进方法,这是本发明的一个目的。
本发明的另一个目的是通过消除现有技术算法的准备步骤中的不必要的数据转发来改进大消息MPI_REDUCE和MPI_ALLREDUCE操作的性能。
本发明的又一个目的是通过重新配置部分归约结果的流程,在用于MPI_ALLREDUCE的最终步骤中完全使用互连带宽。
发明内容
上述及其它目的由优化归约操作的创造性系统和方法通过以下实现:将操作合并到有限数目的参与进程中,继而将结果分配回所有进程,从而优化对于非2的幂个进程的大消息归约操作。
该方法包括以下步骤:将进程群组划分为两个子群组S0和S1,在S0中的进程执行配对交换和局部归约操作,使得S0中的每个进程得到部分归约结果的半向量;将部分归约结果合并到剩余进程的集合中,所述集合排除进程的一个子集,使得仅具有部分结果的半向量的2的幂个进程包括剩余进程的集合;在该剩余进程的集合执行连续的递归二分和递归倍增算法,直到该剩余进程集合中的每个进程都具有完成结果的半向量;以及在每个进程提供完整的完成结果。
附图说明
下面将参考附图对发明进行更为详细的描述,其中:
图1示出了使用现有技术的RHRD算法的针对7个进程上的MPI_ALLREDUCE操作来交换进程之间的信息;
图2是示出了本发明的流程图;
图3A到3F示出了根据本发明的针对在2的幂的偶数个进程(特别是6个进程)上的大消息全局归约操作来交换进程之间的信息;以及
图4A到4F示出了根据本发明的针对非2的幂的奇数个进程(特别是7个进程)上的大消息全局归约操作来交换进程之间的信息。
具体实施方式
根据本发明,在图2的第一步骤201中,进程群组被划分为两个子群组,其中每个进程都具有包含多个数据元素的输入向量。子群组S0包含进程0、1、...、2*r-1,其中r=N’-N,N是小于N’的最大的2的幂。剩余的进程属于子群组S1。从子群组划分的方式中可以知道:
如果r是偶数,则S1具有偶数个进程。
证明:r=N’-N。如果r是偶数,由于N是2的幂,因此N’一定是偶数。S1中的进程数目是N’-2*r,其一定是偶数,因为N’和2*r都是偶数。
如果r是奇数,则S1具有奇数个进程。
证明:r=N’-N。如果r是奇数,由于N是2的幂,因此N’也是奇数。因此,N’-2*r一定是奇数,因为N’是奇数而2*r是偶数。
一旦建立了子群组,则在步骤202的准备阶段期间,如果i是偶数,则子群组S0的每个进程i与进程i+1交换其向量的一半,如果i是奇数,则进程i与进程i-1交换其向量的一半,其中进程i的向量的一半包括输入向量的一半数据元素。在步骤204,在所有S0子群组进程处对半向量执行局部归约操作。然而,局部归约操作的结果没有像现有技术的处理中那样由奇数顺序的进程发送给偶数顺序的进程。
相反,此时在归约操作中,进程的子群组化指示每个进程的计算和通信行为。相应地,部分归约结果的半向量被合并到剩余进程的集合中,其中该集合包含X个进程,X是2的整数幂,并且其中该集合包括来自S0的多个进程以及来自S0的至少一个进程。
如果r是偶数,则S0的进程可被进一步组织到r/2个4进程子群组{(4*i,4*i+1,4*i+2,4*i+3)|i=0、1、...、r/2-1}中。在4进程子群组的每一个中,进程4*i+2将其局部归约结果发送至4*i。进程4*i+3将其局部归约结果发送至4*i+1。进程4*i和进程4*i+1在步骤205中对所接收的中间结果和其自己的局部结果执行局部归约操作,并继续到下一步骤。进程4*i+2和进程4*i+3(此后称为非参与进程)被排除在全局归约的接下来的步骤之外。在步骤206,如果i是偶数,则子群组S1的每个进程i与进程i+1交换其输入向量的一半,如果i是奇数,则进程i与进程i-1交换其输入向量的一半,并执行局部归约操作。在该步骤之后,进程的剩余子集(其中每个进程具有部分归约结果的半向量)参与步骤208,执行递归二分,直到每个进程得到第1/N个完成结果向量。接着在步骤209,剩余进程集合执行递归倍增,使得对于MPI_ALLREDUCE而言,每个进程得到完成归约结果的半向量,或者对于MPI_REDUCE来说,包括根在内的两个剩余进程中的每一个都得到完成结果的半向量。对于MPI_REDUCE,可以在一个最终步骤中将完整的完成结果提供给一个进程,在该步骤中,其它剩余进程将其半向量发送至根。对于MPI_ALLREDUCE,可以在后续步骤210和212中执行半向量结果交换,以确保完成结果在每个进程处可用。在步骤210,属于S0的剩余进程将其半结果发送至S0的非参与进程:进程4*i发送至进程4*i+2,并且进程4*i+1发送至进程4*i+3,i=0、1、...、2r/2-1。S1的进程i和i+1交换它们的结果,i=2*r、2*(r+1)、...、N’-2。在步骤210之后,S0中的每个进程都具有完成结果的半向量,并且S1中的每个进程都得到了完整的完成结果。最后,在步骤212,S0中的进程执行类似于S1中的进程在步骤210中所执行的交换,以得到完整的完成结果。
图3A至图3F示出了执行上文详细描述的归约操作的被称为进程0到5的6个进程。进程0具有向量A-D0,进程1具有向量A-D1,进程2具有向量A-D2,进程3具有向量A-D3,进程4具有向量A-D4,进程5具有向量A-D5。进程被划分为子群组S0和S1,其中S0具有进程0、1、...、2*r-1并且S1具有其余进程。在这个示例中,S0包括进程0、1、2和3,并且S1包括进程4和5。
在图3A中,子群组S0的前4个进程与其邻居交换向量的一半,并执行局部归约操作。子群组S1的进程4和5在该步骤中空闲。在图3B中,进程2将其局部归约结果发送至进程0,并且进程3将其局部归约结果发送至进程1。此时,进程4和5交换半向量并执行局部归约操作。在接下来的几个步骤中,进程2和3将空闲,称之为“非参与进程”,并且进程0、1、4和5是活动的,称之为“剩余进程”的子集。
在图3C,子群组S0的进程0和1与子群组S1的进程4和5交换向量的四分之一。特别地,进程0与进程4交换,因为每个进程都包含针对A-B的部分结果,而进程1与进程5交换,因为每个进程都包含针对C-D的部分结果。此后,进程0、1、4和5执行局部归约操作,使得每个剩余进程具有针对四分之一向量的完成结果,如图3D所示。每个剩余进程继而与一个其它剩余进程交换完成的四分之一向量结果,由此,如图3E所示,进程0和4将具有针对半向量A-B的完成结果,并且进程1和5将具有针对半向量C-D的完成结果。要指出的是,无需对进程配对来交换四分之一向量结果;然而,邻近缓冲之间的交换将带来最小的开销。半向量结果从进程0发送至进程2,从进程1发送至进程3,并且在进程4和进程5之间交换,如图3E中的箭头所示。最后,在进程0和1之间以及进程2和3之间交换半向量,使得所有进程具有完成向量结果,如图3F所示。
如果r是奇数,S0的前2*(r-1)个进程可被组织到(r-1)/2个4进程子群组中,而S0的最后两个进程2*r-2、2*r-1可重新分组到具有进程2*r(S1的第一个进程)的子集中。子群组S0中除了进程2*r-2和2*r-1之外的进程的行为与r是偶数的情况相同。子群组S1中除了进程2*r之外的进程的行为也与r是偶数的情况相同。子群组S1的进程2*r-1将其局部归约结果发送至进程2*r。在从进程2*r-1处接收的同时,进程2*r也将其输入向量的第一半发送至进程2*r-2。进程2*r-2和进程2*r继而执行局部归约操作,并且进行到下一步骤。进程2*r-1像其它非参与进程一样被排除在其余全局归约之外。
再一次地,在该步骤之后,子集中的每个剩余进程都具有半向量部分归约结果,并且参与步骤208的递归二分以及步骤209的递归倍增,使得对于MPI_ALLREDUCE而言,每个进程得到完成归约结果的半向量,或者对于MPI_REDUCE而言,包含根在内的两个剩余进程中的每一个都得到完成结果的半向量。对于MPI_REDUCE,可以在一个最终步骤中将完整的完成结果提供给一个进程,在该步骤中,其它进程将其半向量发送至根。对于MPI_ALLREDUCE,继而可以在后续步骤210和212中完成半向量结果的交换,以确保完整的完成结果向量在每个进程处可用。在步骤210,除了进程2*r-2之外,属于S0的剩余进程将其半结果发送至S0的非参与进程:进程4*i发送至进程4*i+2,并且进程4*i+1发送至4*i+3,i=0、1、2、...、r/2-2。S1的进程i和i+1交换其结果,i=2*r+1、2*(r+1)+1、...、N’-2。此外,进程2*r-2将其结果发送至进程2*r,而进程2*r将其结果发送至进程2*r-1。因此,在步骤210之后,S0中的每个进程都具有完成结果的半向量;S1中的每个进程都得到完整的完成结果。S0中的进程继而在步骤212执行类似于S1中的进程在步骤210中所执行的交换,以得到完成的最终结果。
图4A至4F示出了r是奇数时的归约操作。如图4A所示,进程0到6中的每一个都具有其各自的A-D值。初始地,前6个进程与其各自的邻居交换半向量,并执行局部归约操作。进程6,即进程2*r,在这个阶段是空闲的。
在图4B中,执行合并,并且重新对齐子群组以便进一步处理,由此,进程0到3在子群组S0中,而进程4-6(也即进程2*r-2、2*r-1以及2*r)在其它子群组中。进程2将其局部归约结果发送至进程0,而进程3将其局部归约结果发送至进程1。同时,进程5将其局部归约结果发送至进程6,并且进程6将其半向量(A-B6)发送至进程4。进程0、1、4和6执行局部归约操作。此后,进程2、3和5是非参与进程,直到归约操作结束。包括如图所示的进程0、1、4和6在内的子集中的剩余进程在图4C交换四分之一向量并执行局部归约操作,由此,如图4D所示,每个剩余进程都具有针对四分之一向量(即,针对数据元素的四分之一)的完成结果。进程0、1、4和6继而交换结果,使得每个进程都将具有针对半向量的完成结果,如图4E所示。进程0和1继而将其结果分别发送至进程2和3,同时进程4将其结果发送至进程6,并且进程6将其结果发送至进程5。如上文描述中所指出的,尽管可以通过最小化非邻近进程之间的交换来优化性能,但是无需为结果交换而进行特定的进程配对。
此时,进程6具有针对全向量的完成结果,但是所有其它进程仍然只具有针对半向量的完成结果。对于MPI_ALLREDUCE,如图4F所示,进程0和1、进程2和3、以及进程4和5交换半向量结果,使得所有原始进程都具有完成向量结果。
本创造性方法的益处是双重的。在现有技术的方法中,准备步骤的局部归约结果由S0的奇数顺序进程发送至S0的偶数顺序进程,该结果仅在接下来的步骤中被再次转发。新的方法避免了那些不必要的数据转发。此外,在准备步骤之后的步骤中,S0子群组的进程仅仅发送或接收半向量,而不是发送或接收全向量。当前方法将降低适配器的负担,并减轻CPU和存储器处的串行化。此外,如上文详细描述的,N’个进程上的针对MPI_ALLREDUCE的最后两个步骤降低了带宽需求。
现有技术的方法执行编号为从0到2*log(N)+1的2+2*log(N)个步骤。在步骤2*log(N)之前,N/2个进程中的每一个都具有最终完成归约结果的第一半,而其它N/2个进程的每个具有最终完成归约结果的第二半。那些进程可被称为子群组S2和S3。其它r个进程(子群组S4)在前两个步骤之后被排除,并且不具有任何部分结果。可以在S2和S3的进程之间形成1对1的对应。通过现有技术的方法,S2的进程和其在S3中的对应者在步骤2*log(N)期间交换最终结果的一半。在该步骤之后,S2和S3的N个进程中的每一个都具有完整的最终归约结果。那N个进程中的前r个继而在步骤2*log(N)+1中将完整的最终结果发送至S4的进程。
在图3A至图3F所示的给出的方法下,当r是偶数时,S3的前r个进程将其部分结果发送至S2的前r个进程,而不是在步骤2*log(N)期间在S2和S3的进程之间交换结果的一半。S2的r个接收者中的每一个将数据发送至S4的一个不同的进程,而不是发送至其在S3中的对应者。其它进程与现有技术的方法中一样工作。S4的每个进程和S3的前r个进程中的每一个都只具有最终结果的一半,而所有其它进程具有完整的最终归约结果。在最终步骤中,S4的进程和S3的前r个进程交换该一半结果,以得到完整的最终结果。当r是奇数时,如图4A至图4F所示,S2和S3的并集的前r-1个进程将其结果发送至S4的前r-1个进程。S2和S3的第r个进程将其结果发送至S2和S3的第(r+1)个进程,而该第(r+1)个进程将其结果发送至S4的最后进程。在该步骤结束时,S2和S3的第(r+1)个进程具有最终结果。在最后的步骤中,具有一半结果的进程交换其结果,以得到完整结果。这个修改将在整个MPI_ALLREDUCE时间中引起另外的1/2*L*β归约。
通过所给出的方法,N’个进程上的MPI_REDUCE的代价是:
T=(2+2*log(N))*α+(1/2+2*(N-1)/N)*L*β+(1/2+(N-1)/N)*L*γ(3)
并且MPI_ALLREDUCE时间是:
T=(3+2*log(N))*α+(1+2*(N-1)/N)*L*β+(1/2+(N-1)/N)*L*γ(4)
与通过上文的公式(1)和(2)建模的现有技术相比,对于MPI_REDUCE和MPI_ALLREDUCE操作而言,带宽需求分别下降了超过16%和25%。
出于示意和解释的目的,本发明是参考特定的实施方式和进程描述的,这并非是旨在作为穷尽性描述。对于本领域普通技术人员而言,修改将是显然的,并且应被理解为处于所附权利要求书的精神和范围之内。
Claims (16)
1.一种用于在多于一个的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所述的方法,其中所述合并包括以下步骤:
将所述第一半向量的部分归约结果从S0的r个发送进程发送至S0的r个接收进程,其中所述发送和接收进程具有相同半向量的部分归约结果;
在所述接收进程执行本地归约操作,由此每个接收进程具有部分归约结果的半向量;以及
在S1的进程执行配对交换和局部归约操作,由此S1中的一半进程具有所述第一半向量的部分归约结果,并且其余进程具有所述第二半向量的部分归约结果。
4.根据权利要求3所述的方法,其中所述提供完成归约结果的全向量包括以下步骤:
将所述完成归约结果的半向量从所述r个接收进程发送至所述r个发送进程;
在S0的进程执行配对交换,由此S0中的每个进程获得所述完成归约结果的全向量;以及
在S1的进程执行配对交换,由此S1中的每个进程获得所述完成归约结果的全向量。
5.根据权利要求1所述的方法,其中r是奇整数。
6.根据权利要求5所述的方法,其中所述合并包括以下步骤:
将S0进程划分为r-1个发送进程、r-1个接收进程、以及2个其它进程;
将部分归约结果的半向量从S0的r-1个发送进程发送至S0的r-1个接收进程,所述发送和接收进程具有相同半向量的部分归约结果;
在所述r-1个接收进程执行局部归约操作,由此每个接收进程具有部分归约结果的半向量;以及
将所述部分归约结果的半向量从S0的第一所述其它进程发送至S1的进程;
将输入数据的其它半向量从S1的所述进程发送至S0的第二所述其它进程;
在S1的所述进程和S0的所述第二其它进程执行局部归约操作,由此,每个进程具有半向量的部分归约结果;以及
在S1的其余进程执行配对交换和局部归约操作,由此,S1中的其余进程的一半具有第一半向量的部分归约结果,并且S1中的另一半进程具有第二半向量的部分归约结果。
7.根据权利要求5所述的方法,其中,所述提供完成归约结果的全向量包括以下步骤:
将所述完成归约结果的半向量从S0的所述r-1个接收进程发送至S0的所述r-1个发送进程;
将所述完成归约结果的半向量从合并的S0的第二所述其它进程发送至合并的S1的所述进程,由此所述S1的进程具有完成归约结果的全向量;
将完成归约结果的其它半向量从S1的所述进程发送至S0的第一所述其它进程;
在S0的进程执行配对交换,由此S0中的每个进程获得所述完成归约结果的全向量;以及
在S1的其余进程执行配对交换,由此每个进程获得所述完成归约结果的全向量。
8.一种有形地包含机器可执行指令程序的机器可读的程序存储设备,用以执行一种在多于一个的N’个进程执行大消息全局归约操作的方法,其中每个进程都具有至少一个输入数据向量,其中所述方法包括以下步骤:
将所述N’个进程划分为两个子群组S0和S1,其中S0包括2*r个进程并且S1包括N’-2*r个进程,其中r=N’-N,N是小于N’的最大的2的幂;
在S0中的进程执行配对数据交换和局部归约操作,由此S0中的r个进程获得第一半向量的部分归约结果,并且S0中的其它r个进程获得第二半向量的部分归约结果;
将所述部分归约结果的所述半向量合并到剩余进程集合中,所述集合包括N个进程;
在所述剩余进程集合执行连续的递归二分和递归倍增,直到所述剩余进程集合中的每个进程具有完成归约结果的半向量;以及
将所述完成归约结果的全向量提供给每个进程。
9.根据权利要求8所述的程序存储设备,其中r是偶整数。
10.根据权利要求9所述的程序存储设备,其中所述合并包括以下步骤:
将所述第一半向量的部分归约结果从S0的r个发送进程发送至S0的r个接收进程,其中所述发送和接收进程具有相同半向量的部分归约结果;
在所述接收进程执行本地归约操作,由此每个接收进程具有部分归约结果的半向量;以及
在S1的进程执行配对交换和局部归约操作,由此S1中的一半进程具有所述第一半向量的部分归约结果,并且其余进程具有所述第二半向量的部分归约结果。
11.根据权利要求10所述的程序存储设备,其中所述提供完成归约结果的全向量包括以下步骤:
将所述完成归约结果的半向量从所述r个接收进程发送至所述r个发送进程;
在S0的进程执行配对交换,由此S0中的每个进程获得所述完成归约结果的全向量;以及
在S1的进程执行配对交换,由此S1中的每个进程获得所述完成归约结果的全向量。
12.根据权利要求8所述的程序存储设备,其中r是奇整数。
13.根据权利要求12所述的程序存储设备,其中所述合并包括以下步骤:
将S0进程划分为r-1个发送进程、r-1个接收进程、以及2个其它进程;
将部分归约结果的半向量从S0的r-1个发送进程发送至S0的r-1个接收进程,所述发送和接收进程具有相同半向量的部分归约结果;
在所述r-1个接收进程执行局部归约操作,由此每个接收进程具有部分归约结果的半向量;以及
将所述部分归约结果的半向量从S0的第一所述其它进程发送至S1的进程;
将输入数据的其它半向量从S1的所述进程发送至S0的第二所述其它进程;
在S1的所述进程和S0的所述第二其它进程执行局部归约操作,由此每个进程具有半向量的部分归约结果;以及
在S1的其余进程执行配对交换和局部归约操作,由此S1中的其余进程的一半具有第一半向量的部分归约结果,并且S1中的另一半进程具有第二半向量的部分归约结果。
14.根据权利要求13所述的程序存储设备,其中所述提供完成归约结果的全向量包括以下步骤:
将所述完成归约结果的半向量从S0的所述r-1个接收进程发送至S0的所述r-1个发送进程;
将所述完成归约结果的半向量从合并的S0的第二所述其它进程发送至合并的S1的所述进程,由此所述S1的进程具有完成归约结果的全向量;
将完成归约结果的其它半向量从S1的所述进程发送至S0的第一所述其它进程;
在S0的进程执行配对交换,由此S0中的每个进程获得所述完成归约结果的全向量;以及
在S1的其余进程执行配对交换,由此每个进程获得所述完成归约结果的全向量。
15.一种用于在多于一个的N’个原始进程的并行计算中对数据执行归约操作的方法,其中每个进程都具有包含多个数据元素的输入向量,所述多个数据元素包括所述数据的1/N’,所述方法包括以下步骤:
将原始进程划分为子群组S0和S1,其中S0包括进程0到2*r-1,并且子群组S1包括进程2*r到N’-1,其中r=N’-N并且N是小于或等于N’的最大的2的幂;
在子群组S0中的邻居进程配对之间交换包括针对每个处理器的输入向量的数据元素的一半的半向量,并对所有S0子群组进程执行局部归约操作,以产生第一中间结果;
为S1中的每个进程提供半向量,并对所有S1子群组进程执行局部归约操作,以产生第二中间结果;
将所述第一和第二中间结果合并到进程子集中,其中所述子集等于数据元素的数目;
在所述进程子集执行局部归约操作,以产生针对所述数据元素的每个四分之一的完成结果;
在所述进程子集中的剩余进程的配对之间交换针对所述数据元素的每个四分之一的完成结果,并在每个剩余进程执行局部归约操作,以产生针对所述数据元素的每一半的完成结果;以及
所述子集中的每个所述进程将针对所述数据元素的每一半的完成结果发送至至少一个其它进程,以将针对所有数据元素的完成结果提供给至少一个原始进程。
16.一种有形地包含机器可执行指令程序的机器可读的程序存储设备,用以执行一种用于在多于一个的N’个原始进程的并行计算中对数据执行归约操作的方法,其中每个进程都具有包含多个数据元素的输入向量,所述多个数据元素包括所述数据的1/N’,所述方法包括以下步骤:
将原始进程划分为子群组S0和S1,其中S0包括进程0到2*r-1,并且子群组S1包括进程2*r到N’-1,其中r=N’-N并且N是小于或等于N’的最大的2的幂;
在子群组S0中的邻居进程配对之间交换包括针对每个处理器的输入向量的数据元素的一半的半向量,并对所有S0子群组进程执行局部归约操作,以产生第一中间结果;
为S1中的每个进程提供半向量,并对所有S1子群组进程执行局部归约操作,以产生第二中间结果;
将所述第一和第二中间结果合并到进程子集中,其中所述子集等于数据元素的数目;
在所述进程子集执行局部归约操作,以产生针对所述数据元素的每个四分之一的完成结果;
在所述进程子集中的剩余进程的配对之间交换针对所述数据元素的每个四分之一的完成结果,并在每个剩余进程执行局部归约操作,以产生针对所述数据元素的每一半的完成结果;以及
所述子集中的每个所述进程将针对所述数据元素的每一半的完成结果发送至至少一个其它进程,以将针对所有数据元素的完成结果提供给至少一个原始进程。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/669,600 US7953684B2 (en) | 2007-01-31 | 2007-01-31 | Method and system for optimal parallel computing performance |
US11/669,600 | 2007-01-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101236511A true CN101236511A (zh) | 2008-08-06 |
CN101236511B CN101236511B (zh) | 2011-12-28 |
Family
ID=39669152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100090229A Expired - Fee Related CN101236511B (zh) | 2007-01-31 | 2008-01-30 | 用于优化全局归约处理的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7953684B2 (zh) |
CN (1) | CN101236511B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103109262A (zh) * | 2010-09-24 | 2013-05-15 | 英特尔公司 | 在半导体芯片上实现的向量逻辑归约操作 |
CN108694055A (zh) * | 2017-04-03 | 2018-10-23 | 谷歌有限责任公司 | 向量归约处理器 |
CN111984399A (zh) * | 2019-05-21 | 2020-11-24 | 富士通株式会社 | 运算处理设备及其控制方法以及用于存储程序的存储介质 |
CN113259482A (zh) * | 2021-06-21 | 2021-08-13 | 北京卡普拉科技有限公司 | 多对多通信模式的优化方法、装置、存储介质及电子设备 |
WO2021195988A1 (en) * | 2020-03-31 | 2021-10-07 | Alibaba Group Holding Limited | Network congestion avoidance over halving-doubling collective communication |
CN113722071A (zh) * | 2021-09-10 | 2021-11-30 | 拉卡拉支付股份有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
CN115102864A (zh) * | 2022-06-21 | 2022-09-23 | 中国人民解放军国防科技大学 | 一种用于Dragonfly拓扑的Allgather方法及装置 |
CN115336236A (zh) * | 2020-03-31 | 2022-11-11 | 阿里巴巴集团控股有限公司 | 通过基于环的集群通信避免网络拥塞 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100146518A1 (en) | 2008-12-08 | 2010-06-10 | International Business Machines Corporation | All-To-All Comparisons on Architectures Having Limited Storage Space |
US8447954B2 (en) | 2009-09-04 | 2013-05-21 | International Business Machines Corporation | Parallel pipelined vector reduction in a data processing system |
US9361165B2 (en) * | 2009-12-03 | 2016-06-07 | International Business Machines Corporation | Automated merger of logically associated messages in a message queue |
US8140512B2 (en) | 2010-04-12 | 2012-03-20 | Ancestry.Com Operations Inc. | Consolidated information retrieval results |
CN102236542B (zh) * | 2010-05-05 | 2014-06-11 | 中兴通讯股份有限公司 | 一种基于任务进程表的硬件控制实现方法和装置 |
CN102004672B (zh) * | 2010-11-25 | 2012-12-05 | 中国人民解放军国防科学技术大学 | 一种可配置归约目标自增间隔的归约装置 |
CN111782385A (zh) * | 2019-04-04 | 2020-10-16 | 伊姆西Ip控股有限责任公司 | 用于处理任务的方法、电子设备和计算机程序产品 |
CN110690991B (zh) * | 2019-09-10 | 2021-03-19 | 无锡江南计算技术研究所 | 一种基于逻辑树的无阻塞网络归约计算装置、方法 |
CN114026550A (zh) * | 2020-05-08 | 2022-02-08 | 华为技术有限公司 | 用于并行计算系统的处理设备和用于执行集合操作的方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IE920032A1 (en) * | 1991-01-11 | 1992-07-15 | Marconi Gec Ltd | Parallel processing apparatus |
US6212617B1 (en) * | 1998-05-13 | 2001-04-03 | Microsoft Corporation | Parallel processing method and system using a lazy parallel data type to reduce inter-processor communication |
US6601089B1 (en) * | 1999-06-21 | 2003-07-29 | Sun Microsystems, Inc. | System and method for allocating buffers for message passing in a shared-memory computer system |
US6766517B1 (en) * | 1999-10-14 | 2004-07-20 | Sun Microsystems, Inc. | System and method for facilitating thread-safe message passing communications among threads in respective processes |
JP3640081B2 (ja) * | 1999-12-27 | 2005-04-20 | 日本電気株式会社 | Mpiプログラムのコンパイルにおける最適化方法 |
WO2002084509A1 (en) * | 2001-02-24 | 2002-10-24 | International Business Machines Corporation | A novel massively parrallel supercomputer |
CN100476785C (zh) * | 2001-02-24 | 2009-04-08 | 国际商业机器公司 | 用于计算结构的装置和方法 |
KR100592752B1 (ko) * | 2001-02-24 | 2006-06-26 | 인터내셔널 비지네스 머신즈 코포레이션 | 토러스 및 트리 네트워크에서의 산술 기능 |
US6886031B2 (en) * | 2001-03-29 | 2005-04-26 | Sun Microsystems, Inc. | Efficient connection and memory management for message passing on a single SMP or a cluster of SMPs |
US7203924B2 (en) * | 2002-04-30 | 2007-04-10 | Microsoft Corporation | Behavioral analysis for message-passing application programs |
US20050091334A1 (en) * | 2003-09-29 | 2005-04-28 | Weiyi Chen | System and method for high performance message passing |
-
2007
- 2007-01-31 US US11/669,600 patent/US7953684B2/en not_active Expired - Fee Related
-
2008
- 2008-01-30 CN CN2008100090229A patent/CN101236511B/zh not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103109262A (zh) * | 2010-09-24 | 2013-05-15 | 英特尔公司 | 在半导体芯片上实现的向量逻辑归约操作 |
US9141386B2 (en) | 2010-09-24 | 2015-09-22 | Intel Corporation | Vector logical reduction operation implemented using swizzling on a semiconductor chip |
CN103109262B (zh) * | 2010-09-24 | 2016-10-26 | 英特尔公司 | 在半导体芯片上实现的向量逻辑归约操作 |
CN108694055A (zh) * | 2017-04-03 | 2018-10-23 | 谷歌有限责任公司 | 向量归约处理器 |
US10706007B2 (en) | 2017-04-03 | 2020-07-07 | Google Llc | Vector reduction processor |
US11061854B2 (en) | 2017-04-03 | 2021-07-13 | Google Llc | Vector reduction processor |
US11940946B2 (en) | 2017-04-03 | 2024-03-26 | Google Llc | Vector reduction processor |
CN111984399A (zh) * | 2019-05-21 | 2020-11-24 | 富士通株式会社 | 运算处理设备及其控制方法以及用于存储程序的存储介质 |
WO2021195988A1 (en) * | 2020-03-31 | 2021-10-07 | Alibaba Group Holding Limited | Network congestion avoidance over halving-doubling collective communication |
CN115336236A (zh) * | 2020-03-31 | 2022-11-11 | 阿里巴巴集团控股有限公司 | 通过基于环的集群通信避免网络拥塞 |
CN115336236B (zh) * | 2020-03-31 | 2024-04-02 | 阿里巴巴集团控股有限公司 | 由第一计算节点实施的方法、第一计算节点及可读介质 |
CN113259482B (zh) * | 2021-06-21 | 2021-12-07 | 北京卡普拉科技有限公司 | 多对多通信模式的优化方法、装置、存储介质及电子设备 |
CN113259482A (zh) * | 2021-06-21 | 2021-08-13 | 北京卡普拉科技有限公司 | 多对多通信模式的优化方法、装置、存储介质及电子设备 |
CN113722071A (zh) * | 2021-09-10 | 2021-11-30 | 拉卡拉支付股份有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
CN115102864A (zh) * | 2022-06-21 | 2022-09-23 | 中国人民解放军国防科技大学 | 一种用于Dragonfly拓扑的Allgather方法及装置 |
CN115102864B (zh) * | 2022-06-21 | 2023-08-29 | 中国人民解放军国防科技大学 | 一种用于Dragonfly拓扑的Allgather方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101236511B (zh) | 2011-12-28 |
US20080183779A1 (en) | 2008-07-31 |
US7953684B2 (en) | 2011-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101236511B (zh) | 用于优化全局归约处理的方法和系统 | |
CN109948428B (zh) | 面向传感信息处理的gpu集群深度学习边缘计算系统 | |
Moller et al. | A temporal calculus of communicating systems | |
CN109522052B (zh) | 一种计算装置及板卡 | |
CN103049241B (zh) | 一种提高cpu+gpu异构装置计算性能的方法 | |
Rabenseifner et al. | More efficient reduction algorithms for non-power-of-two number of processors in message-passing parallel systems | |
US20110295862A1 (en) | Early return of partial sort results in a database system | |
CN109271138A (zh) | 一种适用于大维度矩阵乘的链式乘法结构 | |
Wang et al. | HE-Booster: an efficient polynomial arithmetic acceleration on GPUs for fully homomorphic encryption | |
CN113489583B (zh) | 一种多方隐私求交中的数据处理方法、装置及电子设备 | |
CN114781629B (zh) | 基于并行复用的卷积神经网络的硬件加速器及并行复用方法 | |
CN105069290A (zh) | 一种面向寄递数据的并行化关键节点发现方法 | |
CN114356578A (zh) | 自然语言处理模型的并行计算方法、装置、设备及介质 | |
CN102098509A (zh) | 基于Farrow结构的可重构插值滤波器 | |
CN116431562B (zh) | 一种基于加速处理器的多头注意力机制融合计算分配方法 | |
CN107368459B (zh) | 基于任意维数矩阵乘法的可重构计算结构的调度方法 | |
CN101866355A (zh) | 基于云计算的社会网络划分方法及系统 | |
CN102760085B (zh) | 通信轨迹扩展方法及装置、通信轨迹驱动模拟方法及系统 | |
CN109672524B (zh) | 基于粗粒度可重构架构的sm3算法轮迭代系统及迭代方法 | |
CN110705196A (zh) | 一种基于随机计算的无误差加法器 | |
Sharp | Real-time distributed object computing: Ready for mission-critical embedded system applications | |
CN110008436A (zh) | 基于数据流架构的快速傅里叶变换方法、系统和存储介质 | |
CN115604262A (zh) | 一种多方计算方法及电子设备 | |
CN114691142A (zh) | 执行程序的编译方法、芯片、电子设备及计算机可读存储介质 | |
CN111368250B (zh) | 基于傅里叶变换/逆变换的数据处理系统、方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111228 Termination date: 20190130 |
|
CF01 | Termination of patent right due to non-payment of annual fee |