CN103309652A - 用于在并行计算机中开始集合操作的方法和装置 - Google Patents
用于在并行计算机中开始集合操作的方法和装置 Download PDFInfo
- Publication number
- CN103309652A CN103309652A CN2013100490400A CN201310049040A CN103309652A CN 103309652 A CN103309652 A CN 103309652A CN 2013100490400 A CN2013100490400 A CN 2013100490400A CN 201310049040 A CN201310049040 A CN 201310049040A CN 103309652 A CN103309652 A CN 103309652A
- Authority
- CN
- China
- Prior art keywords
- node
- computing node
- operational group
- computing
- set operation
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17318—Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17362—Indirect interconnection networks hierarchical topologies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
- Small-Scale Networks (AREA)
Abstract
在包括被耦接用于数据通信并且被组织在用于集合操作的操作组中的计算节点且一个计算节点被分配为根节点的并行计算机中开始集合操作,包括:由非根计算节点标识要在所述计算节点的操作组中执行的集合操作;由该非根计算节点开始所述集合操作在所述操作组的计算节点之中的执行,包括:由该非根计算节点向所述操作组中的其他计算节点中的一个或多个发送活动消息,该活动消息包括配置为开始所述集合操作在所述操作组的计算节点之中的执行的信息;以及由所述操作组的计算节点执行所述集合操作。
Description
技术领域
本发明的领域是数据处理,更具体地,是用于在并行计算机中开始集合操作的方法、装置和产品。
背景技术
1948年EDVAC计算机系统的开发通常被称为计算机时代的开始。自从那时起,计算机系统已经发展为极其复杂的设备。当今的计算机比诸如EDVAC的早期系统复杂得多。计算机系统通常包括硬件和软件组件、应用程序、操作系统、处理器、总线、存储器、输入/输出设备等等的组合。随着半导体处理和计算机架构的进步将计算机的性能推向越来越高,更复杂的计算机软件已经发展为利用更高性能的硬件,得到比仅几年前强大得多的当今的计算机系统。
并行计算是已经经历进步的计算机技术领域。并行计算是同一个任务(被分割并具体适配)在多个处理器上的同时执行以便更快地获得结果。并行计算是基于以下事实:解决问题的处理通常可以被划分为更小的任务,这些更小的任务可以通过某些协调而同时执行。
并行计算机执行并行算法。并行算法可以被分割以在许多不同的处理设备上每次一段地执行,然后最终再收回到一起以得到数据处理结果。一些算法容易划分成段(piece)。划分检查从1到十万的所有数字以查看哪些是质数的任务可以通过例如向每个可用的处理器分配数字的子集然后将肯定结果的列表放回在一起来进行。在此说明书中,执行并行程序的各个段的多个处理设备被称为“计算节点”。并行计算机由计算节点以及其他处理节点构成,其他处理节点包括例如输入/输出(“I/O”)节点以及服务节点。
并行算法是有价值的,因为由于现代处理器工作的方式,经由并行算法比经由串行(非并行)算法更快地进行某些种类的大的计算任务。构造具有单个快速处理器的计算机远比构造具有相同吞吐量的具有许多慢处理器的计算机难得多。还存在对串行处理器的潜在速度的某些理论限制。另一方面,每个并行算法具有串行部分,因此串行算法具有饱和点。在该点之后添加更多的处理器不能产生任何更多的吞吐量,而仅仅是增加开销(overhead)和成本。
并行算法还被设计用于优化更多一个资源、即并行计算机的节点之间的数据通信要求。存在两种并行处理器通信方式,共享存储器或者消息传递。共享存储器处理需要对于数据的另外锁定并且强加了另外的处理器和总线循环的开销,并且还串行化该算法的某些部分。
消息传递处理使用高速数据通信网络和消息缓存,但是此通信在数据通信网络上添加了传送开销以及消息缓存的另外的存储器需要和节点之间的数据通信中的等待时间。并行计算机的设计使用专门设计的数据通信链接以便通信开销将是小的,但是决定流量的是并行算法。
许多数据通信网络架构被用于并行计算机中的节点之间的消息传递。计算节点可以在网络中被组织为例如“环状结构(torus)”或者“网状结构(mesh)”。而且,计算节点在网络中可以被组织为树。环状网络(mesh network)用环绕的链接来连接三维网状结构中的节点。每个节点通过该环状网络连接到其六个相邻者,每个节点通过其在网状结构中的x、y、z坐标被寻址。以这样的方式,环状网络使其自身适合于点对点操作。在树状网络中,节点通常连接为二叉树:每个节点具有一个双亲和两个孩子(尽管依赖于硬件配置,一些节点可能仅具有0个孩子或者一个孩子)。尽管树状网络通常在点对点通信中效率低,但是树状网络提供高带宽和以及对于某些集合(collective)操作、其中所有计算节点同时参与的消息传递操作诸如例如全聚集(allgather)操作的低等待时间。在使用环状网络和树状网络的计算机中,这两个网络通常彼此独立地实现,具有分离的布线电路、分离的物理链接以及分离的消息缓冲器。
发明内容
在本说明书中公开了用于在并行计算机中开始集合操作的方法、装置和产品。该并行计算机包括通过一个或多个数据通信网络耦接用于数据通信的多个计算节点。所述计算节点被组织在用于集合操作的操作组中,一个计算节点被分配为该操作组的根节点。根据本发明的实施例开始集合操作包括:由非根计算节点标识要在所述计算节点的操作组中执行的集合操作;由该非根计算节点开始所述集合操作在所述操作组的计算节点之中的执行,包括:由该非根计算节点向所述操作组中的其他计算节点中的一个或多个发送活动消息,该活动消息包括配置为开始所述集合操作在所述操作组的计算节点之中的执行的信息;以及由所述操作组的计算节点执行所述集合操作。
本发明的以上以及其他目标、特征和优点将从如在附图中例示的本发明的示例实施例的以下更具体的描述而显而易见,附图中类似的参考标记一般表示本发明的示例实施例的类似的部分。
附图说明
图1例示根据本发明的实施例用于在并行计算机中开始集合操作的示例系统。
图2给出根据本发明的实施例在能够开始集合操作的并行计算机中有用的示例计算节点的框图。
图3A给出根据本发明的实施例在用于在并行计算机中开始集合操作的系统中有用的示例点对点适配器的框图。
图3B给出根据本发明的实施例在用于在并行计算机中开始集合操作的系统中有用的示例全局组合网络适配器的框图。
图4给出例示根据本发明的实施例在能够在并行计算机中开始集合操作的系统中有用的对于点对点操作优化的示例数据通信网络的线条图。
图5给出例示根据本发明的实施例在能够在并行计算机中开始集合操作的系统中有用的示例全局组合网络的线条图。
图6给出例示根据本发明的实施例用于在并行计算机中开始集合操作的示例方法的流程图。
图7给出例示根据本发明的实施例在并行计算机中开始集合操作的另一示例方法的流程图。
图8给出例示根据本发明的实施例在并行计算机中开始集合操作的另一示例方法的流程图。
具体实施方式
参考附图描述根据本发明的用于在并行计算机中开始集合操作的示例方法、装置和产品,以图1开始。图1例示根据本发明的实施例的用于在并行计算机中开始集合操作的示例系统。图1的系统包括并行计算机(100)、以数据存储设备(118)的形式的用于该计算机的非易失性存储器、打印机(120)形式的用于该计算机的输出设备以及计算机终端(122)形式的用于该计算机的输入/输出设备。
在图1的例子中的并行计算机(100)包括多个计算节点(102)。计算节点(102)通过几种独立的数据通信网络耦接用于数据通信,该几种独立的数据通信网络包括高速以太网络(174)、联合测试行动组(“JTAG”)网络(104)、使用二叉树网络拓扑的对于集合操作优化的全局组合网络(106)、以及使用环状网络拓扑的对于点对点操作优化的点对点网络(108)。全局组合网络(106)是包括连接到计算节点(102)的数据通信链接以便将计算节点(102)组织为二叉树的数据通信网络。每个数据通信网络利用在计算节点(102)之间的数据通信链接实现。数据通信链接提供用于并行计算机(100)的计算节点(102)之间的并行操作的数据通信。
并行计算机(100)的计算节点(102)被组织为用于并行计算机(100)上的集合并行操作的计算节点的至少一个操作组(132)。计算节点的每个操作组(132)是这样的计算节点的集合:集合并行操作在这些节点上执行。操作组(132)中的每个计算节点被分配了标识该操作组(132)中的特定计算节点的唯一秩(rank)。利用操作组的计算节点之间的数据通信实现集合操作。集合操作是涉及操作组(132)的所有计算节点的那些功能。集合操作是由计算节点的操作组(132)中的所有计算节点同时、即近似在相同时间执行的操作、即消息传递型计算机程序指令。这样的操作组(132)可以包括并行计算机(100)中的所有计算节点(102)或者所有计算节点(102)的子集。集合操作通常围绕点对点操作而建立。集合操作需要在操作组(132)内的所有计算节点上的所有处理利用匹配的变量调用相同的集合操作。“广播”是用于在操作组的计算节点之间移动数据的集合操作的例子。“归约(reduce)”操作是对分布在操作组(132)的计算节点之间的数据执行算术或逻辑功能的集合操作的例子。操作组(132)可以实现为例如MPI“通信器”。
“MPI”指“消息传递接口”,即现有技术的并行通信库,即用于并行计算机上的数据通信的计算机程序指令的模块。可以改进以用在根据本发明的实施例而配置的系统中的现有技术的并行通信库的例子包括MPI和“并行虚拟机”(“PVM”)库。PVM由田纳西(Tennessee)大学、橡树岭国家实验室(OakRidge National Laboratory)和埃默里(Emory)大学开发。MPI由MPI论坛公布,MPI论坛即具有来自定义和维护MPI标准的许多组织的代表的开放组。在撰写本文时MPI是用于在分布式存储器并行计算机上运行并行程序的计算节点之间通信的实际标准。为了易于说明,本说明书有时使用MPI术语,不过像这样使用MPI不是本发明的要求或者限制。
一些集合操作具有在操作组(132)中的特定计算节点上运行的单个发起或接收处理。例如,在“广播”集合操作中,在计算节点上的将数据分发到所有其他计算节点的处理是发起处理。例如,在“聚集”操作中,在计算节点上的接收来自其他计算节点的所有数据的处理是接收处理。这样的发起或者接收处理在其上运行的计算节点被称为逻辑根。
大多数集合操作是四个基本操作的变型或组合:广播、聚集、散布和归约。用于这些集合操作的接口在由MPI论坛公布的MPI标准中定义。但是,在该MPI标准中未定义用于执行集合操作的算法。在广播操作中,所有处理指定相同的根处理,其缓冲器内容将被发送。除了根之外的处理指定接收缓冲器。在该操作之后,所有缓冲器包含来自该根处理的消息。
像广播操作那样,散布操作也是一对多集合操作。在散布操作中,逻辑根将根上的数据划分为片段并且将不同的片段分发到操作组(132)中的每个计算节点。在散布操作中,所有处理通常指定相同的接收计数。发送变量仅对于根处理是重要的,该根处理的缓冲器实际上包含了给定数据类型的发送计数*N元素,其中N是给定组的计算节点中的处理的数量。发送缓冲器被划分并散发到所有处理(包括在逻辑根上的处理)。每个计算节点被分配了称为“秩”的顺序标识符。在该操作之后,根已经按增加的秩的顺序向每个处理发送了发送计数(sendcount)数据元素。秩0接收来自发送缓冲器的第一发送计数数据元素。秩1接收来自发送缓冲器的第二发送计数数据元素,等等。
聚集操作是与散步操作的描述完全相反的多对一集合操作。即,聚集是多对一集合操作,其中将来自排序了(ranked)的计算节点的某数据类型的元素聚集到根节点中的接收缓冲器中。
归约操作也是多对一集合操作,其包括对两个数据元素进行的算术或逻辑功能。所有处理指定相同的“计数”和相同的算术或逻辑功能。在该归约之后,所有处理已将来自计算节点发送缓冲器的计数数据元素发送到根处理。在归约操作中,来自相应的发送缓冲器位置的数据元素通过算术或逻辑操作被成对地组合以产生根处理的接收缓冲器中的单个相应的元素。可以在运行时定义专用归约操作。并行通信库可以支持预定操作。例如,MPI提供以下预定归约操作:
除了计算节点之外,并行计算机(100)还包括通过全局组合网络(106)耦接到计算节点(102)的输入/输出(“I/O”)节点(110,114)。并行计算机(100)中的计算节点(102)可以被划分为处理集以便为了数据通信而将处理集中的每个计算节点连接到相同的I/O节点。因此,每个处理集由一个I/O节点和计算节点(102)的子集组成。整个系统中的计算节点的数量与I/O节点的数量之间的比率通常依赖于并行计算机(102)的硬件配置。例如,在一些配置中,每个处理集可以由八个计算节点和一个I/O节点组成。在一些其他配置中,每个处理集可以由六十四个计算节点和一个I/O节点组成。但是,这样的例子仅仅是用于说明而不是限制。每个I/O节点提供在其处理集的计算节点(102)和I/O设备集之间的I/O服务。在图1的例子中,I/O节点(110,114)通过使用高速以太网实现的局域网(“LAN”)(130)而连接用于数据通信到I/O设备(118,120,122)。
图1的并行计算机(100)还包括经过网络(104)之一耦接到计算节点的服务节点(116)。服务节点(116)提供对多个计算节点共同的服务、管理计算节点的配置、将程序加载到计算节点中、开始计算节点上的程序执行、取回计算节点上的程序操作的结果,等等。服务节点(116)运行服务应用(124)并通过在计算终端(122)上运行的服务应用接口(126)与用户(128)通信。
根据本发明的实施例,图1的并行计算机(100)通常操作用于开始并行计算机中的集合操作。示例的并行计算机(100)的计算节点(102)被组织用于处于用于集合操作的操作组(132)中。在操作组(132)中,一个计算节点被分配为根节点。现有技术的并行计算机通常以这样的方式实现集合操作:需要每个计算节点在执行过程中的同一时间点时布置(post)或者调用相同的集合操作。这样,现有技术的并行计算机中的非根节点不能开始(initiate)集合操作的执行。
在图1的示例的并行计算机(100)中,计算节点根据本发明的实施例而操作以使得非根计算节点能够通过以下操作开始集合操作:通过非根计算节点标识要在计算节点(102)的操作组(132)中执行的集合操作;通过由非根计算节点向该操作组中的其他计算节点中的一个或多个发送活动消息而由该非根计算节点开始该集合操作在该操作组(132)的计算节点之中的执行,其中该活动消息包括配置为开始集合操作在该操作组的计算节点之中的执行的信息;以及由该操作组的计算节点执行该集合操作。在此作为术语使用的活动消息指实现一个或多个回调函数以通知(advise)消息分派(dispatch)和指令完成等的消息。从接收者的角度,活动消息实施(effect)任务,比如执行指令集或者调用函数。以此方式,非根计算节点可以特定按需(ad hoc ondemand)开始集合操作,而不要求所有其他计算节点在执行过程中的相同时间点布置或者调用相同的集合操作。
根据本发明的实施例开始集合操作通常在并行计算机上实现,并行计算机包括通过至少一个数据通信网络组织用于集合操作的多个计算节点。事实上,这样的计算机可以包括数千个这样的计算节点。每个计算节点本身又是一种由一个或多个计算机处理核、其自己的计算机存储器以及其自己的输入/输出适配器组成的计算机。因此,为了进一步说明,图2给出在根据本发明的实施例能够开始集合操作的并行计算机中有用的示例计算节点(102)的框图。图2的计算节点(102)包括多个处理核(165)以及RAM(156)。图2的处理核(165)可以配置在一个或多个集成电路晶片上。处理核(165)通过高速存储器总线(155)连接到RAM(156)并通过总线适配器(194)和扩展总线(168)连接到计算节点的其他组件。
存储在RAM(156)中的是应用程序(226),即使用并行算法执行并行用户级数据处理的计算机程序指令的模块。在图2的例子中,应用(226)可以实现操作组中的参与者,比如MPI型通信器中的秩(rank)。为了说明的目的,考虑应用(226)表示操作组中的非根参与者。为此,图2的例子中的计算节点(102)是非根计算节点。应用(226)的执行致使图2的示例的计算节点(102)根据本发明的实施例而在并行计算机中开始集合操作。计算节点(102)可以通过以下操作执行这样的集合操作开始:由非根计算节点(102)标识要在计算节点的操作组中执行的集合操作(228);由非根计算节点(102)通过向该操作组中的其他计算节点中的一个或多个发送活动消息(230)而开始该集合操作(228)在该操作组的计算节点之中的执行。该活动消息包括配置为开始集合操作在操作组的计算节点之中的执行的信息。最后,该操作组的计算节点执行该集合操作。
还存储在RAM(156)中的是并行通信库(161),即在计算节点之间执行并行通信、包括点对点操作以及集合操作的计算机程序指令的库。可以使用诸如C编程语言的传统编程语言以及使用传统的编程方法编写在两个独立数据通信网络上的节点之间发送和接收数据的并行通信例程来从头开发并行通信例程的库以用在根据本发明的实施例的系统中。或者,可以改进已有的现有技术库以根据本发明的实施例而操作。现有技术的并行通信库的例子包括“消息传递接口”(“MPI”)库以及“并行虚拟机”(“PVM”)库。
还存储在RAM(156)中的是操作系统(162),即用于应用程序对计算节点的其他资源的访问的计算机程序指令和例程的模块。并行计算机的计算节点中的应用程序和并行通信库典型地运行执行的单线程而不用用户登录并没有安全问题,因为该线程被赋予对于该节点的所有资源的完全访问的权利。因此并行计算机中的计算节点上的操作系统要执行的任务的数量以及复杂性比具有同时运行的许多线程的串行计算机上的操作系统的任务更小并且更不复杂。另外,在图2的计算节点(102)上没有视频I/O,即降低对操作系统的要求的另一个因素。因此,与通用计算机相比,操作系统(162)可以是非常轻量级的(lightweight)削减版本的操作系统或者专门为了具体的并行计算机上的操作而开发的操作系统。可以有用地改进、简化以用在计算节点中的操作系统包括UNIXTM、LinuxTM、Windows XPTM、AIXTM、IBM的i/OSTM以及如本领域技术人员将想到的其他操作系统。
图2的示例计算节点(102)包括用于实现与并行计算机的其他节点的数据通信的几个通信适配器(172,176,180,188)。这样的数据通信可以通过RS-232连接、通过诸如USB的外部总线、通过诸如IP网络的数据通信网络以及按本领域技术人员将想到的其他方式串行地执行。通信适配器实现硬件级的数据通信,通过该硬件级的数据通信,一个计算机直接地或者通过网络向另一计算机发送数据通信。在根据本发明的实施例为其开发集合操作的并行计算机中的装置中有用的通信适配器的例子包括用于有线通信的调制解调器、用于有线网络通信的以太网(IEEE802.3)适配器以及用于无线网络通信的802.11b适配器。
图2的例子中的数据通信适配器包括为了数据通信而将示例的计算节点(102)耦接到吉比特以太网(174)的吉比特以太网适配器(172)。吉比特以太网是提供每秒十亿比特(一个吉比特)的数据速率的在IEEE802.3中定义的网络传输标准。吉比特以太网是在多模光纤电缆、单模光纤电缆或者非屏蔽双绞线上工作的以太网的变型。
图2的例子中的数据通信适配器包括为了数据通信将示例的计算节点(102)耦接到JTAG主电路(178)的JTAG从电路(176)。JTAG是名为标准测试访问端口和边界扫描架构的IEEE1149.1标准的普通名称,用于使用边界扫描来测试印刷电路板的测试访问端口。JTAG如此广泛适用使得这时边界扫描或多或少与JTAG意思相同。JTAG不仅用于印刷电路板,而且还用于进行集成电路的边界扫描,并且作为用于调试嵌入系统、提供进入系统中的便利的替换接入点的机制也是有用的。图2的示例的计算节点可以是这些中的所有三个:其通常包括安装在印刷电路板上的一个或多个集成电路并且可以实现为具有其自己的处理核、其自己的存储器以及其自己的I/O能力的嵌入式系统。通过JTAG从属(176)的JTAG边界扫描可以有效地配置计算节点(102)中的处理核寄存器和存储器以用于将连接的节点动态地再分配到在根据本发明的实施例的为其开发集合操作的系统中有用的计算节点的块。
图2的例子中的数据通信适配器包括点对点网络适配器(180),该点对点网络适配器(180)为了数据通信将示例的计算节点(102)耦接到诸如例如配置为三维环状结构或者网状结构的网络的对于点对点消息传递操作最佳的网络(108)。点对点适配器(180)提供通过以下六个双向链接在三个通信轴x、y和z上的在六个方向上的数据通信:+x(181)、-x(182)、+y(183)、-y(184)、+z(185)和-z(186)。
图2的例子中的数据通信适配器包括全局组合网络适配器(188),该全局组合网络适配器(188)为了数据通信将示例的计算节点(102)耦接到诸如例如配置为二叉树的网络的对于集合消息传递操作最佳的全局组合网络(106)。全局组合网络适配器(188)通过三个双向链接为该全局组合网络适配器(188)支持的每个全局组合网络(106)提供数据通信。在图2的例子中,全局组合网络适配器(188)通过以下三个双向链接为全局组合网络(106)提供数据通信:两个到孩子节点(190)以及一个到双亲节点(192)。
示例的计算节点(102)包括多个算术逻辑单元(“ALU”)。每个处理核(165)包括ALU(166),并且分离的ALU(170)专用于全局组合网络适配器(188)的独占使用,以供用在进行归约操作、包括全局归约(allreduce)操作的算术和逻辑功能中。在该并行通信库(161)中的归约例程的计算机程序指令可以将用于算术或逻辑功能的指令锁存到指令寄存器(169)中。当归约操作的算术或者逻辑功能是例如“求和”或者“逻辑或”时,集合操作适配器(188)可以使用由全局组合网络(106)上的节点(190,192)提供的数据和由计算节点(102)上的处理核(165)提供的数据、通过使用在处理核(165)中的ALU(166)或者通常更快地通过使用专用ALU(170)来执行算术或逻辑操作。
但是,通常仅当在全局组合网络适配器(188)中进行算术操作时,全局组合网络适配器(188)仅用于组合从孩子节点(190)接收的数据并将该结果沿该网络(106)向上传递到双亲节点(192)。类似地,全局组合网络适配器(188)可以仅用于传输从双亲节点(192)接收的数据并将该数据沿该网络(106)向下传递到孩子节点(190)。也就是说,计算节点(102)上的处理核(165)都不贡献(contribute)更改ALU(170)的输出的数据,该ALU(170)的输出然后沿该全局组合网络(106)向上或向下传递。因为ALU(170)通常在ALU(170)接收到来自处理核(165)之一的输入之前不输出任何数据到网络(106)上,所以处理核(165)可以将身份元素注入到专用(ALU)170中以在ALU(170)中进行特定算术操作,以便防止更改ALU(170)的输出。但是将身份元素注入ALU中通常消耗多个处理循环。为了在这些情况下进一步增强性能,示例的计算节点(102)包括用于将身份元素注入ALU(170)中以降低防止更改ALU输出所需的处理核资源量的专用硬件(171)。该专用硬件(171)注入与该ALU进行的特定算术操作对应的身份元素。例如,当全局组合网络适配器(188)对从孩子节点(190)接收的数据进行按位或时,专用硬件(171)可以将0注入ALU(170)中以改进整个全局组合网络(106)的性能。
为了进一步说明,图3A给出在根据本发明的实施例为其开发集合操作的系统中有用的示例点对点适配器(180)的框图。该点对点适配器(180)设计为用在对于点对点操作优化的数据通信网络、即按三维环状结构或网状结构组织计算节点的网络中。图3A的例子中的点对点适配器(180)提供沿着x轴通过四个单向数据通信链接的到-x方向上的下一节点(182)和来自该下一节点(182)、以及到+x方向上的下一节点(181)和来自该下一节点(181)的数据通信。图3A的点对点适配器(180)还提供沿着y轴通过四个单向数据通信链接的到-y方向上的下一节点(184)和来自该下一节点(184)、以及到+y方向上的下一节点(183)和来自该下一节点(183)的数据通信。图3A的点对点适配器(180)还提供沿着z轴通过四个单向数据通信链接到的-z方向上的下一节点(186)和来自该下一节点(186)、以及到+z方向上的下一节点(185)以及来自该下一节点(185)的数据通信。
为了进一步说明,图3B给出在根据本发明的实施例为其开发集合操作的系统中有用的示例的全局组合网络适配器(188)的框图。全局组合网络适配器(188)设计为用在对于集合操作优化的网络、即按二叉树组织并行计算机的计算节点的网络中。在图3B的例子中的全局组合网络适配器(188)提供通过四个单向数据通信链接的到全局组合网络的孩子节点(190)以及来自这些孩子节点(190)的数据通信,以及还提供通过两个单向数据通信链接的到全局组合网络的双亲节点(192)以及来自该双亲节点(192)的数据通信。
为了进一步说明,图4给出例示在根据本发明的实施例的为其开发集合操作的系统中有用的对于点对点操作优化的示例的数据通信网络(108)的线条图。在图4的例子中,点表示并行计算机的计算节点(102),并且点之间的虚线表示计算节点之间的数据通信链接(103)。利用与例如图3A中例示的点对点数据通信适配器类似的点对点数据通信适配器来实现这些数据通信链接,并且这些数据通信链接在三个轴x、y和z上并且在+x(181)、-x(182)、+y(183)、-y(184)、+z(185)和-z(186)六个方向上来回。由对于点对点操作优化的此数据通信网络将链接和计算节点组织为三维网(105)。该网(105)具有在每个轴上的连接该网(105)的相对侧的网(105)中的最外侧计算节点的环绕链接。这些环绕链接形成环状结构(107)。环状结构中的每个计算节点具有在该环状结构中的由一组x、y和z坐标唯一地指定的位置。读者将注意到,为了清楚已经省略了在y和z方向上的环绕链接,但是这些链接以与x方向上的例示的环绕链接类似的方式而配置。为了清楚说明,图4的数据通信网络例示为仅具有27个计算节点,但是读者将认识到,用于在根据本发明的实施例的为其开发集合操作的系统中使用的对于点对点操作优化的数据通信网络可以仅包含几个计算节点或者可以包含几千个计算节点。为了易于说明,图4的数据通信网络被例示为仅具有三个维度,但是读者将认识到,用于在根据本发明的实施例的为其开发集合操作的系统中使用的对于点对点操作优化的数据通信网络实际上可以实现为二维、四维、五维等等。现在一些超级计算机使用五维网状或者环状网络,包括例如IBM的Blue Gene QTM。
为了进一步说明,图5给出例示在根据本发明的实施例的为其开发集合操作的系统中有用的示例的全局组合网络(106)的线条图。图5的示例的数据通信网络包括连接到计算节点以便将计算节点组织为树的数据通信链接(103)。在图5的例子中,点表示并行计算机的计算节点(102),并且点之间的虚线(103)表示计算节点之间的数据通信链接。利用类似于例如图3B中例示的全局组合网络适配器的全局组合网络适配器来实现数据通信链接,除了一些例外,每个节点通常提供到两个孩子节点和来自两个孩子节点的数据通信以及到双亲节点以及来自该双亲节点的数据通信。全局组合网络(106)中的节点可以被刻画为物理根节点(202)、分支节点(204)以及叶子节点(206)。物理根(202)具有两个孩子但是没有双亲,并且之所以这样称呼是因为物理根节点(202)是物理地配置在二叉树的顶部的节点。叶子节点(206)每个具有双亲,但是叶子节点不具有孩子。分支节点(204)每个具有一个双亲和两个孩子。链接和计算节点由此由对于集合操作优化的此数据通信网络组织为二叉树(106)。为了清楚的说明,图5的数据通信网络被例示为仅具有31个计算节点,但是读者将认识到用在根据本发明的实施例的为其开发集合操作的系统中的对于集合操作优化的全局组合网络(106)可以仅包含几个计算节点或者可以包含数千个计算节点。
在图5的例子中,树中的每个节点被分配了称为“秩”的单元标识符(250)。秩实际上标识正执行根据本发明的实施例的并行操作的任务或处理。使用秩来标识节点假定仅一个这样的任务正在每个节点上执行。至于多于一个参与任务在单个节点上执行的情况,秩标识这样的任务而不是标识节点。秩唯一地标识任务在树网络中的位置以供在树网络的点对点和集合操作两者中使用。此例子中的秩被分配为整数,以0分配给根任务或根节点(202)、1分配给树的第二层中的第一节点、2分配给树的第二层中的第二节点、3分配给树的第三层中的第一节点、4分配给树的第三层中的第二节点等等而开始。为了易于例示,在此仅示出了树的前三个层的秩,但是树网络中的所有计算节点都被分配了唯一的秩。
为了进一步说明,图6给出例示根据本发明的实施例在并行计算机中开始集合操作的示例方法的流程图。在图6的方法中,并行计算机包括通过一个或多个数据通信网络耦接用于数据通信的多个计算节点。这些计算节点还被组织在用于集合操作的操作组中,其中一个计算节点被分配为该操作组的根节点。
图6的方法包括由非根计算节点标识(602)要在计算节点的操作组中执行的集合操作。由非根计算节点标识(602)要在计算节点的操作组中执行的集合操作可以通过发现执行期间的条件来执行,其中该条件与预定的集合操作相关联。在一些实施例中,例如,计算节点可以将本地产生的警报和事件报告给其他计算节点。在一些实施例中,这样的警报和事件可以与预定的集合操作相关联,以便在发生警报或事件时,非根节点配置为开始该预定的集合操作。
图6的方法还包括由非根计算节点开始(604)该集合操作在该操作组的计算节点之中的执行。在图6的方法中,由非根计算节点开始(604)该集合操作在该操作组的计算节点之中的执行通过由该非根计算节点向该操作组中的其他计算节点中的一个或多个发送(606)活动消息来执行。该活动消息包括配置为开始集合操作在操作组的计算节点之中执行的信息。这样的信息可以包括要执行的函数的句柄、要对其进行操作的数据、可执行的指令、回调变量以及具有本领域技术的读者将想到的其他信息。
图6的方法还包括由该操作组的计算节点执行(610)该集合操作。执行(610)该集合操作可以通过进行在该活动消息中指定的操作、将该活动消息中指定的数据发送到在该活动消息中指定的计算节点以及按具有本领域技术的读者将想到的其他方式来执行。
为了进一步说明,图7给出例示根据本发明的实施例在并行计算机中开始集合操作的另一示例方法的流程图。图7的方法与图6的方法的类似之处在于,图7的方法也包括标识(602)集合操作、通过发送(606)活动消息开始(604)该集合操作的执行以及执行(608)该集合操作。但是,图7的方法与图6的方法的不同之处在于,在图7的方法中,该操作组的计算节点按树拓扑配置并且开始(604)该集合操作的执行包括开始(702)广播操作的执行。在图7的方法中,开始(702)广播操作的执行通过由非根计算节点向根计算节点发送活动消息来执行,该活动消息指示根节点将贡献数据(contribution data)以及另一指令发送到根节点的每个孩子,该另一指令用于根节点的孩子将该贡献数据以及该指令发送到根节点的孩子的孩子。有效地,非根计算节点致使根节点通过经过根节点将指令向下传递到根节点的孩子以将贡献数据和该指令转发到根节点的孩子的孩子来实施树中的广播操作。通过向下传递贡献数据和指令两者,该广播操作经过树有效地自传播。考虑从根据本发明的实施例开始的以下示例的广播操作:
根节点接收来自非根计算节点的活动消息;
根节点将贡献数据转发到两个孩子节点;
伴随该贡献数据,根节点还转发指令以执行相同的步骤(转发贡献数据和该指令);
每个孩子节点将该贡献数据与用于进行相同操作的指令一起转发到该孩子节点的孩子;以及
对于每个节点重复转发指令和贡献数据的处理,直到在树的底部的叶子节点已经接收到其双亲的贡献数据为止。
在一些实施例中,沿着树向下的贡献数据广播表示停止发送错误消息的通知(源自非根计算节点)。考虑例如操作组中的许多计算节点经历了相同的错误并将该相同的错误报告给非根计算节点。一旦错误已经被处理(记录等),任何进一步的错误消息都是多余的,并且仅仅增加网络上的数据流量而已。这样,非根计算节点可以开始广播操作,在该广播操作中,贡献数据是停止发送错误消息的通知。
为了进一步说明,图8给出例示根据本发明的实施例开始并行计算机中的集合操作的另一示例方法的流程图。图8的方法与图6的方法的类似之处在于,图8的方法也包括标识(602)集合操作、通过发送(606)活动消息开始(604)该集合操作的执行、以及执行(608)该集合操作。
但是,图8的方法与图6的方法的不同之处在于,在图8的方法中,操作组的计算节点以树拓扑配置,并且开始(604)集合操作的执行包括开始归约操作的执行。在图7的方法中,开始(702)归约操作的执行通过由非根计算节点向位于该树拓扑的底部的叶子节点的每个发送活动消息来执行,该活动消息指示叶子节点的每个将数据转发到叶子节点的双亲、对该数据进行操作、以及向叶子节点的双亲转发执行相同的步骤的指令。
在此例子中,归约操作可以在计算节点的操作组中实施事件合并(consolidation)或者事件抑制(suppression)。一旦标识了事件,非根节点就可以配置为在遍及树的记录中抑制事件的重复或者将几个事件合并为用于在树中记录的单个事件。这样的合并和抑制可以通过根据本发明的实施例的由非根节点开始的归约操作来执行。
如本领域技术人员将认识到的,本发明的方面可以实现为系统、方法或计算机程序产品。因此,本发明的方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或者组合了软件和硬件方面的实施例的形式,它们可以在此统称为“电路”、“模块”或“系统”。此外,本发明的方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有体现在其上的计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读传输介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件、或者以上的任意适当的组合。计算机可读存储介质的更具体的例子(非穷举的列表)将包括以下:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文的上下文中,计算机可读存储介质可以是任何可以包含或存储程序的有形介质,该程序由指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读传输介质可以包括在基带中或者作为载波的部分的传播的数据信号,其中承载了计算机可读的程序代码。这种传播的信号可以采用多种形式的任意形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读传输介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤电缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种编程语言的任意组合来编写用于执行本发明的方面的操作的计算机程序代码,所述编程语言包括诸如Java、Smalltalk、C++等的面向对象的程序设计语言以及诸如“C”编程语言或类似编程语言的传统过程编程语言。程序代码可以完全地在用户的计算机上执行、部分地在用户计算机上执行、作为独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一情形中,远程计算机可以通过任意类型的网络、包括局域网(LAN)或广域网(WAN)连接到用户的计算机,或者,可以使得(例如使用因特网服务提供商通过因特网)连接到外部计算机。
参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的方面。将理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出机器,以便经由计算机或其它可编程数据处理装置的处理器执行的这些指令创建用于实现流程图和/或框图的方框中指定的功能/动作的部件。
也可以把这些计算机程序指令存储在可以使得计算机、其它可编程数据处理装置或其它设备以特定方式工作的计算机可读介质中,以便存储在计算机可读介质中的指令产生包括实现流程图和/或框图的方框中指定的功能/动作的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,以致使在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,以便在计算机或其它可编程装置上执行的指令提供用于实现在流程图和/或框图的方框中指定的功能/动作的过程。
附图中的流程图和框图例示根据本发明的各个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表模块、程序段或代码的部分,所述模块、程序段或代码的部分包含一个或多个用于实现指定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,示出为连续的两个方框实际上可以基本并行地执行,或者这些块有时可以按相反的顺序执行,这依赖于所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合可以由进行指定的功能或动作的专用的基于硬件的系统来实现,或者可以由专用硬件与计算机指令的组合来实现。
根据以上描述将理解,在不偏离本发明的真正精神的情况下,可以在本发明的各个实施例中做出修改和改变。本说明书中的描述仅仅是用于例示的目的并且不应被解释为限制的意思。本发明的范围仅由以下权利要求的语言限制。
Claims (12)
1.一种在并行计算机中开始集合操作的方法,该并行计算机包括多个计算节点,所述计算节点通过一个或多个数据通信网络耦接用于数据通信,所述计算节点被组织在用于集合操作的操作组中,其中一个计算节点被分配为该操作组的根节点,该方法包括:
由非根计算节点标识要在所述计算节点的操作组中执行的集合操作;
由该非根计算节点开始所述集合操作在所述操作组的计算节点之中的执行,包括:由该非根计算节点向所述操作组中的其他计算节点中的一个或多个发送活动消息,该活动消息包括配置为开始所述集合操作在所述操作组的计算节点之中的执行的信息;以及
由所述操作组的计算节点执行所述集合操作。
2.如权利要求1的方法,其中:
所述操作组的计算节点按树拓扑配置;
开始所述集合操作的执行还包括开始广播操作的执行;以及
向所述其他计算节点中的一个或多个发送所述活动消息还包括:由所述非根计算节点向根计算节点发送指示所述根节点向所述根节点的孩子的每个发送贡献数据和另一指令的活动消息,所述另一指令用于所述根节点的孩子将相同的贡献数据和相同的另一指令转发到所述根节点的孩子的孩子。
3.如权利要求2的方法,其中所述贡献数据表示停止发送错误消息的通知。
4.如权利要求1的方法,其中:
所述操作组的计算节点以树拓扑配置;
开始所述集合操作的执行还包括开始归约操作的执行;以及
向所述其他计算机节点中的一个或多个发送活动消息还包括:由所述非根计算节点向位于所述树拓扑的底部的叶子节点的每个发送以下活动消息:该活动消息指示叶子节点的每个将数据转发到叶子节点的双亲、对数据进行操作以及向叶子节点的双亲转发执行相同步骤的指令。
5.如权利要求4的方法,其中所述归约操作在所述计算节点的操作组中执行事件合并。
6.如权利要求4的方法,其中所述归约操作在所述计算节点的操作组中执行事件抑制。
7.一种用于在并行计算机中开始集合操作的装置,该并行计算机包括多个计算节点,所述计算节点通过一个或多个数据通信网络耦接用于数据通信,所述计算节点被组织在用于集合操作的操作组中,其中一个计算节点被分配为该操作组的根节点,该装置包括计算机处理器和操作地耦接到所述计算机处理器的计算机存储器,该计算机存储器具有布置在其中的计算机程序指令,该计算机程序指令在由该计算机处理器执行时致使所述装置执行以下步骤:
由非根计算节点标识要在所述计算节点的操作组中执行的集合操作;
由该非根计算节点开始所述集合操作在所述操作组的计算节点之中的执行,包括:由该非根计算节点向所述操作组中的其他计算节点中的一个或多个发送活动消息,该活动消息包括配置为开始所述集合操作在所述操作组的计算节点之中的执行的信息;以及
由所述操作组的计算节点执行所述集合操作。
8.如权利要求7的装置,其中
所述操作组的计算节点按树拓扑配置;
开始所述集合操作的执行还包括开始广播操作的执行;以及
向所述其他计算节点中的一个或多个发送所述活动消息还包括:由所述非根计算节点向根计算节点发送指示所述根节点向所述根节点的孩子的每个发送贡献数据和另一指令的活动消息,所述另一指令用于所述根节点的孩子将相同的贡献数据和相同的另一指令转发到所述根节点的孩子的孩子。
9.如权利要求8的装置,其中所述贡献数据表示停止发送错误消息的通知。
10.如权利要求7的装置,其中:
所述操作组的计算节点以树拓扑配置;
开始所述集合操作的执行还包括开始归约操作的执行;以及
向所述其他计算机节点中的一个或多个发送活动消息还包括:由所述非根计算节点向位于所述树拓扑的底部的叶子节点的每个发送以下活动消息:该活动消息指示叶子节点的每个将数据转发到叶子节点的双亲、对数据进行操作以及向叶子节点的双亲转发执行相同步骤的指令。
11.如权利要求10的装置,其中所述归约操作在所述计算节点的操作组中执行事件合并。
12.如权利要求10的装置,其中所述归约操作在所述计算节点的操作组中执行事件抑制。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/369,454 US8706847B2 (en) | 2012-02-09 | 2012-02-09 | Initiating a collective operation in a parallel computer |
US13/369,454 | 2012-02-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103309652A true CN103309652A (zh) | 2013-09-18 |
CN103309652B CN103309652B (zh) | 2016-06-15 |
Family
ID=47988726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310049040.0A Expired - Fee Related CN103309652B (zh) | 2012-02-09 | 2013-02-07 | 用于在并行计算机中开始集合操作的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8706847B2 (zh) |
CN (1) | CN103309652B (zh) |
DE (1) | DE102013201078A1 (zh) |
GB (1) | GB2501349B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106575283A (zh) * | 2014-08-18 | 2017-04-19 | 超威半导体公司 | 使用元胞自动机的群集服务器配置 |
CN108140049A (zh) * | 2015-10-20 | 2018-06-08 | 国际商业机器公司 | 基于树的数据结构的并行批量处理 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8422402B2 (en) | 2008-04-01 | 2013-04-16 | International Business Machines Corporation | Broadcasting a message 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 |
US8776081B2 (en) | 2010-09-14 | 2014-07-08 | International Business Machines Corporation | Send-side matching of data communications messages |
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 |
US9495135B2 (en) | 2012-02-09 | 2016-11-15 | International Business Machines Corporation | Developing collective operations for a parallel computer |
US9612857B2 (en) | 2014-04-24 | 2017-04-04 | International Business Machines Corporation | Administering virtual machines in a distributed computing environment |
US9864622B2 (en) | 2014-04-24 | 2018-01-09 | International Business Machines Corporation | Administering virtual machines in a distributed computing environment |
US9703587B2 (en) | 2014-04-24 | 2017-07-11 | International Business Machines Corporation | Administering virtual machines in a distributed computing environment |
US9612856B2 (en) | 2014-04-24 | 2017-04-04 | International Business Machines Corporation | Administering virtual machines in a distributed computing environment |
US9503514B2 (en) | 2014-04-24 | 2016-11-22 | International Business Machines Corporation | Administering virtual machines in a distributed computing environment |
US9411777B2 (en) | 2014-09-16 | 2016-08-09 | International Business Machines Corporation | Performing a rooted-v collective operation by an operational group of compute nodes in a parallel computer |
WO2016118630A1 (en) * | 2015-01-20 | 2016-07-28 | Ultrata Llc | Utilization of a distributed index to provide object memory fabric coherency |
US11086521B2 (en) | 2015-01-20 | 2021-08-10 | Ultrata, Llc | Object memory data flow instruction execution |
US9886210B2 (en) | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
WO2017100281A1 (en) | 2015-12-08 | 2017-06-15 | Ultrata, Llc | Memory fabric software implementation |
US10025605B2 (en) | 2016-04-08 | 2018-07-17 | Advanced Micro Devices, Inc. | Message handler compiling and scheduling in heterogeneous system architectures |
US10296395B2 (en) | 2016-05-09 | 2019-05-21 | International Business Machines Corporation | Performing a rooted-v collective operation by an operational group of compute nodes in a parallel computer |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101114273A (zh) * | 2006-07-24 | 2008-01-30 | 国际商业机器公司 | 在并行计算机上执行全收集操作的方法和系统 |
US20080273457A1 (en) * | 2007-05-01 | 2008-11-06 | Illinois Institute Of Technology | Systems, methods, and protocols for process migration and group membership management |
US20090043988A1 (en) * | 2007-08-10 | 2009-02-12 | Archer Charles J | Configuring Compute Nodes of a Parallel Computer in an Operational Group into a Plurality of Independent Non-Overlapping Collective Networks |
Family Cites Families (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU1747395A (en) | 1994-03-30 | 1995-10-23 | Apple Computer, Inc. | Object oriented message passing system and method |
US5875329A (en) | 1995-12-22 | 1999-02-23 | International Business Machines Corp. | Intelligent batching of distributed messages |
US6038651A (en) | 1998-03-23 | 2000-03-14 | International Business Machines Corporation | SMP clusters with remote resource managers for distributing work to other clusters while reducing bus traffic to a minimum |
JP2000156039A (ja) | 1998-11-18 | 2000-06-06 | Bantan International:Kk | マルチトラック記録再生方式及び装置 |
US6473849B1 (en) | 1999-09-17 | 2002-10-29 | Advanced Micro Devices, Inc. | Implementing locks in a distributed processing system |
US7171484B1 (en) | 2000-05-24 | 2007-01-30 | Krause Michael R | Reliable datagram transport service |
US7640315B1 (en) | 2000-08-04 | 2009-12-29 | Advanced Micro Devices, Inc. | Implementing locks in a distributed processing system |
US6834301B1 (en) | 2000-11-08 | 2004-12-21 | Networks Associates Technology, Inc. | System and method for configuration, management, and monitoring of a computer network using inheritance |
DE60237433D1 (de) | 2001-02-24 | 2010-10-07 | Ibm | Neuartiger massivparalleler supercomputer |
US7058948B2 (en) | 2001-08-10 | 2006-06-06 | Hewlett-Packard Development Company, L.P. | Synchronization objects for multi-computer systems |
US7363474B2 (en) | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
JP4050548B2 (ja) | 2002-04-18 | 2008-02-20 | 株式会社ルネサステクノロジ | 半導体記憶装置 |
US7010576B2 (en) | 2002-05-30 | 2006-03-07 | International Business Machines Corporation | Efficient method of globalization and synchronization of distributed resources in distributed peer data processing environments |
US7571439B1 (en) | 2002-05-31 | 2009-08-04 | Teradata Us, Inc. | Synchronizing access to global resources |
US7263698B2 (en) | 2002-08-29 | 2007-08-28 | Sap Aktiengesellschaft | Phased upgrade of a computing environment |
US7739451B1 (en) | 2002-12-27 | 2010-06-15 | Unisys Corporation | Method and apparatus for stacked address, bus to memory data transfer |
US7073043B2 (en) | 2003-04-28 | 2006-07-04 | International Business Machines Corporation | Multiprocessor system supporting multiple outstanding TLBI operations per partition |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7487501B2 (en) | 2004-08-30 | 2009-02-03 | International Business Machines Corporation | Distributed counter and centralized sensor in barrier wait synchronization |
US7509244B1 (en) | 2004-12-22 | 2009-03-24 | The Mathworks, Inc. | Distributed model compilation |
US7539995B2 (en) | 2004-12-30 | 2009-05-26 | Intel Corporation | Method and apparatus for managing an event processing system |
US7549151B2 (en) | 2005-02-14 | 2009-06-16 | Qnx Software Systems | Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment |
US20060282838A1 (en) | 2005-06-08 | 2006-12-14 | Rinku Gupta | MPI-aware networking infrastructure |
US8131825B2 (en) * | 2005-10-07 | 2012-03-06 | Citrix Systems, Inc. | Method and a system for responding locally to requests for file metadata associated with files stored remotely |
US7808930B2 (en) | 2005-10-26 | 2010-10-05 | Cisco Technology, Inc. | Dynamic multipoint tree rearrangement |
US7958513B2 (en) | 2005-11-17 | 2011-06-07 | International Business Machines Corporation | Method, system and program product for communicating among processes in a symmetric multi-processing cluster environment |
JP2007183816A (ja) | 2006-01-06 | 2007-07-19 | Elpida Memory Inc | メモリ制御装置 |
US7936681B2 (en) | 2006-03-06 | 2011-05-03 | Cisco Technology, Inc. | Cross-layer design techniques for interference-aware routing configuration in wireless mesh networks |
DE602007006467D1 (de) | 2006-03-27 | 2010-06-24 | Coherent Logix Inc | Programmierung eines multiprozessorsystems |
US7796527B2 (en) | 2006-04-13 | 2010-09-14 | International Business Machines Corporation | Computer hardware fault administration |
US8375368B2 (en) | 2006-06-20 | 2013-02-12 | Google Inc. | Systems and methods for profiling an application running on a parallel-processing computer system |
US8136104B2 (en) | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for determining compute kernels for an application in a parallel-processing computer system |
US8135936B2 (en) | 2009-12-23 | 2012-03-13 | Intel Corporation | Adaptive address mapping with dynamic runtime memory mapping selection |
US20080109569A1 (en) | 2006-11-08 | 2008-05-08 | Sicortex, Inc | Remote DMA systems and methods for supporting synchronization of distributed processes in a multi-processor system using collective operations |
US20080250325A1 (en) | 2007-04-03 | 2008-10-09 | Feigenbaum Barry A | Integrated Development Environment with Object-Oriented GUI Rendering Feature |
US7948999B2 (en) | 2007-05-04 | 2011-05-24 | International Business Machines Corporation | Signaling completion of a message transfer from an origin compute node to a target compute node |
US8539498B2 (en) | 2007-05-17 | 2013-09-17 | Alcatel Lucent | Interprocess resource-based dynamic scheduling system and method |
US8161480B2 (en) | 2007-05-29 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation using shared memory |
US7984448B2 (en) | 2007-06-26 | 2011-07-19 | International Business Machines Corporation | Mechanism to support generic collective communication across a variety of programming models |
US20090019258A1 (en) | 2007-07-09 | 2009-01-15 | Shi Justin Y | Fault tolerant self-optimizing multi-processor system and method thereof |
US8090704B2 (en) | 2007-07-30 | 2012-01-03 | International Business Machines Corporation | Database retrieval with a non-unique key on a parallel computer system |
US8082424B2 (en) | 2007-08-01 | 2011-12-20 | International Business Machines Corporation | Determining when a set of compute nodes participating in a barrier operation on a parallel computer are ready to exit the barrier operation |
US8171047B2 (en) | 2007-08-07 | 2012-05-01 | International Business Machines Corporation | Query execution and optimization utilizing a combining network in a parallel computer system |
US8014387B2 (en) | 2007-08-27 | 2011-09-06 | International Business Machines Corporation | Providing a fully non-blocking switch in a supernode of a multi-tiered full-graph interconnect architecture |
US8370844B2 (en) | 2007-09-12 | 2013-02-05 | International Business Machines Corporation | Mechanism for process migration on a massively parallel computer |
US7991857B2 (en) | 2008-03-24 | 2011-08-02 | International Business Machines Corporation | Broadcasting a message in a parallel computer |
US7917541B2 (en) | 2008-03-31 | 2011-03-29 | Microsoft Corporation | Collecting and aggregating data using distributed resources |
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 |
US20090310544A1 (en) | 2008-06-12 | 2009-12-17 | Praval Jain | Method and system for increasing throughput in a hierarchical wireless network |
US9514023B2 (en) | 2008-06-24 | 2016-12-06 | International Business Machines Corporation | Message flow control in a multi-node computer system |
US7895260B2 (en) | 2008-07-28 | 2011-02-22 | International Business Machines Corporation | Processing data access requests among a plurality of compute nodes |
US8166146B2 (en) | 2008-09-29 | 2012-04-24 | International Business Machines Corporation | Providing improved message handling performance in computer systems utilizing shared network devices |
US20100191911A1 (en) | 2008-12-23 | 2010-07-29 | Marco Heddes | System-On-A-Chip Having an Array of Programmable Processing Elements Linked By an On-Chip Network with Distributed On-Chip Shared Memory and External Shared Memory |
US8090797B2 (en) * | 2009-05-02 | 2012-01-03 | Citrix Systems, Inc. | Methods and systems for launching applications into existing isolation environments |
US8407376B2 (en) | 2009-07-10 | 2013-03-26 | International Business Machines Corporation | Recording a communication pattern and replaying messages in a parallel computing system |
EP2499576A2 (en) | 2009-11-13 | 2012-09-19 | Richard S. Anderson | Distributed symmetric multiprocessing computing architecture |
US8811417B2 (en) | 2009-11-15 | 2014-08-19 | Mellanox Technologies Ltd. | Cross-channel network operation offloading for collective operations |
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 |
US8140512B2 (en) | 2010-04-12 | 2012-03-20 | Ancestry.Com Operations Inc. | Consolidated information retrieval results |
US8365186B2 (en) * | 2010-04-14 | 2013-01-29 | International Business Machines Corporation | Runtime optimization of an application executing on a parallel computer |
US8436720B2 (en) * | 2010-04-29 | 2013-05-07 | International Business Machines Corporation | Monitoring operating parameters in a distributed computing system with active messages |
-
2012
- 2012-02-09 US US13/369,454 patent/US8706847B2/en not_active Expired - Fee Related
-
2013
- 2013-01-24 DE DE102013201078A patent/DE102013201078A1/de active Pending
- 2013-02-05 GB GB1302003.7A patent/GB2501349B/en active Active
- 2013-02-07 CN CN201310049040.0A patent/CN103309652B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101114273A (zh) * | 2006-07-24 | 2008-01-30 | 国际商业机器公司 | 在并行计算机上执行全收集操作的方法和系统 |
US20080273457A1 (en) * | 2007-05-01 | 2008-11-06 | Illinois Institute Of Technology | Systems, methods, and protocols for process migration and group membership management |
US20090043988A1 (en) * | 2007-08-10 | 2009-02-12 | Archer Charles J | Configuring Compute Nodes of a Parallel Computer in an Operational Group into a Plurality of Independent Non-Overlapping Collective Networks |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106575283A (zh) * | 2014-08-18 | 2017-04-19 | 超威半导体公司 | 使用元胞自动机的群集服务器配置 |
CN106575283B (zh) * | 2014-08-18 | 2021-06-29 | 超威半导体公司 | 使用元胞自动机的群集服务器配置 |
CN108140049A (zh) * | 2015-10-20 | 2018-06-08 | 国际商业机器公司 | 基于树的数据结构的并行批量处理 |
Also Published As
Publication number | Publication date |
---|---|
US8706847B2 (en) | 2014-04-22 |
GB201302003D0 (en) | 2013-03-20 |
US20130212145A1 (en) | 2013-08-15 |
GB2501349B (en) | 2014-06-18 |
GB2501349A (en) | 2013-10-23 |
DE102013201078A1 (de) | 2013-08-14 |
CN103309652B (zh) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103309652A (zh) | 用于在并行计算机中开始集合操作的方法和装置 | |
CN103246508B (zh) | 用于开发并行计算机的集合操作的方法和装置 | |
CN103150144B (zh) | 用于并行计算机中的集体操作协议选择的方法和系统 | |
US9122840B2 (en) | Performing collective operations in a distributed processing system | |
US9607116B2 (en) | Distributed hardware device simulation | |
US10938889B2 (en) | Performing optimized collective operations in a irregular subcommunicator of compute nodes in a parallel computer | |
US9229780B2 (en) | Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system | |
US9250948B2 (en) | Establishing a group of endpoints in a parallel computer | |
US8565120B2 (en) | Locality mapping in a distributed processing system | |
US9213619B2 (en) | Algorithm selection for collective operations in a parallel computer | |
US9444908B2 (en) | Distributing an executable job load file to compute nodes in a parallel computer | |
CN103246507A (zh) | 用于开发在并行计算机中执行的集合操作的方法和装置 | |
US9495204B2 (en) | Constructing a logical tree topology in a parallel computer | |
US8788649B2 (en) | Constructing a logical, regular axis topology from an irregular topology | |
US9390054B2 (en) | Identifying a largest logical plane from a plurality of logical planes formed of compute nodes of a subcommunicator in a parallel computer | |
US9275007B2 (en) | Identifying logical planes formed of compute nodes of a subcommunicator in a parallel computer | |
CN103324464A (zh) | 在并行计算机的计算节点处处理非预期消息的方法和装置 | |
US9189266B2 (en) | Responding to a timeout of a message 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 | ||
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: 20160615 Termination date: 20210207 |
|
CF01 | Termination of patent right due to non-payment of annual fee |