CN101055532A - 对并行计算机执行全局收集操作的方法及其并行计算机 - Google Patents
对并行计算机执行全局收集操作的方法及其并行计算机 Download PDFInfo
- Publication number
- CN101055532A CN101055532A CN200710005534.3A CN200710005534A CN101055532A CN 101055532 A CN101055532 A CN 101055532A CN 200710005534 A CN200710005534 A CN 200710005534A CN 101055532 A CN101055532 A CN 101055532A
- Authority
- CN
- China
- Prior art keywords
- computing node
- operational group
- parallel computer
- reduction operation
- node
- 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.)
- Pending
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)
- Multi Processors (AREA)
Abstract
对包括多个计算节点的并行计算机执行全局收集操作,其中,所述计算节点被组织为至少一个用于所述并行计算机的集体并行操作的计算节点的操作组,并且所述操作组中的每个计算节点被分配了唯一的等级。在所述并行计算机中,执行全局收集操作包括:通过在每个存储器缓冲中的等级相关位置为用于全局归约操作的贡献数据和在每个存储器缓冲中的所有其它位置为零,在计算节点操作组中的每个计算节点上配置存储器缓冲,以及用每个存储器缓冲中的全部内容以按位或功能对所述操作组中的计算节点执行全局归约操作。
Description
技术领域
本发明的领域是数据处理,或者更具体地,是用于对并行计算机执行全局收集(allgather)操作的方法、装置和产品。
背景技术
1948年的EDVAC计算机系统的开发被通常引用为计算机时代的开始。自那时起,计算机系统已演进为极其复杂的设备。今天的计算机要比例如EDVAC的早期系统复杂得多。计算机系统典型包括硬件和软件组件的组合,应用程序、操作系统、处理器、总线、存储器、输入/输出设备等。随着半导体处理和计算机体系结构的进步推动计算机的性能越来越高,更复杂的计算机软件已演进为利用所述硬件的更高性能,其导致计算机系统今天比几年前强大得多。
并行计算是一个已经历了进步的计算机技术领域。并行计算是为更快获得结果的同一任务(被分割并且特别适于)在多个处理器上的同时执行。并行计算是基于这一事实:解决问题的过程通常可以被划分为较小的任务,其中,所述较小的任务可以以某种协调来同时执行。
并行计算机执行并行算法。并行算法可以被分割,以便在许多不同处理设备上一次被执行一片,并且然后在最后被再放回一起以便得到数据处理结果。某些算法很容易被划分成片。对检查从一到十万的所有数字以了解哪些是素数的工作进行分割可以例如通过将所述数字的子集分配给每个可用处理器、以及然后将肯定结果的列表放回一起来完成。在本说明书中,执行并行程序的各个片的多个处理设备被称为“计算节点”。并行计算机由计算节点和包括例如输入/输出(“I/O”)节点和服务节点的其它处理节点共同组成。
并行算法是有价值的,是因为,由于现代处理器工作的方式,经由并行算法执行一些类型的大型计算任务比经由串行(非并行)算法更快。构造具有单一快速处理器的计算机要比具有许多有相同吞吐量的低速处理器困难得多。还存在串行处理器的潜在速度的某个理论极限。另一方面,每个并行算法具有串行部分,并且由此并行算法具有饱和点。在该点之后,添加更多处理器并不得到更大吞吐量,而仅增加开销和成本。
并行算法被还设计为优化并行计算机的节点间数据通信需要的一个或多个资源。存在两种并行处理器通信方式:共享存储器或消息传递。共享存储器处理需要对于数据的额外锁定,并且强加了额外处理器和总线循环开销,并且还串行化了所述算法的某些部分。
消息传递处理使用高速数据通信网络和消息缓存,但该通信增加了数据通信网络上的传输开销以及用于消息缓存的额外存储器需求和节点间数据通信的延迟。并行计算机的设计使用特别设计的数据通信链路,以便所述通信开销将较小,而决定业务容量的是并行算法。
许多数据通信网络体系结构被用于并行计算机中节点间的消息传递。计算节点可以在网络中被组织为例如“环形”或“网格”。同样,计算节点可以在网络中被组织为树。环形网络将节点连接成具有环绕链路的三维网格。每个节点通过该环形网络连接到其六个邻居,并且每个节点由其在该网格中的x,y,z坐标来定址。在树型网络中,节点典型被连接成二叉树:每个节点具有一个双亲和两个孩子(尽管一些节点取决于硬件配置可能仅有零个孩子或一个孩子)。在使用环形和树型网络的计算机中,所述两种网络典型被相互独立地实现,其具有分离的选路电路、分离的物理链路和分离的消息缓存。
环形网络适用于点到点操作,但树型网络在点到点通信中典型是低效的。然而,对于在其中所有计算节点同时参与的特定集体操作、消息传递操作(例如全局收集),树型网络确实提供了高带宽和低延迟。全局收集操作是对计算节点的操作组的集体操作,该操作从所述操作组中的所有计算节点收集数据、以等级顺序将所收集的数据连接到存储器缓冲中,并且将所述存储器缓冲中的全部内容提供给所述操作组中的所有计算节点。因为数千节点可参与对并行计算机的集体操作,所以对并行计算机执行全局收集操作通常是种挑战。用于执行全局收集的典型的现有技术的算法是,对于操作组中的每个计算节点广播其对于该操作组中的所有计算节点的数据贡献。如果所述组较大,并且所述组可包含数千计算节点,则所述算法的数据通信成本很大。
发明内容
一种用于对包括多个计算节点的并行计算机执行全局收集操作的方法、装置和计算机程序产品被公开,其中所述计算节点被组织为至少一个用于所述并行计算机的集体并行操作的计算节点操作组,并且所述操作组中的每个计算节点被分配了唯一的等级。在所述并行计算机中,执行全局收集操作可包括:通过在每个存储器缓冲中等级相关位置为用于全局归约(allreduce)的贡献数据和在每个存储器缓冲中所有其它位置为零,在计算节点操作组中的每个计算节点上配置存储器缓冲,以及用每个存储器缓冲的全部内容以按位或(OR)功能对所述操作组中的计算节点执行全局归约操作。
从下面对如附图中所示的本发明的示例实施例的更详细描述中,本发明的前述和其它目的、特征和优点将变得显而易见,在所述附图中,相似标号一般代表本发明的示例实施例的相似部分。
附图说明
图1示出了用于执行根据本发明的实施例的对并行计算机的全局收集操作的计算机的示例系统。
图2阐明了可用于执行根据本发明的实施例的对并行计算机的全局收集操作的示例计算节点的框图。
图3A示出了可用于执行根据本发明的实施例的对并行计算机的全局收集操作的系统中的示例点到点适配器。
图3B示出了可用于执行根据本发明的实施例的对并行计算机的全局收集操作的系统中的示例集体操作适配器。
图4示出了针对点到点操作最优化的示例数据通信网络。
图5示出了针对集体操作最优化的示例数据通信网络。
图6阐明了示出执行根据本发明的实施例的对并行计算机的全局收集操作的示例方法的流程图。
图7A、7B和7C阐明了图6中示出的计算节点的组织组的框图。
图8阐明了执行根据本发明的实施例的对并行计算机的全局收集操作的另一示例方法的流程图。
图9A-9E阐明了图8中示出的计算节点的组织组的框图。
具体实施方式
用于执行根据本发明的实施例的对并行计算机的全局收集操作的示例方法、装置和计算机程序产品被参考附图进行了描述,其以图1开始。图1示出了用于执行根据本发明的实施例的对并行计算机的全局收集操作的示例系统。图1的系统包括并行计算机(100)、用于该计算机的数据存储设备形式的非易失性存储器(118)、用于该计算机的打印机形式的输出设备(120)以及用于该计算机的计算机终端形式的输入/输出设备(122)。图1的示例中的并行计算机(100)包括多个计算节点(102)。
所述计算节点(102)由几个独立的数据通信网络耦合用于数据通信,其中,所述数据通信网络包括:高速以太网(174)、联合测试行动组(“JTAG”)网络(104)、针对集体操作最优化的树型网络(106)以及针对点到点操作最优化的环形网络(108)。树型网络(106)是包括连接到所述计算节点以便将所述计算节点组织为树的数据通信链路的数据通信网络。每个数据通信网络用所述计算节点(102)之间的数据通信链路来实现。所述数据通信链路提供了用于所述并行计算机的计算节点之间的并行操作的数据通信。
另外,并行计算机的所述计算节点(102)被组织为至少一个用于对并行计算机(100)的集体并行操作的计算节点操作组(132)。计算节点操作组是集体并行操作对其执行的计算节点集合。集体操作以操作组的计算节点之间的数据通信实现。集体操作是涉及操作组的所有计算节点的那些功能。集体操作是下述操作,即,被计算节点操作组中的所有计算节点同时(即近似同一时间)执行的消息传递计算机程序指令。所述操作组可以包括并行计算机(100)中的所有计算节点或所有计算节点的子集。集体操作通常围绕点到点操作建立。集体操作要求操作组内的所有计算节点上的所有过程调用具有匹配参数的同一集体操作。“广播”是用于在操作组的计算节点之间移动数据的集体操作的例子。“归约(reduce)”操作是对于分布在操作组的计算节点间的数据执行算术或逻辑功能的集体操作的例子。操作组可以被实现为例如MPI“通信器”。
“MPI”是指“消息传递接口”,一种现有技术的并行通信库,用于并行计算机上的数据通信的计算机程序指令模块。可以被改进为执行根据本发明的实施例的对并行计算机的全局收集操作的现有技术并行通信库的例子包括MPI和“并行虚拟机”(“PVM”)库。PVM是由田纳西(Tennessee)大学、橡树岭国家实验室(Oak Ridge National Laboratory)和埃默里(Emory)大学开发。MPI由MPI论坛发布,MPI论坛是具有许多组织的代表的、定义和维护MPI标准的开放小组。MPI在本文写作的时候是针对在分布式存储器并行计算机上运行并行程序的计算节点间的通信的事实上的标准。为易于说明,本说明书有时使用MPI术语,尽管这样对MPI的使用不是本发明的要求或限制。
如下面在本说明书中详细描述的,图1的所述系统一般运转为执行根据本发明的对并行计算机的全局收集操作,其是通过在每个存储器缓冲中等级相关位置为用于全局归约操作的贡献数据和在每个存储器缓冲中所有其它位置为零,在计算节点操作组中的每个计算节点上配置存储器缓冲,以及用每个存储器缓冲的全部内容以按位或功能对所述操作组的计算节点执行全局归约操作。
作为被用在本说明书中的术语的“按位或功能”是相容的按位或而不是相斥的按位或。C或C++编程语言中用于相容按位或功能的符号是“|”。所述相容按位或功能对其操作数的每一位单独地进行逻辑或功能。其效果是使位开启(on)。对于这些操作数,例如,
x=00000000 00000001 00000000,以十进制,x=010,和
y=00000000 00000000 00000010,以十进制,y=002,x=x|y得x=00000000 00000001 00000010,以十进制为x=012。即,在每个操作数中为开启的所有位在所述按位或功能的结果中还为开启。
使用按位或功能的全局归约操作是对计算节点操作组的集体操作,其通过按位或功能组合来自所述操作组中的所有计算节点的数据贡献,并且将所述组合的贡献发送到该操作组中的所有计算节点。如上面所提到的,全局收集操作是对计算节点操作组的集体操作,其从操作组中的所有计算节点收集数据、按等级顺序将所述收集的数据连接到存储器缓冲中、并且将所述存储器缓冲的全部内容广播到操作组中的所有计算节点。全局归约操作和全局收集操作的功能在由MPI论坛发布的MPI标准中定义。用于执行包括全局归约操作和全局收集操作的功能的集体操作的算法未在所述MPI标准中定义。
多数集体操作是四种基本操作的变型或组合:广播、收集、散布和归约。在广播操作中,所有过程指定其缓存内容将被发送的同一根过程。过程而不是所述根指定接收缓存。在该操作后,所有缓存包含来自所述根过程的消息。
散布操作像所述广播操作一样也是一到多的集体操作。所有过程指定同一接收计数。发送参数仅对于其缓存实际包含发送计数×N个给定数据类型的单元的根过程有意义,其中,N是给定的计算节点组中的过程数。发送缓存将被均等地划分和分散给所有过程(包括其自己)。每个计算节点被分配了称为“等级(rank)”的顺序标识符。在该操作后,所述根已按递增的等级顺序向每个过程发送了发送计数数据单元。等级0从所述发送缓存接收第一发送计数数据单元。等级1从所述发送缓存接收第二发送计数数据单元,等等。
收集操作是对所述散布操作的描述的完全逆向的多到一集体操作。即,收集是其中一种数据类型的单元从等级化的计算节点收集到根节点中的接收缓存中的多到一集体操作。
归约操作也是多到一集体操作,其包括执行对两个数据单元的算术或逻辑功能。所有过程指定同一“计数”和同一算术或逻辑功能。在所述归约后,所有过程已从计算节点发送缓存向根过程发送了发送计数数据单元。在归约操作中,来自对应的发送缓存位置的数据单元被算术或逻辑操作两两组合,以得到根过程的接收缓存中的单一对应单元。对应用特定的归约操作可以在运行时被定义。并行通信库可以支持预定义操作。MPI例如提供了下面的预定义归约操作:
MPI_MAX 最大
MPI_MIN 最小
MPI_SUM 和
MPI_PROD 积
MPI_LAND 逻辑与
MPI_BAND 按位与
MPI_LOR 逻辑或
MPI_BOR 按位或
MPI_LXOR 逻辑异或
MPI_BXOR 按位异或
除计算节点外,计算机(100)包括通过所述数据通信网络的一个(174)耦合到计算节点(102)的输入/输出(“I/O”)节点(110、114)。所述I/O节点(110、114)提供了计算节点(102)和I/O设备(118、120、122)之间的I/O服务。I/O节点(110、114)被通过局域网(“LAN”)(130)连接用于数据通信I/O设备(118、120、122)。计算机(100)还包括通过所述网络的一个(104)耦合到所述计算节点的服务节点(116)。服务节点(116)提供了通用于多个计算节点的服务:将程序载入到所述计算节点中,开始所述计算节点上的程序执行,检索所述计算节点上程序运行的结果,等等。服务节点(116)运行服务应用(124),并且通过运行在计算机终端(122)上的服务应用接口(126)与用户(128)通信。
组成图1中所示的示例系统的节点、网络和I/O设备的安排仅用于说明,不用于对本发明的限制。能够执行根据本发明的实施例的对并行计算机的全局收集操作的数据处理系统可以包括图1中未示出的、如本领域的技术人员将设想的另外的节点、网络、设备和体系结构。图1的示例中的并行计算机(100)包括十六个计算节点(102);能够执行根据本发明的实施例的全局收集的并行计算机有时包括数千计算节点。除以太网和JTAG外,所述数据处理系统中的网络可以支持包括例如TCP(传输控制协议)、IP(因特网协议)和如本领域的技术人员将设想的其它协议的许多数据通信协议。本发明的各种实施例可以在除图1中所示之外的各种硬件平台上被实现。
执行根据本发明的实施例的全局收集操作一般是在包括多个计算节点的并行计算机上被实现。实际上,所述计算机可以包括数千所述计算节点。每个计算节点自己又是由一个或更多计算机处理器、其自己的计算机存储器和其自己的输入/输出适配器组成的一种计算机。因此,为进一步说明,图2阐明了可用于能够执行根据本发明的实施例的全局收集操作的并行计算机中的示例计算节点的框图。图2的计算节点(152)包括至少一个计算机处理器(164)以及随机存取存储器(“RAM”)(156)。处理器(164)通过高速存储器总线(154)连接到RAM(156),并且通过总线适配器(194)和扩展总线(168)连接到所述计算节点的其它组件。存储在RAM(156)中的是应用程序(158),即,使用并行算法执行并行的、用户级数据处理的计算机程序指令模块。
还存储在RAM(156)中的是并行通信库(160),即,执行计算节点间的并行通信的计算机程序指令库,其包括点到点操作以及集体操作。应用程序(158)通过调用并行通信库(160)中的软件例程执行集体操作。并行通信例程库可以根据用于执行根据本发明的实施例的对并行计算机的全局收集操作的暂存区(scratch)、使用例如C编程语言的传统编程语言以及使用写出在两个独立数据通信网络上的节点间发送和接收数据的并行通信例程的传统编程方法来开发。可选地,现存的现有技术的库可以被使用。可以被改进为执行根据本发明的实施例的对并行计算机的全局收集操作的现有技术并行通信库的例子包括“消息传递接口”(“MPI”)库和“并行虚拟机”(“PVM”)库。尽管其被开发,并行通信库(160)的并行通信例程被改进为:通过在每个存储器缓冲中等级相关位置为用于全局归约操作的贡献数据和在每个存储器缓冲中所有其它位置为零,在计算节点操作组中的每个计算节点上配置存储器缓冲,以及用每个存储器缓冲的全部内容以按位或功能对所述操作组中的计算节点执行全局归约操作,来执行根据本发明的实施例的全局收集操作。
还存储在RAM(156)中的是操作系统(162),即,用于应用程序对所述计算节点的其它资源的访问的计算机程序指令模块和例程的模块。其典型用于并行计算机的计算节点中的应用程序和并行通信库在没有用户登陆和安全问题的情况下运行单一线程执行,其中,所述没有用户登陆和安全问题是因为该线程被授权了对所述节点的所有资源的完全访问。由并行计算机中的计算节点上的操作系统执行的任务的数量和复杂度因此比具有许多同时运行的线程的串行计算机上的操作系统要小和较不复杂。另外,在图2的计算节点(152)上不存在任何视频I/O,其是降低对操作系统的要求的另一因素。所述操作系统可以因此是通过与通用计算机的操作系统相比相当轻量级的、实际上被削减的版本或者针对特定并行计算机的操作专门开发的操作系统。可以有用地被改进、简化以用于计算节点中的操作系统包括UNIXTM、LinuxTM、Microsoft XPTM、AIXTM、IBM的i5/OSTM和本领域的技术人员将设想的其它操作系统。
图2的示例计算节点(152)包括几个用于实现与其它并行计算机节点的数据通信的通信适配器(172、176、180、188)。所述数据通信可以通过RS-232连接、通过例如USB的外部总线、通过例如IP网络的数据通信网络以及通过本领域的技术人员将设想的其它方式被执行。通信适配器实现了硬件级的数据通信,通过其,一台计算机直接或通过网络向另一计算机发送数据通信。可用于执行根据本发明的实施例的全局收集操作的系统中的通信适配器的例子包括:用于有线通信的调制解调器、用于有线网络通信的以太网(IEEE 802.3)适配器和用于无线网络通信的802.11b适配器。
图2的例子中的数据通信适配器包括将用于数据通信的示例计算节点(152)耦合到吉比特以太网(174)的吉比特以太网适配器(172)。吉比特以太网是在IEEE 802.3标准中定义的网络传输标准,其提供了十亿比特每秒(1吉比特)的数据速率。吉比特以太网是基于多模光缆、单模光缆或非屏蔽双绞线运转的以太网的变型。
图2的例子中的数据通信适配器包括将用于数据通信的示例计算节点(152)耦合到JTAG主电路(178)的JTAG从属电路(176)。JTAG是用于IEEE 1149.1标准的通用名,其中,所述IEEE 1149.1标准被命名为标准测试访问端口和边界扫描体系结构,其是针对用于使用边界扫描来测试印刷电路板的测试访问端口的。JTAG如此广泛地适用,以致此时边界扫描或多或少与JTAG同义。JTAG不仅被用于印刷电路板,还用于进行集成电路的边界扫描,并且还可用作用于调试嵌入式系统、提供进入系统的便捷“后门”的机制。图2的示例计算节点可以是所有这三个:其典型包括被安装在印刷电路板上的一个或更多集成电路,并且可以被实现为具有其自己的处理器、其自己的存储器和其自己的I/O能力的嵌入式系统。通过JTAG从属(176)的JTAG边界扫描可以高效地配置计算节点(152)中的处理器寄存器和存储器用于执行根据本发明的实施例的全局收集操作。
图2的例子中的数据通信适配器包括将用于数据通信的示例计算节点(152)耦合到例如被配置为三维环形或网格的网络的、最优用于点到点消息传递操作的网络(108)的点到点适配器(180)。点到点适配器(180)提供了三个通信轴x、y和z上的六个方向中的数据通信,其是通过六个双向链路:+x(181)、-x(182)、+y(183)、-y(184)、+z(185)和-z(186)。
图2的例子中的数据通信适配器包括将用于数据通信的示例计算节点(152)耦合到例如被配置为二叉树的网络的、最优用于集体消息传递操作的网络(106)的集体操作适配器(188)。集体操作适配器(188)通过三个双向链路提供数据通信:到孩子节点(190)的两个和到双亲节点(192)的一个。
示例计算节点(152)包括两个算术逻辑单元(“ALU”)。ALU(166)是处理器(164)的组件,并且单独ALU(170)专用于集体操作适配器(188)专门用于执行归约操作的算术和逻辑功能。并行通信库(160)中的归约例程的计算机程序指令可以将用于算术或逻辑功能的指令锁存到指令寄存器(169)中。当归约操作的所述算术或逻辑功能是例如“和”或“逻辑或”时,集体操作适配器(188)可以通过使用处理器(164)中的ALU(166)、或典型更快地通过使用专用ALU(170)执行所述算术或逻辑操作。
为进一步说明,图3A示出了可用于执行根据本发明的实施例的全局收集操作的系统中的示例点到点适配器(180)。点到点适配器(180)被设计用于最优化用于点到点操作的数据通信网络中,其中,所述网络将计算节点组织为三维环形或网格。图3A的例子中的点到点适配器(180)通过四个单向数据通信链路提供沿x轴的数据通信:-x方向(182)上去往和来自下一节点,以及+x方向(181)上去往和来自下一节点。点到点适配器(180)还通过四个单向数据通信链路提供沿y轴的数据通信:-y方向(184)上去往和来自下一节点,以及+y方向(183)上去往和来自下一节点。点到点适配器(180)还通过四个单向数据通信链路提供沿z轴的数据通信:-z方向(186)上去往和来自下一节点,以及+z方向(185)上去往和来自下一节点。
为进一步说明,图3B示出了可用于执行根据本发明的实施例的全局收集操作的系统中的示例集体操作适配器(188)。集体操作适配器(188)被设计为用于最优化用于集体操作的网络中,其中,所述网络将并行计算机的计算节点组织为二叉树。图3B的例子中的集体操作适配器(188)通过四个单向数据通信链路(190)提供去往和来自两个孩子节点的数据通信。集体操作适配器(188)还通过两个单向数据通信链路(192)提供去往和来自双亲节点的数据通信。
为进一步说明,图4示出了最优化用于点到点操作的示例数据通信网络(106)。在图4的示例中,点代表并行计算机的计算节点(102),并且所述点之间的虚线代表计算节点之间的数据通信链路(103)。所述数据通信链路用类似于例如图3A中所示的点到点数据通信适配器来实现,其具有三个坐标轴x、y和z上以及六个方向+x(181)、-x(182)、+y(183)、-y(184)、+z(185)和-z(186)中去和来的数据通信链路。所述链路和计算节点被该最优化用于点到点操作的数据通信网络组织为环绕以形成环形(107)的三维网格(105)。所述环形中的每个计算节点具有由x、y、z坐标组唯一指定的在该环形中的位置。为了说明的清晰,图4的数据通信网络被示为仅具有27个计算节点,但读者将认识到,最优化用于点到点操作的、用于执行根据本发明的实施例的全局收集操作的数据通信网络可以仅包含一些计算节点,或者可以包含数千计算节点。
为进一步说明,图5示出了通过将计算节点组织为树而被最优化用于集体操作的示例数据通信网络(108)。图5的示例数据通信网络包括连接到所述计算节点以便将所述计算节点组织为树的数据通信链路。在图5的示例中,点代表并行计算机的计算节点(102),并且所述点之间的虚线(103)代表计算节点之间的数据通信链路。所述数据通信链路用类似于例如图3B中所示的集体操作数据通信适配器来实现,其中,每个节点典型在有一些例外的情况下提供去往和来自两个孩子节点的数据通信以及去往和来自双亲节点的数据通信。二叉树中的节点可以被表征为根节点(202)、分支节点(204)和叶节点(206)。所述根节点(202)具有两个孩子但没有双亲。所述叶节点(206)每个具有一个双亲,但叶节点没有孩子。所述分支节点(204)每个同时具有一个双亲和两个孩子。所述链路和计算节点由此被该最优化用于集体操作的数据通信网络组织为二叉树(108)。为说明的清晰,图5的数据通信网络被示为仅具有31个计算节点,但读者将认识到,最优化用于集体操作的、用于执行根据本发明的实施例的全局收集操作的数据通信网络可以仅包含一些计算节点,或者可以包含数千计算节点。
在图5的示例中,所述树中的每个节点被分配了被称为“等级(rank)”(250)的单元标识符。节点的等级唯一地标识了同时用于树型网络中的点到点和集体操作的该节点在所述树型网络中的位置。本例中的等级被分配为这样的整数,其开始于被分配给所述根节点(202)的0、被分配给树的第二层中的第一个节点的1、被分配给树的第二层中的第二个节点的2、被分配给树的第三层中的第一个节点的3、被分配给树的第三层中的第二个节点的4,等等。为简化说明,仅该树的开始三层的等级在这里被示出,但所述树型网络中的所有计算节点被分配了唯一的等级。
为进一步说明,图6阐明了示出用于执行根据本发明的实施例的对并行计算机(100)的全局收集操作的示例方法的流程图。所述并行计算机包括多个计算节点(102),所述计算节点这里用树型网络(108)中的黑点代表。树型网络(108)是并行计算机(100)的数据通信网络,其包括连接到计算节点以便将所述计算节点组织为树的数据通信链路(103)。在本例中,所述数据通信链路(103)由连接代表所述计算节点(102)的点的虚线代表。除本例中之外,每个计算节点具有专用于并行归约操作的单独ALU。所述单独的、专用ALU未在图6中示出,但其属于上面关于图2中的标号(170)被示出和描述的类型。
除其作为树的组织之外,并行计算机(100)的计算节点(102)还被组织为用于对并行计算机(100)的集体并行操作的计算节点的操作组(132),并且所述操作组中的每个计算节点被分配了唯一的等级。所述等级这里被示为直接邻近操作组(132)中的每个计算节点的左边的整数。本例中的等级被分配为这样的一系列整数,其开始于被分配给根节点的0、被分配给所述树的的第二层中的第一个节点的1、被分配给所述树的第二层中的第二个节点的2、被分配给所述树的第三层中的第一个节点的3,等等。
图6的所述方法包括:通过在每个存储器缓冲中等级相关位置为用于全局归约操作的贡献数据和在每个存储器缓冲中所有其它位置为零,在所述操作组中的每个计算节点上配置(302)存储器缓冲。图6的所述方法还包括用每个存储器缓冲的全部内容以按位或功能对所述操作组中的计算节点执行(304)全局归约操作。
在图6的所述方法中,执行(304)所述全局归约包括以按位或执行(306)对所述操作组中的计算节点的归约操作,其中,所述执行(306)包括在将结果的任意部分广播到所述操作组中的计算节点之前,在根计算节点中产生归约操作的全部结果。在图6的所述方法中,执行(304)所述全局归约还包括:在根计算节点中产生归约操作的全部结果之后,在所述操作组中的计算节点上执行(308)对所述归约操作的结果的单一广播。
图6的所述方法被进一步参考图7A、7B和7C说明。图7A、7B和7C阐明了在图6中的标号(132)示出的同一计算节点(102)组织组的框图。通过一起阅读,图7A、7B和7C示出了伴随缓存状态的变化的图6的所述方法的执行序列。
图7A示出了恰恰在图6的所述方法的步骤(302)中配置所述存储器缓存之后所述操作组的每个计算节点(102)中的存储器缓存的状态。每个存储器缓存对于保存全局收集操作的全部结果足够大。每个存储器缓存被以用于全局归约操作的贡献数据配置。每个存储器缓存中的所述贡献数据位于对应于所述该存储器缓冲所位于的计算节点的等级的位置,并且每个存储器缓存中的所有其它位置被设为0。所述贡献数据为便于说明被取为代表每个计算节点的等级的整数,0代表根节点,1代表计算节点1,2代表结算节点2,等等。等级为零的所述根计算节点具有在其缓存的第0位置的为0的贡献数据和在所有其它缓存位置的0。等级为1的计算节点具有在其缓存的第1位置的为1的贡献数据和在所有其它缓存位置的0。等级为2的计算节点具有在其缓存的第2位置的为2的贡献数据和在所有其它缓存位置的0。对于所述操作组中的所有计算节点中的所有缓存都是如此。
图7B示出了恰恰在图6的所述方法的步骤(306)中执行归约操作之后所述操作组的每个计算节点(102)中的存储器缓冲的状态。每个存储器缓冲的内容已被与所述树中所有更低的存储器缓冲的内容进行按位或。等级为1的计算节点的缓存的内容0100000被分别与等级为3和等级为4的计算节点的缓存的内容0003000和0000400进行按位或,得到等级为1的计算节点的缓存中的0103400。等级为2的计算节点的缓存的内容0020000被分别与等级为5和等级为6的计算节点的缓存的内容0000050和0000006进行按位或,得到等级为2的计算节点的缓存中的0020056。等级为0的计算节点的缓存的内容0000000被分别与等级为1和等级为2的计算节点的缓存的内容0103400和0020056进行按位或,得到等级为0的计算节点的缓存中的0123456。所述处理步骤用归约操作和按位或来实现,但其效果是,在缓存中的等级位置从每个计算节点向根计算节点的缓存的贡献数据的收集。
图7C示出了恰恰在图6的所述方法的步骤(308)中执行广播操作之后所述操作组的每个计算节点(102)中的存储器缓冲的状态。等级为0的根计算节点的缓存的内容,即0123456,已被广播到所述操作组中的所有计算节点,并且所述操作组中的所有缓存现在包含相同的值0123456。广播所述归约操作的结果实现了图6的所述方法中的步骤(304)的全局归约。结合了缓存的初始配置的全局归约的效果是全局收集,即其后伴随将收集的结果向所述操作组中的所有计算节点的广播的、在缓存中的等级位置从每个计算节点向根计算节点的缓存的贡献数据的收集。
为进一步说明,图8阐明了示出用于执行根据本发明的实施例的对并行计算机的全局收集操作的另一示例方法的流程图。图8的所述方法类似于图6的所述方法。如图6的所述方法那样,图8的所述方法在包括由树型网络(108)中的黑点代表的多个计算节点(102)的并行计算机上被执行。树型网络(108)是并行计算机(100)的数据通信网络,其包括连接到计算节点以便将所述计算节点组织为树的数据通信链路(103)。所述数据通信链路(103)由连接代表所述计算节点(102)的点的虚线代表。如图6的例子中那样,每个计算节点具有专用于并行归约操作的单独ALU。所述单独的、专用ALU在图8中未被示出,但其属于如上面关于图2中的标号(170)所示出和描述的类型。
除其作为树的组织外,并行计算机(100)的计算节点(102)还被组织为计算节点的操作组(132)以用于对并行计算机(100)的集体并行操作,并且所述操作组中的每个计算节点被分配了唯一的等级。所述等级在图8中被示为直接邻近操作组(132)中的每个计算节点的左边的整数。所述等级被分配为一系列整数,其开始于被分配给根节点的0、被分配给树的第二层中的第一个节点的1、被分配给树的第二层中的第二个节点的2、被分配给树的第三层中的第一个节点的3,等等。
如图6的所述方法那样,图8的所述方法包括:通过在每个存储器缓冲中等级相关位置为用于全局归约的贡献数据和在每个存储器缓冲中所有其它位置为零,在所述操作组中的每个计算节点上配置(302)存储器缓冲。图8的所述方法还包括用每个存储器缓冲的全部内容以按位或功能对所述操作组的计算节点执行(304)全局归约操作。
与图6的所述方法不同,在图8的所述方法中,执行(304)所述全局归约包括以按位或执行(310)对所述操作组中的计算节点的归约操作,所述执行(310)包括产生从所述操作组中的其它计算节点到根计算节点中的归约操作的一系列中间结果。在图8的所述方法中,执行(304)所述全局归约还包括:在产生所述一系列中间结果的同时,在所述操作组中的计算节点上执行(312)对应的一系列对所述归约操作的中间结果的广播。
图8的所述方法被进一步参考图9A-9E进行说明。图9A-9E阐明了在图8的标号(132)示出的计算节点(102)的同一组织组的框图。通过一起阅读,图9A-9E示出了伴随缓存状态的变化的图8的所述方法的执行序列。
图9A示出了恰恰在图8的所述方法的步骤(302)中配置所述存储器缓冲之后所述操作组的每个计算节点(102)中的存储器缓冲的状态。每个存储器缓冲对于保存全局收集操作的全部结果来说足够大。每个存储器缓冲配置有用于全局归约操作的贡献数据。每个存储器缓冲中的贡献数据位于对应于该存储器缓冲所位于的计算节点的等级的位置,并且每个存储器缓冲中的所有其它位置被设为0。所述贡献数据为便于说明被取为代表每个计算节点的等级的整数,0代表根节点,1代表计算节点1,2代表计算节点2,等等。等级为0的根计算节点具有在其缓存的第0位置的为0的贡献数据和在所有其它缓存位置的0。等级为1的计算节点具有在其缓存的第1位置为1的贡献数据和在所有其它缓存位置的0。等级为2的计算节点具有在其缓存的第2位置为2的贡献数据和在所有其它缓存位置的0。对于所述操作组中的所有计算节点中的所有缓存都是如此。
图9B示出了恰恰在图8的所述方法中步骤(310)的所述归约操作中一系列中间结果的第一个的产生之后的所述操作组的每个计算节点(102)中的存储器缓冲的状态。每个存储器缓冲的内容已被与所述树的下一层中的所有较低存储器缓存的内容进行按位或。等级为0的计算节点的缓存的内容0000000被分别与等级为1和等级为2的计算节点的缓存的内容0100000和0020000进行按位或,得到等级为0的计算节点的缓存中的0120000。等级为1的计算节点的缓存的内容0100000被分别与等级为3和等级为4的计算节点的缓存的内容0003000和0000400进行按位或,得到等级为1的计算节点的缓存中的0103400。等级为2的计算节点的缓存的内容0020000被分别与等级为5和等级为6的计算节点的缓存的内容0000050和0000006进行按位或,得到等级为2的计算节点的缓存中的0020056。
图9C示出了恰恰在图8的所述方法的步骤(312)中一系列对中间结果的广播中的第一个之后所述操作组的每个计算节点(102)中的存储器缓冲的状态。等级为0的根计算节点的缓存的内容,即0120000,已被广播到所述操作组中的所有计算节点,并且与所述操作组中的所有计算节点的之前缓存内容进行按位或,以致:
·之前包含01200000的等级0的计算节点中的缓存(被与其自己之前的内容进行或)现在包含0120000。
·之前包含0103400的等级1的计算节点中的缓存现在包含0123400。
·之前包含0020056的等级2的计算节点中的缓存现在包含0120056。
·之前包含0003000的等级3的计算节点中的缓存现在包含0123000。
·之前包含0000400的等级4的计算节点中的缓存现在包含0120400。
·之前包含0000050的等级5的计算节点中的缓存现在包含0120050。
·之前包含0000006的等级6的计算节点中的缓存现在包含0120006。
图9D示出了恰恰在图8的所述方法中步骤(310)的所述归约操作中一系列中间结果中的第二个的产生之后所述操作组的每个计算节点(102)中的存储器缓冲的状态。每个存储器缓冲的内容已被与所述树的下一层中的所有较低存储器缓冲的内容进行按位或。等级0的计算节点的缓存的内容0120000被分别与等级1和等级2的计算节点的缓存的内容0123400和0120056进行按位或,得到等级0的计算节点的缓存中的0123456。等级1的计算节点的缓存的内容0123400被分别与等级3和等级4的计算节点的缓存的内容0123000和0120400进行按位或,得到等级1的计算节点的缓存中的0123400。等级2的计算节点的缓存的内容0120056被分别与等级5的等级6的计算节点的缓存的内容0120050和0120006进行按位或,得到等级2的计算节点的缓存中的0120056。根据图8的所述方法的数据处理到目前已使用归约操作和按位或被实现,但其总体结果是在缓存中的等级位置从每个计算节点到根计算节点的缓存中的贡献数据的收集。
图9E示出了恰恰在图8的所述方法的步骤(312)中一系列对中间结果的广播中的第二个之后的所述操作组的每个计算节点(102)中的存储器缓冲的状态。等级0的根计算节点的缓存的内容,即0123456,已被广播到所述操作组中的所有计算节点,并且所述操作组中的所有缓存现在包含相同的值0123456。广播所述归约操作的中间结果实现了图8的所述方法中的步骤(304)的全局归约。结合了缓存的初始配置的全局归约的效果是全局收集,即其后伴随将收集的结果广播到所述操作组中的所有计算节点的、在缓存中的等级位置的从每个计算节点到根计算节点的缓存中的贡献数据的收集。
由于上述说明读者将认识到,对并行计算机执行全局收集操作的好处包括这一事实:归约操作、以及因此基于归约操作的集体全局收集非常快,在具有树型拓扑的网络上甚至更快,在每个计算节点中具有专用ALU的树型网络上甚至更快。此外,将执行根据本发明的全局收集的典型方法与上面描述的现有技术的算法比较。所述现有技术的方法对于操作组中的每个计算节点使用一次广播,在可能包含数千计算节点(其中每个计算节点根据所述现有技术算法将代表对单独广播的需求)的组中的巨大数据通信负担是数千次广播。执行根据本发明的全局收集可以用少至由单一归约操作和单一广播组成的单一全局收集来执行。执行根据本发明的实施例的全局收集的其它方法仅用少量广播来执行,其数量比上面描述的现有技术方法所需的数量少得多。
本发明的示例实施例主要是在用于对并行计算机执行全局收集操作的完全运行的计算机系统的上下文中被描述。然而,本领域的技术人员将认识到,本发明还可以被实施在被部署在用于任意合适的数据处理系统的信号承载媒体上的计算机程序产品中。所述信号承载媒体可以是传输媒体或用于机器可读信息的可记录媒体,其包括磁媒体、光媒体或其它合适的媒体。可记录媒体的例子包括硬盘驱动器中的磁盘(magnetic disk)或磁碟(diskette)、用于光盘驱动器的致密性盘、磁带以及本领域的技术人员将设想的其它媒体。传输媒体的例子包括:用于语音通信的电话网络,以及数字数据通信网络,例如与因特网及万维网通信的网络和以太网(EthernetsTM)。
本领域的技术人员将立即认识到,具有合适编程装置的任意计算机系统将能够执行被实施为程序产品的根据本发明的所述方法的步骤。本领域的技术人员将立即认识到,尽管本说明书中描述的示例实施例的一些是面向在计算机硬件上被安装并且执行的软件的,然而,被实现为固件或硬件的可选实施例也在本发明的范围内。
从前面的描述中将理解,在不脱离本发明真正精神的情况下,可以在本发明的各种实施例中作出修正和改变。本说明书中的描述仅用于说明目的,并且不被解释为限制性的意义。本发明的范围仅由权利要求的语言来限制。
Claims (10)
1.一种用于对并行计算机执行全局收集操作的方法,所述并行计算机包括多个计算节点,所述计算节点被组织为至少一个用于所述并行计算机的集体并行操作的计算节点的操作组,所述操作组中的每个计算节点被分配了唯一的等级,所述方法包括:
通过在每个存储器缓冲中等级相关位置为用于全局归约操作的贡献数据和在每个存储器缓冲中的所有其它位置为零,在所述操作组中的每个计算节点上配置存储器缓冲;以及
用每个存储器缓冲的全部内容以按位或功能对所述操作组中的计算节点执行全局归约操作。
2.根据权利要求1所述的方法,其中所述并行计算机还包括数据通信网络,所述数据通信网络包括连接到所述计算节点以便将所述计算节点组织为树的数据通信链路。
3.根据权利要求1所述的方法,其中所述并行计算机还包括数据通信网络,所述数据通信网络包括连接到所述计算节点以便将所述计算节点组织为树的数据通信链路,每个计算节点具有专用于并行归约操作的单独算术逻辑单元。
4.根据权利要求1所述的方法,其中执行所述全局归约还包括:
使用按位或对所述操作组中的计算节点执行归约操作,其包括,在将结果的任意部分广播到所述操作组中的计算节点之前,在根计算节点中产生所述归约操作的全部结果;以及
在根计算节点中产生所述归约操作的全部结果之后,在所述操作组中的计算节点上执行对所述归约操作的结果的单一广播。
5.根据权利要求1所述的方法,其中执行所述全局归约还包括:
以按位或对所述操作组中的计算节点执行归约操作,其包括产生从所述操作组中的其它计算节点到其根计算节点中的所述归约操作的一系列中间结果;以及
当产生所述一系列中间结果时,在所述操作组中的计算节点上执行对应的一系列对所述归约操作的中间结果的广播。
6.一种用于执行全局收集操作的并行计算机,所述并行计算机包括多个计算节点,所述计算节点被组织为至少一个用于所述并行计算机的集体并行操作的计算节点的操作组,所述操作组中的每个计算节点被分配了唯一的等级,所述并行计算机包括计算机处理器、操作上耦合到所述计算机处理器的计算机存储器,所述计算机存储器已在其中部署了这样的计算机程序指令,所述计算机指令能够:
通过在每个存储器缓冲中的等级相关位置为用于全局归约操作的贡献数据和在每个存储器缓冲中的所有其它位置为零,在所述操作组中的每个计算节点上配置存储器缓冲;以及
用每个存储器缓冲的全部内容以按位或功能对所述操作组中的计算节点执行全局归约操作。
7.根据权利要求6所述的并行计算机,其中所述并行计算机还包括数据通信网络,所述数据通信网络包括连接到所述计算节点以便将所述计算节点组织为树的数据通信链路。
8.根据权利要求6所述的并行计算机,其中所述并行计算机还包括数据通信网络,所述数据通信网络包括连接到所述计算节点以便将所述计算节点组织为树的数据通信链路,每个计算节点具有专用于并行归约操作的单独算术逻辑单元。
9.根据权利要求6所述的并行计算机,其中执行所述全局归约还包括:
用按位或对所述操作组中的计算节点执行归约操作,其包括,在将结果的任意部分广播到所述操作组中的计算节点之前,在根计算节点中产生所述归约操作的全部结果;以及
在根计算节点中产生所述归约操作的全部结果之后,在所述操作组中的计算节点上执行对所述归约操作的结果的单一广播。
10.根据权利要求6所述的并行计算机,其中执行所述全局归约还包括:
用按位或对所述操作组中的计算节点执行归约操作,其包括,产生从所述操作组中的其它计算节点到其根计算节点中的所述归约操作的一系列中间结果;以及
当产生所述一系列中间结果的时,在所述操作组中的计算节点上执行对应的一系列对所述归约操作的中间结果的广播。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/279,620 | 2006-04-13 | ||
US11/279,620 US20070245122A1 (en) | 2006-04-13 | 2006-04-13 | Executing an Allgather Operation on a Parallel Computer |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101055532A true CN101055532A (zh) | 2007-10-17 |
Family
ID=38606215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710005534.3A Pending CN101055532A (zh) | 2006-04-13 | 2007-02-12 | 对并行计算机执行全局收集操作的方法及其并行计算机 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20070245122A1 (zh) |
CN (1) | CN101055532A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012119290A1 (zh) * | 2011-03-04 | 2012-09-13 | 富士通株式会社 | 分布式计算方法和分布式计算系统 |
CN103154925A (zh) * | 2010-10-15 | 2013-06-12 | 相干逻辑公司 | 多处理器系统中的通信禁用 |
CN103444142A (zh) * | 2011-03-22 | 2013-12-11 | 富士通株式会社 | 并行计算机、通信控制装置以及通信控制方法 |
CN103246508B (zh) * | 2012-02-09 | 2016-06-22 | 国际商业机器公司 | 用于开发并行计算机的集合操作的方法和装置 |
CN106575240A (zh) * | 2014-08-15 | 2017-04-19 | 英特尔公司 | 促进用于计算装置上可变位长事务的动态线程安全操作 |
WO2021195987A1 (en) * | 2020-03-31 | 2021-10-07 | Alibaba Group Holding Limited | Topology aware multi-phase method for collective communication |
CN115686819A (zh) * | 2021-07-23 | 2023-02-03 | 慧与发展有限责任合伙企业 | 用于实施基于网络接口的全归约操作的系统和方法 |
CN115686819B (zh) * | 2021-07-23 | 2024-07-05 | 慧与发展有限责任合伙企业 | 用于执行全归约操作的方法和装置 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8516444B2 (en) * | 2006-02-23 | 2013-08-20 | International Business Machines Corporation | Debugging a high performance computing program |
US7796527B2 (en) * | 2006-04-13 | 2010-09-14 | International Business Machines Corporation | Computer hardware fault administration |
US9330230B2 (en) * | 2007-04-19 | 2016-05-03 | International Business Machines Corporation | Validating a cabling topology in a distributed computing system |
US8140826B2 (en) * | 2007-05-29 | 2012-03-20 | International Business Machines Corporation | Executing a gather operation on a parallel computer |
US8161480B2 (en) * | 2007-05-29 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation using shared memory |
US7827385B2 (en) * | 2007-08-02 | 2010-11-02 | International Business Machines Corporation | Effecting a broadcast with an allreduce operation on a parallel computer |
US7831866B2 (en) * | 2007-08-02 | 2010-11-09 | International Business Machines Corporation | Link failure detection in a parallel computer |
US8122228B2 (en) * | 2008-03-24 | 2012-02-21 | International Business Machines Corporation | Broadcasting collective operation contributions throughout a parallel computer |
US8422402B2 (en) * | 2008-04-01 | 2013-04-16 | International Business Machines Corporation | Broadcasting a message in a parallel computer |
US8484440B2 (en) | 2008-05-21 | 2013-07-09 | International Business Machines Corporation | Performing an allreduce operation on a plurality of compute nodes of a parallel computer |
US8375197B2 (en) * | 2008-05-21 | 2013-02-12 | International Business Machines Corporation | Performing an allreduce operation on a plurality of compute nodes of a parallel computer |
US8161268B2 (en) * | 2008-05-21 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation on a plurality of compute nodes of a parallel computer |
JP2009301101A (ja) * | 2008-06-10 | 2009-12-24 | Nec Corp | プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法 |
US8281053B2 (en) | 2008-07-21 | 2012-10-02 | International Business Machines Corporation | Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations |
US8571834B2 (en) * | 2010-01-08 | 2013-10-29 | International Business Machines Corporation | Opcode counting for performance measurement |
US8565089B2 (en) * | 2010-03-29 | 2013-10-22 | International Business Machines Corporation | Performing a scatterv operation on a hierarchical tree network optimized for collective operations |
US8332460B2 (en) | 2010-04-14 | 2012-12-11 | International Business Machines Corporation | Performing a local reduction operation on a parallel computer |
US9424087B2 (en) | 2010-04-29 | 2016-08-23 | International Business Machines Corporation | Optimizing collective operations |
US8346883B2 (en) | 2010-05-19 | 2013-01-01 | International Business Machines Corporation | Effecting hardware acceleration of broadcast operations in a parallel computer |
US8949577B2 (en) | 2010-05-28 | 2015-02-03 | International Business Machines Corporation | Performing a deterministic reduction operation in a parallel computer |
US8489859B2 (en) | 2010-05-28 | 2013-07-16 | International Business Machines Corporation | Performing a deterministic reduction operation in a compute node organized into a branched tree topology |
US8776081B2 (en) | 2010-09-14 | 2014-07-08 | International Business Machines Corporation | Send-side matching of data communications messages |
US8549259B2 (en) * | 2010-09-15 | 2013-10-01 | International Business Machines Corporation | Performing a vector collective operation on a parallel computer having a plurality of compute nodes |
US8566841B2 (en) | 2010-11-10 | 2013-10-22 | International Business Machines Corporation | Processing communications events in parallel active messaging interface by awakening thread from wait state |
US8893083B2 (en) | 2011-08-09 | 2014-11-18 | International Business Machines Coporation | Collective operation protocol selection in a parallel computer |
US8910178B2 (en) | 2011-08-10 | 2014-12-09 | International Business Machines Corporation | Performing a global barrier operation in a parallel computer |
US10382527B2 (en) * | 2013-10-16 | 2019-08-13 | International Business Machines Corporation | Performing optimized collective operations in an irregular subcommunicator of compute nodes in a parallel computer |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7313582B2 (en) * | 2001-02-24 | 2007-12-25 | International Business Machines Corporation | Arithmetic functions in torus and tree networks |
-
2006
- 2006-04-13 US US11/279,620 patent/US20070245122A1/en not_active Abandoned
-
2007
- 2007-02-12 CN CN200710005534.3A patent/CN101055532A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103154925A (zh) * | 2010-10-15 | 2013-06-12 | 相干逻辑公司 | 多处理器系统中的通信禁用 |
CN103154925B (zh) * | 2010-10-15 | 2016-08-24 | 相干逻辑公司 | 多处理器系统中的通信禁用 |
WO2012119290A1 (zh) * | 2011-03-04 | 2012-09-13 | 富士通株式会社 | 分布式计算方法和分布式计算系统 |
CN103444142A (zh) * | 2011-03-22 | 2013-12-11 | 富士通株式会社 | 并行计算机、通信控制装置以及通信控制方法 |
CN103444142B (zh) * | 2011-03-22 | 2016-03-09 | 富士通株式会社 | 并行计算机、通信控制装置以及通信控制方法 |
CN103246508B (zh) * | 2012-02-09 | 2016-06-22 | 国际商业机器公司 | 用于开发并行计算机的集合操作的方法和装置 |
CN106575240A (zh) * | 2014-08-15 | 2017-04-19 | 英特尔公司 | 促进用于计算装置上可变位长事务的动态线程安全操作 |
WO2021195987A1 (en) * | 2020-03-31 | 2021-10-07 | Alibaba Group Holding Limited | Topology aware multi-phase method for collective communication |
CN115686819A (zh) * | 2021-07-23 | 2023-02-03 | 慧与发展有限责任合伙企业 | 用于实施基于网络接口的全归约操作的系统和方法 |
CN115686819B (zh) * | 2021-07-23 | 2024-07-05 | 慧与发展有限责任合伙企业 | 用于执行全归约操作的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20070245122A1 (en) | 2007-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101055532A (zh) | 对并行计算机执行全局收集操作的方法及其并行计算机 | |
CN101055535A (zh) | 并行计算机和定位并行计算机中硬件故障的方法 | |
US9459923B2 (en) | Dynamic run time allocation of distributed jobs with application specific metrics | |
CN100570594C (zh) | 在并行计算机上执行全收集操作的方法和系统 | |
US9569399B2 (en) | Routing data communications packets in a parallel computer | |
US8140826B2 (en) | Executing a gather operation on a parallel computer | |
US7600095B2 (en) | Executing scatter operation to parallel computer nodes by repeatedly broadcasting content of send buffer partition corresponding to each node upon bitwise OR operation | |
US7752421B2 (en) | Parallel-prefix broadcast for a parallel-prefix operation on a parallel computer | |
CN101055536A (zh) | 在并行计算机数据通信网络中定位硬件故障的方法和设备 | |
US8898678B2 (en) | Runtime optimization of an application executing on a parallel computer | |
CN103309652B (zh) | 用于在并行计算机中开始集合操作的方法和装置 | |
US8891408B2 (en) | Broadcasting a message in a parallel computer | |
US9336053B2 (en) | Constructing a logical tree topology in a parallel computer | |
US20090037511A1 (en) | Effecting a Broadcast with an Allreduce Operation on a Parallel Computer | |
CN101779189B (zh) | 并行计算机中的主动电力管理的方法和装置 | |
US8516494B2 (en) | Executing an application on a parallel computer | |
US9229780B2 (en) | Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system | |
US9665401B2 (en) | Dynamic run time allocation of distributed jobs | |
US9495205B2 (en) | Constructing a logical tree topology in a parallel computer | |
US8788649B2 (en) | Constructing a logical, regular axis topology from an irregular topology | |
US9223393B2 (en) | Collective operation management in a parallel computer | |
US9411777B2 (en) | Performing a rooted-v collective operation by an operational group of compute nodes in a parallel computer | |
US20170322835A1 (en) | Performing a rooted-v collective operation by an operational group of compute nodes in a parallel computer | |
US9807131B2 (en) | Collective operation management in a parallel computer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned | ||
C20 | Patent right or utility model deemed to be abandoned or is abandoned |