CN103246507A - 用于开发在并行计算机中执行的集合操作的方法和装置 - Google Patents
用于开发在并行计算机中执行的集合操作的方法和装置 Download PDFInfo
- Publication number
- CN103246507A CN103246507A CN2013100492302A CN201310049230A CN103246507A CN 103246507 A CN103246507 A CN 103246507A CN 2013100492302 A CN2013100492302 A CN 2013100492302A CN 201310049230 A CN201310049230 A CN 201310049230A CN 103246507 A CN103246507 A CN 103246507A
- Authority
- CN
- China
- Prior art keywords
- set operation
- primitive
- appointment
- goal
- computer
- 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/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (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给出例示根据本发明的实施例的用于开发在并行计算机中执行的集合操作的另一示例方法的流程图。
图9给出例示根据本发明的实施例的用于开发在并行计算机中执行的集合操作的另一示例方法的流程图。
具体实施方式
参考附图描述根据本发明的用于开发在并行计算机中执行的集合操作的示例方法、装置和产品,以图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)可以执行根据本发明的实施例而开发的集合操作。这样的开发可以利用并行计算机本身——例如利用在计算节点(102)上执行的应用——来实行,或者在不是该并行计算机的一部分的另一计算机系统上实行。根据本发明的实施例的这种开发包括:由集合开发工具接收要开发的目标集合操作的详细说明;由集合开发工具接收该目标集合操作将在其中执行的并行计算机的计算机硬件特性的详细说明;由该集合开发工具依赖于该计算机硬件特性的详细说明以及指定基于计算机硬件特性的集合基元的选择标准的预定规则集,自动地、无需用户交互地、对于该目标集合操作的每个阶段重复地选择集合基元;以及由该集合开发工具依赖于所选的集合基元产生目标集合操作。
通常开发根据本发明的实施例开发的集合操作以供在包括通过至少一个数据通信网络组织用于集合操作的多个计算节点的并行计算机上执行。事实上,这样的计算机可以包括数千个这样的计算节点。每个计算节点本身又是一种由一个或多个计算处理核、其自己的计算机存储器以及其自己的输入/输出适配器组成的计算机。这样的计算节点不仅可以执行根据本发明的实施例开发的集合操作,而且还可以支持这样的开发。因此,为了进一步说明,图2给出在根据本发明的实施例为其开发集合操作的并行计算机中有用的示例计算节点(102)的框图。图2的计算节点(102)包括多个处理核(165)以及RAM(156)。图2的处理核(165)可以配置在一个或多个集成电路晶片上。处理核(165)通过高速存储器总线(155)连接到RAM(156)并通过总线适配器(194)和扩展总线(168)连接到计算节点的其他组件。存储在RAM(156)中的是应用程序(226),即使用并行算法实行并行的用户级数据处理的计算机程序指令的模块。
还存储在RAM(156)中的是并行通信库(161),即在计算节点之间实行并行通信、包括点对点操作以及集合操作的计算机程序指令的库。可以使用诸如C编程语言的传统编程语言以及使用传统的编程方法编写在两个独立数据通信网络上的节点之间发送和接收数据的并行通信例程来从头开发并行通信例程的库以用在根据本发明的实施例的系统中。或者,可以改进已有的现有技术库以根据本发明的实施例而操作。现有技术的并行通信库的例子包括“消息传递接口”(“MPI”)库以及“并行虚拟机”(“PVM”)库。
还存储在RAM(156)中的是集合开发工具(228),即当执行时致使图2的计算节点(102)实行用于在并行计算机中执行的集合操作开发的计算机程序指令的模块。并行计算机中的计算节点、网络设备等的一些硬件组件可以支持以优化的方式——即,更有效地、更快地、低功耗、更小的资源密集性、更少的处理器利用等等——的集合操作执行。但是,现有技术的集合开发通常是硬件不可知型的(hardware agnostic)。也就是说,现有技术的集合开发工具并不开发集合操作以完全利用将执行集合操作的硬件组件提供的基础(underlying)优化。相反,图2的集合开发工具(228)根据本发明的实施例改进为考虑到这样的硬件特性。为此,图2的集合开发工具(228)配置为接收要开发的目标集合操作(232)的详细说明;接收该目标集合操作将在其中执行的并行计算机的计算机硬件特性的详细说明(230);依赖于该计算机硬件特性的详细说明(230)以及指定基于计算机硬件特性的集合基元的选择标准的预定规则集(236),自动地、无需用户交互地、对于该目标集合操作的每个阶段重复地选择集合基元(234);以及依赖于所选的集合基元产生目标集合操作(234)。
集合基元(primitive)是当执行时实行预定的集合任务的计算机程序指令的模块。每个基元是可以按各种方式与其他基元组合以形成合成的(complex)集合操作的构建块。这样的集合基元的例子包括:
·多同步基元,当执行时,实行多个计算节点之间的同步;
·多播基元,当执行时,并行地向一组节点发送消息;
·多组合基元,当执行时,对从多于一个计算节点接收的数据进行操作;以及
·多对多基元,当执行时,向一组计算节点发送唯一的数据并从另一组计算节点接收数据。
还存储在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的方法包括由集合开发工具接收(602)要开发的目标集合操作的详细说明(specification)。接收(602)要开发的目标集合操作的详细说明可以按各种方式实行,包括通过图形用户界面(“GUI”)接收指示要开发的集合操作的类型的用户输入。
图6的方法还包括由集合开发工具接收(604)该目标集合操作将在其中执行的并行计算机的计算机硬件特性的详细说明。接收该目标集合操作将在其中执行的并行计算机的计算机硬件特性的详细说明可以按各种方式实行,包括例如:通过接收计算节点、网络适配器、网络设备、网络拓扑等等如具有本领域知识的读者将想到的硬件的硬件特性的配置文件;通过发现开发工具在其上执行的计算节点以及该计算节点在其中执行的并行计算机的计算组件的硬件特性;以及按具有本领域知识的读者将想到的其他方式。
图6的方法还包括由该集合开发工具依赖于该计算机硬件特性的详细说明以及指定基于计算机硬件特性的集合基元的选择标准的预定规则集,自动地、无需用户交互地、对于该目标集合操作的每个阶段重复地选择(606)集合基元。该预定规则集包括基于计算机硬件特性的、集合基元的选择标准。也就是说,这些规则通知集合开发工具对于特定的硬件特性以及对于集合操作的特定类型,要选择特定的集合基元。
图6的方法还包括由该集合开发工具依赖于所选的集合基元产生(608)目标集合操作。依赖于所选的集合基元产生目标集合操作可以通过产生可执行代码来实行。可以通过在可执行文件中插入用于每个集合基元的计算机程序指令的模块(“集合基元模块”)并根据预定规则在集合基元模块之间插入“粘结(glue)模块”来产生这样的代码。在本说明书中作为术语使用的“粘结模块”指配置为为了在集合操作的执行期间链接集合基元模块的目的而插入在集合基元模块之间的计算机程序指令的模块。指定要插入在集合基元模块之间的粘结模块的预定规则可以基于要在其上实行集合操作的并行计算机的许多因素。例如不同的粘结模块可以与不同的集合基元、不同的网络拓扑、计算节点架构、操作组中的计算节点的数量、用于计算节点的通信适配器的存储器资源等等相关联。
为了进一步说明,图7给出例示根据本发明的实施例开发用于在并行计算机中执行的集合操作的另一示例方法的流程图。图7的方法与图6的方法的类似之处在于图7的方法也包括接收(602)要开发的目标集合操作的详细说明;接收(604)该目标集合操作将在其中执行的并行计算机的计算机硬件特性的详细说明;对于该目标集合操作的每个阶段重复地选择(606)集合基元;以及依赖于所选的集合基元产生(608)目标集合操作。
但是图7的方法与图6的方法的不同之处在于,图7的方法包括确定(702)目标集合操作是否满足用户指定的集合操作标准。图7的例子中的用户指定的集合操作标准包括集合基元的最大数量的指定。也就是说,用户可以指定集合操作包含不多于预定数量的集合基元。
如果目标集合操作满足用户指定的集合操作标准,则图7的方法通过向用户提供(704)该集合操作而继续。如果该目标集合操作不满足用户指定的集合操作标准,则图7的方法通过由集合开发工具进行对于目标集合操作的集合操作开发的随后的重复来继续。更具体地,图7的方法再次选择(606)集合基元并且产生(608)目标集合。随后选择的集合基元可以是按不同顺序的相同基元、不同的基元、基元的不同组合,等等。以此方式,集合开发工具可以重复地开发配置为利用集合操作将在其上执行的并行计算机的可用的硬件优化并满足用户指定的标准的集合操作。
图7的示例方法绘出了其中产生一个目标集合操作然后重复地优化的方法。具有本领域知识的读者将认识到,根据本发明的实施例,可以进行其他优化技术。例如,可以开发相同的集合操作的几个不同版本,并且用户指定的标准可以指定优选的集合操作是在集合操作的所有版本之中具有最少数量的集合基元的那个集合操作。
为了进一步说明,图8给出例示根据本发明的实施例开发用于在并行计算机中执行的集合操作的另一示例方法的流程图。图8的方法与图6的方法的类似之处在于图8的方法也包括接收(602)要开发的目标集合操作的指定;接收(604)该目标集合操作将在其中执行的并行计算机的计算机硬件特性的指定;对于该目标集合操作的每个阶段重复地选择(606)集合基元;以及依赖于所选的集合基元产生(608)目标集合操作。
但是,图8的方法与图6的方法的不同之处在于,图8的方法包括确定(802)目标集合操作是否满足用户指定的集合操作标准。在图8的例子中的用户指定的集合操作标准包括目标集合操作的最大执行时间的指定。也就是说,用户可以指定集合操作的执行时间不多于预定时间。或者,在其中集合开发工具在向用户提供(804)目标集合操作之前开发了几个版本的目标集合操作的实施例中,用户可以指定优选的目标集合操作是在目标集合操作的所有版本之中具有最低执行时间的集合操作。
如果目标集合操作满足用户指定的集合操作标准,则图8的方法通过向用户提供(804)该集合操作而继续。如果该目标集合操作不满足用户指定的集合操作标准,则图8的方法通过由集合开发工具进行对于目标集合操作的集合操作开发的随后的重复来继续。更具体地,图8的方法再次选择(606)集合基元并且产生(608)目标集合。随后选择的集合基元可以是按不同顺序的相同基元、不同的基元、基元的不同组合,等等。以此方式,集合开发工具可以重复地开发配置为利用集合操作将在其上执行的并行计算机的可用的硬件优化并满足用户指定的标准的集合操作。
为了进一步说明,图9给出例示根据本发明的实施例开发用于在并行计算机中执行的集合操作的另一示例方法的流程图。图9的方法与图6的方法的类似之处在于图9的方法也包括接收(602)要开发的目标集合操作的详细说明;接收(604)该目标集合操作将在其中执行的并行计算机的计算机硬件特性的详细说明;对于该目标集合操作的每个阶段重复地选择(606)集合基元;以及依赖于所选的集合基元产生(608)目标集合操作。
但是,图9的方法与图6的方法的不同之处在于,图9的方法包括确定(902)目标集合操作是否满足用户指定的集合操作标准。在图9的例子中的用户指定的集合操作标准包括在目标集合操作的执行期间发送的消息的最大数量的指定。也就是说,用户可以指定在集合操作的执行期间发送的消息的最大数量不多于预定数量。或者,在其中集合开发工具在向用户提供(904)目标集合操作之前开发了几个版本的目标集合操作的实施例中,用户可以指定优选的目标集合操作是在目标集合操作的所有版本之中需要最少数量的发送的消息的集合操作。
如果目标集合操作满足用户指定的集合操作标准,则图9的方法通过向用户提供(904)该集合操作而继续。如果该目标集合操作不满足用户指定的集合操作标准,则图9的方法通过由集合开发工具进行对于目标集合操作的集合操作开发的随后的重复来继续。更具体地,图9的方法再次选择(606)集合基元并且产生(608)目标集合。随后选择的集合基元可以是按不同顺序的相同基元、不同的基元、基元的不同组合,等等。以此方式,集合开发工具可以重复地开发配置为利用集合操作将在其上执行的并行计算机的可用的硬件优化并满足用户指定的标准的集合操作。
如本领域技术人员将认识到的,本发明的方面可以实现为系统、方法或计算机程序产品。因此,本发明的方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或者组合了软件和硬件方面的实施例的形式,它们可以在此统称为“电路”、“模块”或“系统”。此外,本发明的方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有体现在其上的计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读传输介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件、或者以上的任意适当的组合。计算机可读存储介质的更具体的例子(非穷举的列表)将包括以下:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文的上下文中,计算机可读存储介质可以是任何可以包含或存储程序的有形介质,该程序由指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读传输介质可以包括在基带中或者作为载波的部分的传播的数据信号,其中承载了计算机可读的程序代码。这种传播的信号可以采用多种形式的任意形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读传输介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤电缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种编程语言的任意组合来编写用于执行本发明的方面的操作的计算机程序代码,所述编程语言包括诸如Java、Smalltalk、C++等的面向对象的程序设计语言以及诸如“C”编程语言或类似编程语言的传统过程编程语言。程序代码可以完全地在用户的计算机上执行、部分地在用户计算机上执行、作为独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一情形中,远程计算机可以通过任意类型的网络、包括局域网(LAN)或广域网(WAN)连接到用户的计算机,或者,可以使得(例如使用因特网服务提供商通过因特网)连接到外部计算机。
参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的方面。将理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出机器,以便经由计算机或其它可编程数据处理装置的处理器执行的这些指令创建用于实现流程图和/或框图的方框中指定的功能/动作的部件。
也可以把这些计算机程序指令存储在可以使得计算机、其它可编程数据处理装置或其它设备以特定方式工作的计算机可读介质中,以便存储在计算机可读介质中的指令产生包括实现流程图和/或框图的方框中指定的功能/动作的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,以致使在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,以便在计算机或其它可编程装置上执行的指令提供用于实现在流程图和/或框图的方框中指定的功能/动作的过程。
附图中的流程图和框图例示根据本发明的各个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表模块、程序段或代码的部分,所述模块、程序段或代码的部分包含一个或多个用于实现指定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,示出为连续的两个方框实际上可以基本并行地执行,或者这些块有时可以按相反的顺序执行,这依赖于所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合可以由进行指定的功能或动作的专用的基于硬件的系统来实现,或者可以由专用硬件与计算机指令的组合来实现。
根据以上描述将理解,在不偏离本发明的真正精神的情况下,可以在本发明的各个实施例中做出修改和改变。本说明书中的描述仅仅是用于例示的目的并且不应被解释为限制的意思。本发明的范围仅由以下权利要求的语言限制。
Claims (16)
1.一种用于开发在并行计算机中执行的集合操作的方法,该并行计算机包括通过一个或多个数据通信网络耦接用于数据通信的多个计算节点,所述方法包括:
由集合开发工具接收要开发的目标集合操作的详细说明;
由该集合开发工具接收该目标集合操作将在其中执行的并行计算机的计算机硬件特性的详细说明;
由该集合开发工具依赖于该计算机硬件特性的详细说明以及指定基于计算机硬件特性的集合基元的选择标准的预定规则集,自动地、无需用户交互地、对于该目标集合操作的每个阶段重复地选择集合基元;以及
由该集合开发工具依赖于所选的集合基元产生目标集合操作。
2.如权利要求1的方法,还包括:
确定该目标集合操作是否满足用户指定的集合操作标准,所述用户指定的集合操作标准包括集合基元的最大数量的指定;以及
如果该目标集合操作不满足用户指定的集合操作标准,则由该集合开发工具进行对于该目标集合操作的集合操作开发的随后的重复。
3.如权利要求1的方法,还包括:
确定该目标集合操作是否满足用户指定的集合操作标准,所述用户指定的集合操作标准包括目标集合操作的最大执行时间的指定;以及
如果该目标集合操作不满足用户指定的集合操作标准,则由该集合开发工具进行对于该目标集合操作的集合操作开发的随后的重复。
4.如权利要求1的方法,还包括:
确定该目标集合操作是否满足用户指定的集合操作标准,所述用户指定的集合操作标准包括在该目标集合操作的执行期间发送的消息的最大数量的指定;以及
如果该目标集合操作不满足用户指定的集合操作标准,则由该集合开发工具进行对于该目标集合操作的集合操作开发的随后的重复。
5.如权利要求1的方法,其中至少一个集合基元包括:
多同步基元,该多同步基元在被执行时实行多个计算节点之间的同步。
6.如权利要求1的方法,其中至少一个集合基元包括:
多播基元,该多播基元在被执行时并行地向一组节点发送消息。
7.如权利要求1的方法,其中至少一个集合基元包括:
多组合基元,该多组合基元在被执行时对从多于一个计算节点接收的数据进行操作。
8.如权利要求1的方法,其中至少一个集合基元包括:
多对多基元,该多对多基元在被执行时向一组计算节点发送唯一的数据并从另一组计算节点接收数据。
9.一种用于开发在并行计算机中执行的集合操作的装置,该并行计算机包括通过一个或多个数据通信网络耦接用于数据通信的多个计算节点,所述装置包括计算机处理器和操作地耦接到该计算机处理器的计算机存储器,该计算机存储器具有布置在其中的计算机程序指令,该计算机程序指令在被该计算机处理器执行时致使所述装置实行以下步骤:
由集合开发工具接收要开发的目标集合操作的详细说明;
由该集合开发工具接收该目标集合操作将在其中执行的并行计算机的计算机硬件特性的详细说明;
由该集合开发工具依赖于该计算机硬件特性的详细说明以及指定基于计算机硬件特性的集合基元的选择标准的预定规则集,自动地、无需用户交互地、对于该目标集合操作的每个阶段重复地选择集合基元;
以及由该集合开发工具依赖于所选的集合基元产生目标集合操作。
10.如权利要求9的装置,还包括在被该计算机处理器执行时致使所述装置实行以下步骤的计算机程序指令:
确定该目标集合操作是否满足用户指定的集合操作标准,所述用户指定的集合操作标准包括集合基元的最大数量的指定;以及
如果该目标集合操作不满足用户指定的集合操作标准,则由该集合开发工具进行对于该目标集合操作的集合操作开发的随后的重复。
11.如权利要求9的装置,还包括在被该计算机处理器执行时致使所述装置实行以下步骤的计算机程序指令:
确定该目标集合操作是否满足用户指定的集合操作标准,所述用户指定的集合操作标准包括目标集合操作的最大执行时间的指定;以及
如果该目标集合操作不满足用户指定的集合操作标准,则由该集合开发工具进行对于该目标集合操作的集合操作开发的随后的重复。
12.如权利要求9的装置,还包括在被该计算机处理器执行时致使所述装置实行以下步骤的计算机程序指令:
确定该目标集合操作是否满足用户指定的集合操作标准,所述用户指定的集合操作标准包括在该目标集合操作的执行期间发送的消息的最大数量的指定;以及
如果该目标集合操作不满足用户指定的集合操作标准,则由该集合开发工具进行对于该目标集合操作的集合操作开发的随后的重复。
13.如权利要求9的装置,其中至少一个集合基元包括:
多同步基元,该多同步基元在被执行时实行多个计算节点之间的同步。
14.如权利要求9的装置,其中至少一个集合基元包括:
多播基元,该多播基元在被执行时并行地向一组节点发送消息。
15.如权利要求9的装置,其中至少一个集合基元包括:
多组合基元,该多组合基元在被执行时对从多于一个计算节点接收的数据进行操作。
16.如权利要求9的装置,其中至少一个集合基元包括:
多对多基元,该多对多基元在被执行时向一组计算节点发送唯一的数据并从另一组计算节点接收数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/369,697 US8938713B2 (en) | 2012-02-09 | 2012-02-09 | Developing a collective operation for execution in a parallel computer |
US13/369,697 | 2012-02-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103246507A true CN103246507A (zh) | 2013-08-14 |
CN103246507B CN103246507B (zh) | 2017-03-01 |
Family
ID=48926041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310049230.2A Expired - Fee Related CN103246507B (zh) | 2012-02-09 | 2013-02-07 | 用于开发在并行计算机中执行的集合操作的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8938713B2 (zh) |
CN (1) | CN103246507B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101530269B1 (ko) * | 2014-01-15 | 2015-06-23 | 주식회사 엘지실트론 | 웨이퍼 그라인딩 장치 |
US9703587B2 (en) | 2014-04-24 | 2017-07-11 | 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 |
US9864622B2 (en) | 2014-04-24 | 2018-01-09 | International Business Machines Corporation | Administering virtual machines in a distributed computing environment |
US9612857B2 (en) | 2014-04-24 | 2017-04-04 | 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 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070245163A1 (en) * | 2006-03-03 | 2007-10-18 | Yung-Hsiang Lu | Power management in computer operating systems |
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 |
US20110271006A1 (en) * | 2010-04-29 | 2011-11-03 | International Business Machines Corporation | Pipelining protocols in misaligned buffer cases |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2658934B1 (fr) * | 1990-02-28 | 1992-04-30 | Bull Sa | Architecture de systeme et utilisation de cette architecture dans un procede de remplacement de cartes. |
US5815713A (en) * | 1995-04-13 | 1998-09-29 | Sterling Software, Inc. | Method and system for automated transformation of declarative language process specifications |
US6681114B2 (en) * | 2000-12-06 | 2004-01-20 | At&T Corp. | On demand multicast messaging system |
US20070078675A1 (en) * | 2005-09-30 | 2007-04-05 | Kaplan Craig A | Contributor reputation-based message boards and forums |
US8621484B2 (en) | 2007-08-30 | 2013-12-31 | Intel Corporation | Handling potential deadlocks and correctness problems of reduce operations in parallel systems |
US8270299B2 (en) | 2008-11-10 | 2012-09-18 | International Business Machines Corporation | Communicator-based token/buffer management for eager protocol support in collective communication operations |
US8811417B2 (en) | 2009-11-15 | 2014-08-19 | Mellanox Technologies Ltd. | Cross-channel network operation offloading for collective operations |
US8893083B2 (en) * | 2011-08-09 | 2014-11-18 | International Business Machines Coporation | Collective operation protocol selection in a parallel computer |
-
2012
- 2012-02-09 US US13/369,697 patent/US8938713B2/en not_active Expired - Fee Related
-
2013
- 2013-02-07 CN CN201310049230.2A patent/CN103246507B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070245163A1 (en) * | 2006-03-03 | 2007-10-18 | Yung-Hsiang Lu | Power management in computer operating systems |
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 |
US20110271006A1 (en) * | 2010-04-29 | 2011-11-03 | International Business Machines Corporation | Pipelining protocols in misaligned buffer cases |
Also Published As
Publication number | Publication date |
---|---|
CN103246507B (zh) | 2017-03-01 |
US8938713B2 (en) | 2015-01-20 |
US20130212555A1 (en) | 2013-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103309652A (zh) | 用于在并行计算机中开始集合操作的方法和装置 | |
CN103246508A (zh) | 用于开发并行计算机的集合操作的方法和装置 | |
CN103150144B (zh) | 用于并行计算机中的集体操作协议选择的方法和系统 | |
CN100570594C (zh) | 在并行计算机上执行全收集操作的方法和系统 | |
US8949328B2 (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 | |
US8689228B2 (en) | Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system | |
CN103246507A (zh) | 用于开发在并行计算机中执行的集合操作的方法和装置 | |
US9250948B2 (en) | Establishing a group of endpoints in a parallel computer | |
US8565120B2 (en) | Locality mapping in a distributed processing system | |
CN101779189A (zh) | 并行计算机中的主动电力管理 | |
CN104115124A (zh) | 对在多个计算节点上执行的源代码实施更新 | |
US9495204B2 (en) | Constructing a logical tree topology in a parallel computer | |
US9229782B2 (en) | Collectively loading an application in a parallel computer | |
US8769074B2 (en) | Constructing a logical, regular axis topology from an irregular topology | |
US20140281374A1 (en) | Identifying Logical Planes Formed Of Compute Nodes Of A Subcommunicator In A Parallel Computer | |
CN103324464A (zh) | 在并行计算机的计算节点处处理非预期消息的方法和装置 | |
US10296395B2 (en) | Performing a rooted-v collective operation by an operational group of compute nodes 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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170301 Termination date: 20210207 |
|
CF01 | Termination of patent right due to non-payment of annual fee |