CN103150144A - 用于并行计算机中的集体操作协议选择的方法和系统 - Google Patents
用于并行计算机中的集体操作协议选择的方法和系统 Download PDFInfo
- Publication number
- CN103150144A CN103150144A CN201210281401XA CN201210281401A CN103150144A CN 103150144 A CN103150144 A CN 103150144A CN 201210281401X A CN201210281401X A CN 201210281401XA CN 201210281401 A CN201210281401 A CN 201210281401A CN 103150144 A CN103150144 A CN 103150144A
- Authority
- CN
- China
- Prior art keywords
- agreement
- performance
- expection
- group
- operating parameter
- 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
- 238000000034 method Methods 0.000 title claims description 105
- 230000008569 process Effects 0.000 claims description 58
- 230000006870 function Effects 0.000 claims description 42
- 238000004590 computer program Methods 0.000 claims description 25
- 238000004088 simulation Methods 0.000 claims description 7
- 238000004891 communication Methods 0.000 description 87
- 238000010586 diagram Methods 0.000 description 37
- 230000009467 reduction Effects 0.000 description 18
- 238000012545 processing Methods 0.000 description 17
- 230000005540 biological transmission Effects 0.000 description 16
- 238000004364 calculation method Methods 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 13
- 230000009471 action Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 239000013307 optical fiber Substances 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000004804 winding Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100400452 Caenorhabditis elegans map-2 gene Proteins 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000003754 machining Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3404—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3447—Performance evaluation by modeling
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- 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/44—Encoding
- G06F8/443—Optimisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及用于并行计算机中的集体操作协议选择的方法和系统。可以通过调用具有操作参数的集体操作、选择用于执行该操作的协议以及利用选择的协议执行该操作,来执行包括计算节点的并行计算机中的集体操作协议选择。选择协议包括反复执行如下操作直到一个预期协议满足预定性能标准:向用于该预期协议的协议性能函数提供所述操作参数;通过评估预定义性能拟合方程以及计算针对所述操作参数的协议的性能度量,来确定该预期协议是否满足预定义性能标准;仅当计算的性能度量大于预定义最小性能阈值时,才确定该预期协议满足预定性能标准并且选择该协议用于执行所述操作。
Description
技术领域
本发明的领域是数据处理,或者更具体地讲是用于并行计算机中的集体操作协议选择的方法、设备和产品。
背景技术
1948年的EDVAC计算机系统的开发常被引述为计算机时代的开启。从那时开始,计算机系统已经演化成极端复杂的装置。与例如EDVAC的早期系统相比,今天的计算机更加精密复杂。计算机系统通常包括硬件和软件组件的组合、应用程序、操作系统、处理器、总线、存储器、输入/输出装置等。由于半导体加工和计算机架构的进步将计算机的性能推升得越来越高,更加精密复杂的计算机软件已经进化为利用硬件的更高性能,使得当今的计算机系统与仅仅几年前相比强大得多。
并行计算是经历了进步的计算机技术的领域。并行计算是在多个处理器上同时执行同一任务(该任务被分解并且被专门调整)以更快获得结果。并行计算基于如下事实:求解一个问题的过程通常能够被划分成多个更小的任务,这些更小的任务能够通过某种协调被同时执行。
并行计算机执行并行算法。并行算法能够被分解从而在许多不同处理装置上每次执行一份,然后最终再次汇总在一起以获得数据处理结果。一些算法易于分解成多个份。可以例如如下执行对检查从1到十万的所有数字以查看哪些是质数的作业进行分解:向每个可用处理器分配这些数字的子集并且然后将肯定结果的列表汇总在一起。在本说明书中,执行并行程序的各个份的多个处理装置被称作“计算节点”。并行计算机由计算节点以及例如包括输入/输出(I/O)节点和服务节点的其它处理节点构成。
并行算法是有价值的,因为由于现代处理器工作的方式使得经由并行算法执行某些大的计算任务与经由串行(非并行)算法相比更快。与采用多个慢速处理器相比,采用单个快速处理器构造相同处理能力(throughput)的计算机要困难得多。串行处理器的潜在速度也存在某些理论限制。另一方面,每个并行算法具有串行部分并且因此并行算法具有饱和点。在该点后,增加更多处理器不会产生任何更多的处理能力而只会增加开销和开销。
并行算法还被设计为优化并行计算机的节点之间进行数据通信所要求的又一个资源。存在两种并行处理器进行通信的方式:共享存储器或者消息传递。共享存储器处理需要针对数据的额外锁定并且强加额外处理器和总线周期的开销并且还将算法的某部分串行化。
消息传递处理利用高速数据通信网络和消息缓冲器,但是这种通信增加了数据通信网络上的传送开销、以及消息缓冲器所需的额外存储器和节点之间的数据通信的等待时间(latency)。并行计算机的设计利用专门设计的数据通信链路以使得通信开销较小,然而正是并行算法决定通信量。
许多数据通信网络架构用于并行计算机中的节点之间的消息传递。例如,可以在网络中将计算节点组织为“环(torus)”或“网格(mesh)”。另外,可以在网络中将计算节点组织为树。环网络通过缠绕链路以三维网格连接节点。每个节点通过这种环网络连接到它的六个邻居,并且每个节点按其在网格中的x、y和z坐标来表示地址。按照这种方式,环网络将它自身用于点对点操作。在树网络中,节点通常连接成二叉树:每个节点具有一个父辈和两个孩子(但是某些节点可以仅具有零个孩子或一个孩子,这取决于硬件结构)。尽管树网络通常在点对点通信中低效,但是树网络对所有计算节点同时参与的某些集体操作、消息传送操作(例如,全收集(allgather)操作),提供高带宽和低等待时间。在使用环网络和树网络的计算机中,这两个网络通常彼此独立地实现,具有分离的路由回路、分离的物理链路和分离的消息缓冲器。
并行计算机中的计算节点还可以被组织成工作组以执行集体并行操作。通过工作组的计算节点之间的数据通信实现集体操作。集体操作是涉及一个工作组的所有计算节点的那些功能。集体操作是一种同时(即,近似同一时间)由计算节点的工作组中的所有计算节点执行的操作、消息传递计算机程序指令。“广播”是用于在工作组的计算节点之间移动数据的集体操作的例子。“归约(reduce)”操作是对分布在工作组的计算节点之中的数据执行算术或逻辑函数的集体操作的例子。用于集体操作的协议可以针对特定操作参数(执行集体操作的参数)进行调整或优化。这些参数的例子可以是:要执行的逻辑或者算术函数的类型、数据类型、数据大小、节点的数目等。集体操作协议可以针对特定的操作参数集合进行优化,因为本领域的读者可以想到,所述协议与其它协议相比更高效,与其它协议相比在执行期间消耗更少功率,与其它协议相比使用更少资源,与其它协议相比执行得更快等。因此,提高为集体操作选择优化协议的准确度有利于并行计算系统中的数据处理。
发明内容
在本说明书中描述了用于并行计算机中的集体操作协议选择的方法、设备和产品。并行计算机包括许多计算节点。这种集体操作协议选择包括:调用具有一个或多个操作参数的集体操作,选择用于执行该集体操作的多个协议之一,以及利用选择的协议执行该集体操作。在本发明的实施例中,对于从第一预期协议开始直到满足预定性能标准的预期协议,反复执行选择多个协议之一,选择多个协议之一包括:向用于该预期协议的协议性能函数提供集体操作的操作参数;通过该性能函数确定针对所述操作参数该预期协议是否满足预定性能标准,包括针对该预期协议通过所述操作参数评估预定义性能拟合方程以及计算针对所述操作参数的该预期协议的性能度量;以及仅当计算的性能度量大于预定义最小性能阈值时,确定该预期协议满足预定性能标准并且选择该预期协议作为用于执行集体操作的协议。
基于附图中所示的本发明的示例性实施例的下面更加具体的描述,本发明的上述以及其它目标、特征和优点将变得清楚,在附图中相似标号一般表示本发明的示例性实施例的相似部件。
附图说明
图1示出了根据本发明的实施例的用于并行计算机中的集体操作协议选择的示例性系统。
图2阐述了用于并行计算机中的能够执行根据本发明的实施例的集体操作协议选择的示例计算节点(102)的框图。
图3A阐述了用于根据本发明的实施例的并行计算机中的集体操作协议选择的系统中的示例点对点适配器的框图。
图3B阐述了用于根据本发明的实施例的并行计算机中的集体操作协议选择的系统中的示例全局组合网络适配器的框图。
图4阐述了示出用于能够执行根据本发明的实施例的并行计算机中的集体操作协议选择的系统的针对点对点操作进行优化的示例数据通信网络的线路图。
图5阐述了示出用于能够执行根据本发明的实施例的并行计算机中的集体操作协议选择的系统的示例全局组合网络的线路图。
图6阐述了示出用于根据本发明的实施例的并行计算机中的集体操作协议选择的示例方法的流程图。
图7阐述了示出用于根据本发明的实施例的并行计算机中的集体操作协议选择的另一示例方法的流程图。
图8阐述了示出用于根据本发明的实施例的并行计算机中的集体操作协议选择的另一示例方法的流程图。
具体实施方式
从图1开始,参照附图描述根据本发明的用于并行计算机中的集体操作协议选择的示例性方法、设备和产品。图1示出了根据本发明的实施例的用于并行计算机中的集体操作协议选择的示例性系统。图1的系统包括并行计算机(100)、数据存储装置(118)形式的计算机的非易失性存储器、打印机(120)形式的计算机的输出装置、和计算机终端(122)形式的计算机的输入/输出装置。
图1的示例中的并行计算机(100)包括多个计算节点(102)。通过多个独立的数据通信网络(包括高速以太网(174)、联合测试行动组(JTAG)网络(104)、使用二叉树网络拓扑针对集体操作进行优化的全局组合网络(106)和使用环网络拓扑针对点对点操作进行优化的点对点网络(108)),计算节点(102)进行耦合以进行数据通信。全局组合网络(106)是包括连接到计算节点(102)以把计算节点(102)组织为二叉树的数据通信链路的数据通信网络。通过计算节点(102)之间的数据通信链路实现每个数据通信网络。数据通信链路为并行计算机(100)的计算节点(102)之间的并行操作提供数据通信。
并行计算机(100)的计算节点(102)被组织成用于并行计算机(100)上的集体并行操作的计算节点的至少一个工作组(132)。计算节点的每个工作组(132)是执行集体并行操作的计算节点的集合。工作组(132)中的每个计算节点被分配唯一级别,用于识别工作组(132)中的特定计算机节点。通过工作组的计算节点之间的数据通信实现集体操作。集体操作是涉及一个工作组(132)的所有计算节点的那些功能。集体操作是一种同时(即,近似同一时间)由计算节点的工作组(132)中的所有计算节点执行的操作、消息传递计算机程序指令。这种工作组(132)可以包括并行计算机(100)中的所有计算节点(102)或者所有计算节点(102)的子集。常常围绕点对点操作建立集体操作。集体操作要求工作组(132)内的所有计算节点上的所有处理调用具有匹配参数的同一集体操作。“广播”是在工作组的计算节点之间移动数据的集体操作的示例。“归约”操作是对分布在工作组(132)的计算节点之中的数据执行算术或逻辑函数的集体操作的示例。例如,工作组(132)可被实现为MPI“通信器”。
“MPI”是指“消息传递接口(Message Passing Interface)”、现有技术的并行通信库、并行计算机上进行数据通信的计算机程序指令的模块。可被改进以应用于根据本发明的实施例构造的系统中的现有技术并行通信库的示例包括MPI和“并行虚拟机”(PVM)库。PVM是由田纳西大学、Oak Ridge国家实验室和埃默里大学开发的。MPI由MPI论坛进行发布,MPI论坛是一个具有来自定义并维护MPI标准的许多组织的代表的开放群。撰写此文时的MPI是在分布式存储器并行计算机上运行并行程序的计算节点之间进行通信的事实标准。为了易于进行解释,本说明书有时使用MPI术语,但是这样使用MPI不是本发明的要求或限制。
某些集体操作具有在工作组(132)中的特定计算节点上运行的一个发起或接收过程。例如,在“广播”集体操作中,向所有其它计算节点分发数据的计算节点上的过程是发起过程。在“收集(gather)”操作中,例如,从其它计算节点接收所有数据的计算节点上的过程是接收过程。运行这种发起或接收过程的计算节点被称作逻辑根。
大多数集体操作是如下四种基本操作的变型或组合:广播、收集、分散和归约。用于这些集体操作的接口在由MPI论坛发布的MPI标准中进行定义。然而,用于执行集体操作的算法没有在MPI标准中进行定义。在广播操作中,所有过程指定其缓冲器内容将被发送的同一根过程。除根之外的过程指定接收缓冲器。在该操作后,所有缓冲器包含来自根过程的消息。
与广播操作一样,分散操作也是一对多集体操作。在分散操作中,逻辑根将根上的数据划分成段并且将不同段分配给工作组(132)中的各个计算节点。在分散操作中,所有过程通常指定相同接收计数。发送参数只对其缓冲器实际包含给定数据类型的发送计数(sendcount)*N个元素的根过程有意义,其中,N是给定的计算节点组中的过程的数目。发送缓冲器被分割并且分散给所有过程(包括逻辑根上的过程)。每个计算节点被分配称作“级别(rank)”的连续标识符。在该操作后,根已经按照上升级别顺序向每个过程发送了sendcount个数据元素。级别0从发送缓冲器接收前sendcount个数据元素。级别1从发送缓冲器接收接下来的sendcount个数据元素,依此类推。
收集操作是多对一集体操作,即,分散操作的说明的完全逆转。也就是说,收集是一种多对一集体操作,其中,一数据类型的元素被从分级别的计算节点收集到根节点中的接收缓冲器中。
归约操作也是一种多对一集体操作,包括对两个数据元素执行的算术或逻辑函数。所有过程指定相同“计数(count)”和相同算术或逻辑函数。在归约后,所有过程已经将count个数据元素从计算节点发送缓冲器发送到根过程。在归约操作中,来自对应发送缓冲器位置的数据元素通过算术或逻辑运算被成对组合以在根过程的接收缓冲器中生成单个对应元素。专用归约操作能够在运行时进行定义。并行通信库可以支持预定义操作。例如,MPI提供下面的预定义归约操作:
MPI_MAX最大
MPI_MIN最小
MPI_SUM和
MPI_PROD乘积
MPI_LAND逻辑与
MPI_BAND位与
MPI_LOR逻辑或
MPI_BOR位或
MPI_LXOR逻辑异或
MPI_BXOR位异或
除了计算节点以外,并行计算机(100)包括经由全局组合网络(106)与计算节点(102)耦合的输入/输出(I/O)节点(110、114)。并行计算机(100)中的计算节点(102)可以被划分成多个处理组以使得一个处理组中的每个计算节点为进行数据通信而连接到同一I/O节点。因此,每个处理组由一个I/O节点和计算节点(102)的子集构成。整个系统中的计算节点的数目与I/O节点的数目的比率通常取决于并行计算机(102)的硬件结构。例如,在一些结构中,每个处理组可由八个计算节点和一个I/O节点构成。在一些其它结构中,每个处理组可由64个计算节点和一个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)通常采用根据本发明的实施例的许多计算节点进行操作以进行集体操作协议选择。为了清楚地进行说明,在本文中作为工作组中的一个计算节点的示例描述了计算节点(102a)。本技术领域的读者应该明白,工作组中的其它计算节点将具有相似的级别、数据元素、数据结构、过程、函数,并且将按照与该示例计算节点(102a)相似的方式工作。
计算节点(102a)包括级别(212)-MPI通信器(即工作组(132))中的过程。级别(212)调用具有一个或多个操作参数(214)的集体操作(220)。作为在本说明书中使用的术语的操作参数可以是为了执行集体操作的目的而被传递给该集体操作的任何参数。这些操作参数的示例包括本技术领域的读者可以想到的消息大小、数据类型、目标节点的数目和标识符等。
集体操作(220)(这里未示出的计算机程序指令的某其它模块)然后可以选择用于执行集体操作的多个协议(222)之一。根据本发明的实施例,对于从第一预期协议开始直到满足预定的性能标准的预期协议的每个协议(222),反复地执行这种选择。预定的性能标准是可被预定用于表示“性能”的可接受水平的任何值。各个性能标准类型的示例包括本技术领域的读者可以想到的执行速度、执行中利用的资源的数目等。
协议选择的每次重复包括:向用于该预期协议的协议性能函数(228)提供集体操作的操作参数(214),并且通过该性能函数(228)确定该预期协议(222)针对所述操作参数是否满足预定义性能标准。协议的性能函数是一个计算机程序指令的函数或者子例程,当被执行时确定该协议针对一组特定操作参数是否生成优化性能结果。在一些实施例中,例如,协议的性能函数的返回值是“良好拟合(good fit)”或“较差拟合(bad fit)”结果。
在图1的示例中,集体操作根据用于预期协议的或者与预期协议关联的元数据(224),识别并调用协议性能功能(228)。即,通过元数据在图1的示例中描述可供选择的每个协议。这种元数据可描述协议的许多不同属性。在本发明的实施例中,例如,每个协议的元数据(224)可以包括指向协议的性能函数(228)的指针。
通过针对该预期协议利用操作参数(214)评估预定义性能拟合方程(230)从而计算针对所述操作参数的预期协议的性能度量,性能函数(228)可以确定针对所述操作参数,预期协议(222)是否满足预定义性能标准。通过拟合方程描述、指定或定义通过该协议的性能函数(228)的在图1的示例中的相对于操作参数组的每个协议的性能。可以通过先前测量的性能数据的线性、二次或四次回归分析产生这种拟合方程。即,利用多个不同的操作参数组,每个协议可以被执行许多次,测量并存储每次执行所产生的性能数据。然后,可以采用测量和存储的性能数据执行回归分析以建立近似描述协议的性能质量的拟合方程。每个拟合方程然后返回针对一组特定操作参数的计算的性能度量(218)。
在实时协议选择期间,如果计算的性能度量(218)大于预定义的最小性能阈值(图1的示例中的性能标准(216)),则集体协议(220)确定该预期协议满足预定性能标准并且选择该预期协议作为用于执行集体操作的协议。如果计算的性能度量(218)不大于预定义的最小性能阈值,则选择过程针对另一个预期协议进行下一次重复。一旦被选择,集体操作(220)利用所选择的协议执行。
组成图1中所示的示例设备的节点、网络以及I/O装置的布置只是用于解释本发明而非进行限制。被构造为用于根据本发明的实施例的并行计算机中的集体操作协议选择的系统可以包括本领域技术人员可想到的图1未示出的另外的节点、网络、装置和架构。图1的示例中的并行计算机(100)包括16个计算节点(102);被构造为用于根据本发明的实施例的集体操作协议选择的并行计算机有时候包括几千个计算节点。除了以太网(174)和JTAG(104)以外,这种数据处理系统中的网络可以支持许多数据通信协议,例如包括TCP(传输控制协议)、IP(互联网协议)、以及本领域技术人员可想到的其它协议。还可以在图1所示的硬件平台之外的各种硬件平台上实现本发明的各种实施例。
通常在包括通过至少一个数据通信网络组织用于集体操作的多个计算节点的并行计算机上实现根据本发明的实施例的集体操作协议选择。实际上,这些计算机可以包括成千个这种计算节点。每个计算节点自身又是一种由一个或多个计算机处理核、它自己的计算机存储器和它自己的输入/输出适配器组成的计算机。因此,为了进一步的说明,图2阐述了用于能够进行根据本发明的实施例的集体操作协议选择的并行计算机中的示例计算节点(102)的框图。图2的计算节点(102)包括多个处理核(165)以及RAM(156)。可以在一个或多个集成电路芯片上构造图2的处理核(165)。处理核(165)通过高速内存总线(155)连接到RAM(156)并且通过总线适配器(194)和扩展总线(168)连接到计算节点的其它部件。在RAM(156)中存储了应用程序(159),即,使用并行算法执行并行、用户级数据处理的计算机程序指令的模块。
在RAM(156)中还存储了并行通信库(161),即,在计算节点之间执行并行通信(包括点对点操作和集体操作)的计算机程序指令的库。可以使用例如C编程语言的常规编程语言以及使用常规编程方法编写在两个独立数据通信网络上在节点之间发送和接收数据的并行通信例程,从头开发并行通信例程的库以用于根据本发明的实施例的系统中。或者,可以改进现存的现有库以根据本发明的实施例进行工作。现有并行通信库的示例包括“消息传递接口,Message Passing Interface”(MPI)库和“并行虚拟机,Parallel Virtual Machine”(PVM)库。
在RAM中还存储了级别(212),即MPI通信器中的过程。当级别(212)和并行通信库(161)被执行时,使得计算节点(102)总体上工作以进行根据本发明的实施例的集体操作协议选择。在图2的示例中,级别(212)调用具有一个或多个操作参数(214)的集体操作(220)并且并行通信库(161)开始针对该集体操作(220)的协议(222)选择。并行通信库(161)可以在反复过程中选择用于执行该集体操作的协议(222)之一,从第一预期协议开始,一直持续到满足预定性能标准的预期协议。选择过程的每次重复包括向用于由存储在协议的元数据(224)中的指针(226)引用的预期协议的协议性能函数(228)提供所述集体操作(220)的操作参数(214)。通过针对预期协议(222)采用所述操作参数(214)评估预定义性能拟合方程(230)从而计算针对所述操作参数(214)的该预期协议(222)的性能度量(218),性能函数(228)确定针对所述操作参数(214)该预期协议是否满足预定义性能标准(216)。如果计算的性能度量(218)大于在性能标准(216)中阐述的预定义最小性能阈值,则性能函数确定该预期协议满足预定性能标准(216)并且选择该预期协议(222)作为用于执行所述集体操作(220)的协议。并行通信库(161)然后利用所选择的协议执行所述集体操作。
在RAM(156)中还存储了操作系统(162),即,用于应用程序访问计算节点的其它资源的计算机程序指令和例程的模块。通常,并行计算机的计算机节点中的应用程序和并行通信库在无用户登录且无安全问题的情况下进行单线程执行,因为该线程被授权完全访问该节点的所有资源。因此,要由并行计算机中的计算节点上的操作系统执行的任务的数目和复杂度要比许多线程同时运行的串行计算机上的操作系统的情况更少和更简单。此外,在图2的计算节点(102)上没有视频I/O,这是降低对操作系统的需求的另一个因素。因此,与通用计算机的操作系统(精简版本)或特别为特定并行计算机上的操作开发的操作系统相比,操作系统(162)可以是非常轻载的。可有用地进行改进、简化以应用于计算节点的操作系统包括UNIXTM、LinuxTM、Windows XPTM、AIXTM、IBM的i5/OSTM以及本领域技术人员可想到的其它操作系统。
图2的示例计算节点(102)包括与并行计算机的其它节点进行数据通信的几个通信适配器(172、176、180、188)。这些数据通信可以通过RS-232连接、通过例如USB的外部总线、通过例如IP网络的数据通信网络以及本领域技术人员可以想到的其它方式串行地执行。通信适配器实现硬件水平的数据通信,通过该通信适配器,一个计算机直接或通过网络向另一个计算机发送数据通信。可应用于能够执行并行计算机中的集体操作协议选择的设备中的通信适配器的示例包括用于有线通信的调制解调器、用于有线网络通信的以太网(IEEE 802.3)适配器和用于无线网络通信的802.11b适配器。
图2的示例中的数据通信适配器包括吉比特以太网适配器(172),用于将示例计算节点(102)耦合到吉比特以太网(174)以进行数据通信。吉比特以太网是在IEEE 802.3标准中定义的提供每秒十亿比特(一吉比特)的数据率的网络传输标准。吉比特以太网是在多模光纤光缆、单模光纤光缆或未屏蔽双绞线上工作的以太网的变型。
图2的示例中的数据通信适配器包括JTAG从电路(176),用于将示例计算节点(102)耦合到JTAG主电路(178)以进行数据通信。JTAG是用于使用边界扫描来测试印刷线路板的测试访问端口的、标题为标准测试访问端口和边界扫描架构的IEEE 1149.1标准的常用名称。JTAG的适用范围如此广泛以致此时边界扫描或多或少与JTAG同义。JTAG不仅用于印刷线路板,还用于执行集成电路的边界扫描,并且还用作用于调试嵌入式系统、在该系统中提供便利的另选接入点的机制。图2的示例计算节点可以是所有这三个:它通常包括安装在印刷线路板上的一个或多个集成电路并且可以被实现为具有它自己的处理核、它自己的存储器和它自己的I/O能力的嵌入式系统。通过JTAG从(176)的JTAG边界扫描可高效地配置计算节点(102)中的处理核寄存器和存储器,用于动态地向用于根据本发明的实施例的并行计算机中的集体操作协议选择的系统中的一批计算节点重分配连接的节点。
图2的示例中的数据通信适配器包括点对点网络适配器(180),用于将示例计算节点(102)耦合到对于进行点对点消息传递操作最优的网络(108)(例如,被构造为三维环或网格的网络)以进行数据通信。点对点适配器(180)通过6个双向链路+x(181)、-x(182)、+y(183)、-y(184)、+z(185)和-z(186),在三个通信轴x、y和z上的6个方向上提供数据通信。
图2的示例中的数据通信适配器包括全局组合网络适配器(188),用于将示例计算节点(102)耦合到对于集体消息传递操作最佳的全局组合网络(106)(例如被构造为二叉树的网络)以进行数据通信。全局组合网络适配器(188)经由三个双向链路为全局组合网络适配器(188)支持的每个全局组合网络(106)提供数据通信。在图2的示例中,全局组合网络适配器(188)通过三个双向链路为全局组合网络(106)提供数据通信:两个到达孩子节点(190),一个到达父节点(192)。
示例计算节点(102)包括多个算术逻辑单元(ALU)。每个处理核(165)包括ALU(166),并且单独的ALU(170)专用于全局组合网络适配器(188)以用于执行包括allreduce操作的归约操作的算术和逻辑函数。并行通信库(161)中的归约例程的计算机程序指令可以将算术或逻辑函数的指令锁存到指令寄存器(169)。当归约操作的算术或逻辑函数是“和”或“逻辑或”时,例如,集体操作适配器(188)可以通过使用处理核(165)中的ALU(166)执行算术或逻辑操作或者通过使用专用ALU(170)使用由全局组合网络(106)上的节点(190、192)提供的数据和由计算节点(102)上的处理核(165)提供的数据通常快得多地执行算术或逻辑操作。
然而,常常当在全局组合网络适配器(188)中执行算术操作时,全局组合网络适配器(188)仅仅用于组合从孩子节点(190)接收的数据并且将结果沿网络(106)向上传递给父节点(192)。类似地,全局组合网络适配器(188)可以仅仅用于发送从父节点(192)接收的数据并且将数据沿网络(106)向下传递给孩子节点(190)。即,计算节点(102)上的处理核(165)都没有贡献改变ALU(170)的输出并且然后被向上或向下通过全局组合网络(106)传递的数据。由于ALU(170)通常直到ALU(170)从处理核(165)之一接收到输入才在网络(106)上输出数据,所以处理核(165)可以将身份元素注入专用ALU(170)以用于在ALU(170)中执行特定算术操作以防止ALU(170)的输出被改变。然而,将身份元素注入ALU常常消耗大量处理周期。为了进一步增强这些情况下的性能,示例计算节点(102)包括专用硬件(171),用于将身份元素注入ALU(170)以减少防止ALU输出的改变所需的处理核资源的量。专用硬件(171)注入与由ALU执行的特定算术操作对应的身份元素。例如,当全局组合网络适配器(188)对从孩子节点(190)接收的数据执行位或时,专用硬件(171)可以将零注入到ALU(170)以提高整个全局组合网络(106)的性能。
为了进一步进行解释,图3A阐述了用于根据本发明的实施例的并行计算机中的集体操作协议选择的系统的示例点对点适配器(180)的框图。点对点适配器(180)被设计用于针对点对点操作而优化的数据通信网络、以三维环或网格组织计算机节点的网络。图3A的示例中的点对点适配器(180)沿x轴经由四个单向数据通信链路,向以及自-x方向(182)上的下一个节点提供数据通信,并且向以及自+x方向(181)上的下一个节点提供数据通信。图3A的点对点适配器(180)还沿y轴通过四个单向数据通信链路,向以及自-y方向(184)上的下一个节点提供数据通信并且向以及自+y方向(183)上的下一个节点提供数据通信。图3A的点对点适配器(180)还沿z轴通过四个单向数据通信链路,向以及自-z方向(186)上的下一个节点提供数据通信并且向以及自+z方向(185)上的下一个节点提供数据通信。
为了进一步解释,图3B阐述了用于根据本发明的实施例的并行计算机中的集体操作协议选择的系统中的示例全局组合网络适配器(188)的框图。全局组合网络适配器(188)被设计用于针对集体操作进行优化的网络、以二叉树组织并行计算机的计算节点的网络。图3B的示例中的全局组合网络适配器(188)通过四个单向数据通信链路(190)提供去往和来自全局组合网络的孩子节点的数据通信,还通过两个单向数据通信链路(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开始的整数,其中,0被分配给根任务或根节点(202),1被分配给树的第二层中的第一节点,2被分配给树的第二层中的第二节点,3被分配给树的第三层中的第一节点,4被分配给树的第三层中的第二节点,依此类推。为了易于进行显示,这里仅仅示出了树的前三层的级别,但是树网络中的所有计算节点都被分配一个唯一级别。
为了进一步进行解释,图6阐述了示出用于根据本发明的实施例的并行计算机中的集体操作协议选择的示例方法的流程图。在例如与图1所示的并行计算机(100)相似的包括多个计算节点的并行计算机中执行图6的方法。
图6的方法包括调用(602)具有一个或多个操作参数的集体操作。通过对由并行通信库提供的函数执行函数调用可以执行调用(602)具有一个或多个操作参数的集体操作,其中,所述函数表示特定类型的集体操作。集体操作的示例包括归约操作、广播操作、收集操作等。
每个集体操作可以以各种方式执行。执行集体操作的每种方式被称作协议。即,每个集体操作可以包括多个协议,其中,每个协议被构造为实现或执行该集体操作。为此,图6的方法包括选择(604)用于执行集体操作的多个协议之一。这种选择(604)是反复的过程,该反复过程针对集体操作的每个预期协议执行一次,从第一预期协议开始并且当一个预期协议满足预定性能标准时结束。
为此,图6的方法包括向用于预期协议的协议性能函数提供集体操作的操作参数(606)。向用于预期协议的性能函数提供集体操作的操作参数(606)可以通过传递操作参数作为对性能函数的函数调用的参数来执行。考虑对归约集体操作的第一预期协议的性能函数进行下面的示例函数调用:
bool ProtocolFit=(*Perf_Func_Reduce_Protocol1)(MsgSize,MsgType);在以上的示例函数调用中,指针*Perf_Func_Reduce_Protocol1是指向归约操作的第一协议的性能函数的指针。这个指针可以存储在与该预期协议关联并且描述该预期协议的元数据中。执行协议的选择(604)的并行通信库可以从协议的元数据取回函数指针以执行函数调用。
向性能函数传递的参数包括MsgSize(即,在归约操作中传递的消息的消息大小)和MsgType(即,在归约操作中传递的消息的类型)。在这个示例中,MsgSize和MsgType是集体操作自身的相同操作参数。性能函数的返回值是作为变量“ProtocolFit”进行存储的布尔值。ProtocolFit的值为真指示针对该集体操作和参数组该协议满足预定义性能标准,并且ProtocolFit的值为假指示针对该集体操作和参数组该协议不满足预定义性能标准。
性能函数通过确定(608)针对所述操作参数该预期协议是否满足预定义性能标准来确定是返回真值还是假值。预定义性能标准可以是表示特定协议的优选最小性能水平的任何标准。可使用的性能的类型的示例是包括集体操作的执行时间、执行集体操作的网络带宽利用率、执行集体操作的存储器资源利用率、执行集体操作的处理器资源利用率等的标准。
预定义性能标准的值可以被提供给性能函数,作为对性能标准的函数调用的参数。即,对于协议选择,每个集体操作或者每个集体操作的每个实例可以具有要满足的独立的不同的性能标准。或者,预定义性能标准可以是所有集体操作的所有协议的性能函数可用的单个全局可访问值。
在图6的方法中,针对操作参数确定(608)预期协议是否满足预定义性能标准包括通过所述操作参数评估预期协议的预定义性能拟合方程。预定义性能拟合方程是定义在一定范围的不同操作参数组上的协议的性能度量的方程。该拟合方程可以是通过回归分析(即,实际性能的近似)建立的方程。在图6的方法中评估(610)这种拟合方程包括计算(612)针对所述操作参数的该预期协议的性能度量。
通过确定(614)计算的性能度量是否大于预定义最小性能阈值,确定(608)针对所述操作参数该预期协议是否满足预定义性能标准的操作继续。预定义最小性能阈值是由预定性能标准指定的值。即,在大多数实施例中,预定性能标准是预定义最小性能阈值。
如果计算的性能度量不大于预定义最小性能阈值,则图6的方法在选择(604)过程的另一次反复中利用另一个预期协议继续(616)。如果计算的性能度量大于预定义最小性能阈值,则图6的方法通过选择(618)该预期协议作为用于执行集体操作的协议并且利用选择的协议执行(620)集体操作而继续。
为了进一步进行解释,图7阐述了示出用于根据本发明的实施例的并行计算机中的集体操作协议选择的另一个示例方法的流程图。图7的示例方法与图6的示例方法的相似之处在于也包括:调用(602)具有操作参数的集体操作;选择(604)协议,包括:向协议性能函数提供(606)操作参数,确定(608)预期协议是否满足预定义性能标准,评估(610)预定义性能拟合方程,计算(612)性能度量,仅当计算的性能度量大于预定义最小性能阈值才选择(618)该预期协议;以及利用选择的协议执行(620)集体操作。
然而,图7的方法与图6的方法的不同之处在于,图7的方法包括在实际协议选择之前(即,在调用集体操作之前)执行的协议性能确定的缓存过程。换言之,在协议选择(604)之前针对集体操作的一组或多组操作参数以及一个或多个预期协议执行图7的方法中的缓存过程。对于每组操作参数和每个预期协议,图7的方法包括确定(702)预期协议是否满足预定性能标准。在计算节点的工作组的建立(704)过程中,图7的方法包括缓存(708)满足预定性能标准的预期协议的每个确定,而不缓存(708)不满足预定性能标准的预期协议的确定。作为示例考虑在建立(704)计算节点的工作组之前用户利用10组操作参数针对单个集体操作(即,归约操作)启动缓存过程。对于归约操作的每个协议以及对于10组操作参数中的每一组,图7的缓存过程将确定针对该组操作参数该协议是否满足预定义性能标准。对于每个肯定确定(即,协议针对一组特定操作参数满足预定义性能标准的确定),在建立(704)计算节点的工作组时,缓存过程将缓存该确定。可以通过各种方式执行缓存确定,这些方式例如包括,将每个确定存储在存储器中并且将指向该确定的指针插入到对应协议的元数据中,将确定插入存储在公知的存储位置的表或其它数据结构中,以及本技术领域的读者可以想到的其它等等。
一旦计算节点的工作组被建立(704)并且满足性能标准的集体操作的协议的肯定确定已经被缓存,选择(604)用于执行集体操作的协议的过程包括针对集体操作的操作参数确定是否存在缓存的满足预定性能标准的预期协议的确定。如果存在缓存的满足预定性能标准的预期协议的确定,则选择(604)选择(712)该预期协议作为用于执行集体操作的协议,而不在协议选择过程中计算针对操作参数的预期协议的性能度量。即,不是完成向性能函数提供(606)操作参数、评估性能函数、计算性能度量等这样的一个个反复,图7的方法包括基于缓存的确定选择协议(绕开这些反复)。当缓存的确定可用时,这里在图7中阐述的缓存确定可以通过绕开一次或多次反复而提高选择(604)用于执行集体操作的协议的速度和效率。
为了进一步进行解释,图8阐述了示出根据本发明的实施例的并行计算机中的集体操作协议选择的另一个示例方法的流程图。图8的示例方法与图6的示例方法的相似之处在于也包括:调用(602)具有操作参数的集体操作;选择(604)协议,包括:向协议性能函数提供(606)操作参数,确定(608)预期协议是否满足预定义性能标准,评估(610)预定义性能拟合方程,计算(612)性能度量,仅当计算的性能度量大于预定义最小性能阈值才选择(618)该预期协议;以及利用选择的协议执行(620)集体操作。
然而,图8的方法与图6的方法不同,在图8的方法中包括为集体操作的每个协议建立(802)预定义性能拟合方程。在图8的方法中,建立(802)预定义性能拟合方程包括:对于多组操作参数中的每一组执行一次该协议,对每次执行记录(806)性能度量,以及针记录的性能度量计算(808)拟合方程。可以通过各种方式执行针对记录的性能度量计算(808)拟合方程,这些方式例如包括计算线性近似拟合方程、立方近似拟合方程和四次近似拟合方程。可以执行回归分析以计算拟合方程。
本技术领域的读者将认识到,当特定协议的性能有些可变时,这种通过拟合方程的近似是有用的。与之相比,在一些情形下,可以确切地知道特定协议的性能。即,一些协议的性能实质上是确定性的。在这种实施例中,针对记录的性能度量计算(808)拟合方程可以包括针对所有可能的操作参数计算确切函数。
本领域技术人员应该明白,本发明的各方面可以被实施为系统、方法或计算机程序产品。因此,本发明的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微码等)或组合软件和硬件方面的实施例的形式,在这里它们全部总体上可以被称作“电路”、“模块”或“系统”。另外,本发明的各方面可以采取计算机程序产品的形式,该计算机程序产品在一个或多个计算机可读介质中实施,在该计算机可读介质上实施有计算机可读程序代码。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读传输介质或计算机可读存储介质。计算机可读存储介质例如可以是但不限于电子、磁性、光学、电磁、红外或半导体系统、设备、或装置或者上述的任何合适组合。计算机可读存储介质的更具体示例(非穷尽性列表)将包括如下:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储装置、磁存储装置或者上述的任何合适组合。在本文的上下文中,计算机可读存储介质可以是能够包含或存储由指令执行系统、设备或装置使用或者与它们结合使用的程序的任何有形介质。
计算机可读传输介质可以包括例如在基带中或者作为载波的一部分传播的数据信号,在该数据信号内实施了计算机可读程序码。这种传播的信号可以采用各种形式的任何一种,包括但不限于电磁、光学、或者它们的任何合适组合。计算机可读传输介质可以是并非计算机可读存储介质并且能够传送、传播或传输由指令执行系统、设备或装置使用或与它们结合使用的程序的任何计算机可读介质。
可以使用任何适合的介质发送在计算机可读介质上实施的程序码,该介质包括但不限于无线、有线、光纤、RF等或者上述的任何合适组合。
可以通过一种或多种编程语言的任何组合编写用于执行本发明的各方面的操作的计算机程序码,这些编程语言包括诸如Java、Smalttalk、C++等的面向对象编程语言和诸如“C”编程语言或相似编程语言的传统过程编程语言。该程序码可以完全在用户的计算机上、部分在用户的计算机上、作为单机软件包、部分在用户的计算机上且部分在远程计算机上或者完全在远程计算机或服务器上执行。在后者的情形下,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用户的计算机,或者可以连接到外部计算机(例如,使用互联网服务提供商通过互联网)。
在上文中参照根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。应该明白,流程图和/或框图的每个块以及流程图和/或框图中的块的组合能够由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或者其它可编程数据处理设备的处理器以生成一机器,从而经由计算机或其它可编程数据处理设备的处理器执行的指令建立实现在流程图和/或框图块中指定的功能/动作的装置。
这些计算机程序指令还可以存储在计算机可读介质中以能够引导计算机、其它可编程数据处理设备或其它装置以特定方式工作,从而存储在计算机可读介质中的指令生成包括实现在流程图和/或框图块中指定的功能/动作的指令的制品。
计算机程序指令还可以加载到计算机、其它可编程数据处理设备或其它装置上以使得在计算机、其它可编程设备或其它装置上执行一系列操作步骤以生成计算机实现的过程,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图和/或框图块中指定的功能/动作的过程。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。关于此,流程图或框图中的每个块可以表示包括用于实现指定的逻辑功能的一个或多个可执行指令的代码的模块、段或部分。还应该注意,在一些另选实施方式中,块中注释的功能可以不按附图中注释的顺序发生。例如,接连示出的两个块实际上可以基本上同时执行,或者这些块有时候可以以相反顺序执行,这取决于涉及的功能。还应注意,框图和/或流程图的每个块以及框图和/或流程图中的块的组合能够由执行指定功能或动作的基于专用硬件的系统或者专用硬件和计算机指令的组合进行实现。
从上述描述应该明白,在不脱离本发明的真实精神的情况下可以在本发明的各种实施例中执行变型和改变。本说明书中的说明仅仅用于例示的目的而非以限制意义进行解释。本发明的范围仅由权利要求的语言进行限制。
Claims (12)
1.一种用于并行计算机中的集体操作协议选择的方法,所述并行计算机包括多个计算节点,所述方法包括:
调用具有一个或多个操作参数的集体操作;
选择用于执行该集体操作的多个协议之一,包括针对从第一预期协议开始直到满足预定性能标准的预期协议的每个协议,反复地执行如下操作:
向用于该预期协议的协议性能函数提供所述集体操作的操作参数;
通过性能函数确定针对所述操作参数该预期协议是否满足预定义性能标准,包括利用所述操作参数评估针对该预期协议的预定义性能拟合方程,计算针对所述操作参数的该预期协议的性能度量;以及
仅当计算的性能度量大于预定义最小性能阈值时,确定该预期协议满足预定性能标准并且选择该预期协议作为用于执行所述集体操作的协议;以及
利用选择的协议执行所述集体操作。
2.权利要求1的方法,其中:
集体操作的每个协议与元数据关联,针对每个集体操作的元数据包括指向协议的性能函数的指针;以及
向用于该预期协议的协议性能函数提供所述集体操作的操作参数还包括从该预期协议的元数据取回指向该预期协议的性能函数的指针。
3.权利要求1的方法,还包括:
在协议选择之前,针对所述集体操作的一组或多组操作参数以及一个或多个预期协议:确定该预期协议是否满足预定性能标准;以及
当建立计算节点的工作组时缓存满足预定性能标准的预期协议的每个确定,
其中,选择用于执行所述集体操作的多个协议之一还包括:
针对所述集体操作的操作参数,确定是否存在缓存的满足预定性能标准的预期协议的确定;以及
如果存在缓存的满足预定性能标准的预期协议的确定,则选择该预期协议作为用于执行所述集体操作的协议,而不在协议选择期间计算针对所述操作参数的预期协议的性能度量。
4.权利要求1的方法,还包括:
针对所述集体操作的每个协议,建立预定义性能拟合方程,包括:
针对多组操作参数中的每一组执行一次该协议;
针对每次执行,记录性能度量;以及
为记录的性能度量计算拟合方程。
5.权利要求1的方法,其中,为记录的性能度量计算拟合方程还包括计算以下之一:
线性近似拟合方程;
立方近似拟合方程;以及
四次近似拟合方程。
6.权利要求1的方法,其中,为记录的性能度量计算拟合方程还包括为所有可能的操作参数计算确切函数。
7.一种用于并行计算机中的集体操作协议选择的设备,所述并行计算机包括多个计算节点,所述设备包括计算机处理器、可操作地耦合到计算机处理器的计算机存储器,该计算机存储器内设置有计算机程序指令,所述计算机程序指令当由计算机处理器执行时使得所述设备执行如下步骤:
调用具有一个或多个操作参数的集体操作;
选择用于执行该集体操作的多个协议之一,包括针对从第一预期协议开始直到满足预定性能标准的预期协议的每个协议,反复地执行如下操作:
向用于该预期协议的协议性能函数提供所述集体操作的操作参数;
通过性能函数确定针对所述操作参数该预期协议是否满足预定义性能标准,包括利用所述操作参数评估针对该预期协议的预定义性能拟合方程,计算针对所述操作参数的该预期协议的性能度量;以及
仅当计算的性能度量大于预定义最小性能阈值时,确定该预期协议满足预定性能标准并且选择该预期协议作为用于执行所述集体操作的协议;以及
利用选择的协议执行所述集体操作。
8.权利要求7的设备,其中:
集体操作的每个协议与元数据关联,针对每个集体操作的元数据包括指向协议的性能函数的指针;以及
向用于该预期协议的协议性能函数提供所述集体操作的操作参数还包括从该预期协议的元数据取回指向该预期协议的性能函数的指针。
9.权利要求7的设备,还包括计算机程序指令,所述计算机程序指令当由计算机处理器执行时使所述设备执行如下步骤:
在协议选择之前,针对所述集体操作的一组或多组操作参数以及一个或多个预期协议:确定该预期协议是否满足预定性能标准;以及
当建立计算节点的工作组时缓存满足预定性能标准的预期协议的每个确定,
其中,选择用于执行所述集体操作的多个协议之一还包括:
针对所述集体操作的操作参数,确定是否存在缓存的满足预定性能标准的预期协议的确定;以及
如果存在缓存的满足预定性能标准的预期协议的确定,则选择该预期协议作为用于执行所述集体操作的协议,而不在协议选择期间计算针对所述操作参数的预期协议的性能度量。
10.权利要求7的设备,还包括计算机程序指令,所述计算机程序指令当由计算机处理器执行时使所述设备执行如下步骤:
针对所述集体操作的每个协议,建立预定义性能拟合方程,包括:
针对多组操作参数中的每一组执行一次该协议;
针对每次执行,记录性能度量;以及
为记录的性能度量计算拟合方程。
11.权利要求7的设备,其中,为记录的性能度量计算拟合方程还包括计算以下之一:
线性近似拟合方程;
立方近似拟合方程;以及
四次近似拟合方程。
12.权利要求7的设备,其中,为记录的性能度量计算拟合方程还包括为所有可能的操作参数计算确切函数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/206,116 US8893083B2 (en) | 2011-08-09 | 2011-08-09 | Collective operation protocol selection in a parallel computer |
US13/206,116 | 2011-08-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103150144A true CN103150144A (zh) | 2013-06-12 |
CN103150144B CN103150144B (zh) | 2016-01-06 |
Family
ID=46546536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210281401.XA Active CN103150144B (zh) | 2011-08-09 | 2012-08-09 | 用于并行计算机中的集体操作协议选择的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8893083B2 (zh) |
CN (1) | CN103150144B (zh) |
DE (1) | DE102012214007A1 (zh) |
GB (1) | GB2493590B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115280789A (zh) * | 2020-03-17 | 2022-11-01 | 高通股份有限公司 | 用于多媒体会议的场景描述的信令 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080022079A1 (en) * | 2006-07-24 | 2008-01-24 | Archer Charles J | Executing an allgather operation with an alltoallv operation in a parallel computer |
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 |
US8938713B2 (en) * | 2012-02-09 | 2015-01-20 | International Business Machines Corporation | Developing a collective operation for execution in a parallel computer |
US9495135B2 (en) | 2012-02-09 | 2016-11-15 | International Business Machines Corporation | Developing collective operations for a parallel computer |
RU2526754C2 (ru) * | 2012-09-28 | 2014-08-27 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ подбора функций управления мобильными устройствами |
CA2972593A1 (en) * | 2014-12-31 | 2016-07-07 | Level 3 Communications, Llc | Network address resolution |
CN111095202A (zh) * | 2017-09-30 | 2020-05-01 | 英特尔公司 | 基于注入节点带宽的并行处理 |
US10949322B2 (en) * | 2019-04-08 | 2021-03-16 | Hewlett Packard Enterprise Development Lp | Collecting performance metrics of a device |
CN115002220B (zh) * | 2022-06-02 | 2023-03-24 | 北京无限智慧科技有限公司 | 一种基于资源整合的数字服务平台系统和服务方法 |
US11934828B1 (en) * | 2022-11-29 | 2024-03-19 | Vast Data Ltd. | Performance management for accessing stored entities by multiple compute nodes of a storage system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1394314A (zh) * | 2000-11-02 | 2003-01-29 | 索尼计算机娱乐公司 | 并行运算设备、娱乐设备、处理方法、计算机程序和半导体设备 |
US20070245163A1 (en) * | 2006-03-03 | 2007-10-18 | Yung-Hsiang Lu | Power management in computer operating systems |
US20080184214A1 (en) * | 2007-01-30 | 2008-07-31 | Charles Jens Archer | Routing Performance Analysis and Optimization Within a Massively Parallel Computer |
US20090063815A1 (en) * | 2007-08-27 | 2009-03-05 | Arimilli Lakshminarayana B | System and Method for Providing Full Hardware Support of Collective Operations in a Multi-Tiered Full-Graph Interconnect Architecture |
Family Cites Families (181)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE435987B (sv) | 1983-06-09 | 1984-10-29 | Ericsson Telefon Ab L M | Sett och anordning for uppkoppling av en sluten ring genom en telefonvexel |
US4843540A (en) | 1986-09-02 | 1989-06-27 | The Trustees Of Columbia University In The City Of New York | Parallel processing method |
US5105424A (en) | 1988-06-02 | 1992-04-14 | California Institute Of Technology | Inter-computer message routing system with each computer having separate routinng automata for each dimension of the network |
US5101480A (en) | 1989-05-09 | 1992-03-31 | The University Of Michigan | Hexagonal mesh multiprocessor system |
AU630299B2 (en) | 1990-07-10 | 1992-10-22 | Fujitsu Limited | A data gathering/scattering system in a parallel computer |
US5765011A (en) | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5617538A (en) | 1991-07-02 | 1997-04-01 | Tm Patents, L.P. | Message transfer system and method for parallel computer with message transfers being scheduled by skew and roll functions to avoid bottlenecks |
JP3679813B2 (ja) | 1991-07-22 | 2005-08-03 | 株式会社日立製作所 | 並列計算機 |
JPH0581216A (ja) | 1991-09-20 | 1993-04-02 | Hitachi Ltd | 並列プロセツサ |
CA2078912A1 (en) | 1992-01-07 | 1993-07-08 | Robert Edward Cypher | Hierarchical interconnection networks for parallel processing |
US5333279A (en) | 1992-06-01 | 1994-07-26 | Intel Corporation | Self-timed mesh routing chip with data broadcasting |
US6076131A (en) | 1992-12-30 | 2000-06-13 | Intel Corporation | Routing resource reserve/release protocol for multi-processor computer systems |
US5937202A (en) | 1993-02-11 | 1999-08-10 | 3-D Computing, Inc. | High-speed, parallel, processor architecture for front-end electronics, based on a single type of ASIC, and method use thereof |
US5598568A (en) | 1993-05-06 | 1997-01-28 | Mercury Computer Systems, Inc. | Multicomputer memory access architecture |
US5541914A (en) | 1994-01-19 | 1996-07-30 | Krishnamoorthy; Ashok V. | Packet-switched self-routing multistage interconnection network having contention-free fanout, low-loss routing, and fanin buffering to efficiently realize arbitrarily low packet loss |
US5822605A (en) | 1994-03-24 | 1998-10-13 | Hitachi, Ltd. | Parallel processor system with a broadcast message serializing circuit provided within a network |
WO1995027248A1 (en) | 1994-03-30 | 1995-10-12 | Apple Computer, Inc. | Object oriented message passing system and method |
JPH08185380A (ja) | 1994-12-28 | 1996-07-16 | Hitachi Ltd | 並列計算機 |
US5864712A (en) | 1995-03-17 | 1999-01-26 | Lsi Logic Corporation | Method and apparatus for controlling (N+I) I/O channels with (N) data managers in a homogenous software programmable environment |
US5812775A (en) | 1995-07-12 | 1998-09-22 | 3Com Corporation | Method and apparatus for internetworking buffer management |
CA2228219C (en) | 1995-07-28 | 2002-10-15 | British Telecommunications Public Limited Company | Packet routing |
US5875329A (en) | 1995-12-22 | 1999-02-23 | International Business Machines Corp. | Intelligent batching of distributed messages |
US5748900A (en) | 1996-03-13 | 1998-05-05 | Cray Research, Inc. | Adaptive congestion control mechanism for modular computer networks |
JPH1040223A (ja) | 1996-06-17 | 1998-02-13 | Internatl Business Mach Corp <Ibm> | 分散並列システムにおける集合通信認識の最適化方法 |
US5949988A (en) | 1996-07-16 | 1999-09-07 | Lucent Technologies Inc. | Prediction system for RF power distribution |
US5668815A (en) | 1996-08-14 | 1997-09-16 | Advanced Micro Devices, Inc. | Method for testing integrated memory using an integrated DMA controller |
GB9617907D0 (en) | 1996-08-28 | 1996-10-09 | British Telecomm | Communications network |
US6289424B1 (en) | 1997-09-19 | 2001-09-11 | Silicon Graphics, Inc. | Method, system and computer program product for managing memory in a non-uniform memory access system |
US6000024A (en) | 1997-10-15 | 1999-12-07 | Fifth Generation Computer Corporation | Parallel computing system |
US6341342B1 (en) | 1997-11-04 | 2002-01-22 | Compaq Information Technologies Group, L.P. | Method and apparatus for zeroing a transfer buffer memory as a background task |
US6609189B1 (en) | 1998-03-12 | 2003-08-19 | Yale University | Cycle segmented prefix circuits |
JPH11259441A (ja) | 1998-03-13 | 1999-09-24 | Hitachi Ltd | 並列計算機における全対全通信方法 |
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 |
US6067609A (en) | 1998-04-09 | 2000-05-23 | Teranex, Inc. | Pattern generation and shift plane operations for a mesh connected computer |
US6292822B1 (en) | 1998-05-13 | 2001-09-18 | Microsoft Corporation | Dynamic load balancing among processors in a parallel computer |
US6212617B1 (en) | 1998-05-13 | 2001-04-03 | Microsoft Corporation | Parallel processing method and system using a lazy parallel data type to reduce inter-processor communication |
US6205532B1 (en) | 1998-05-22 | 2001-03-20 | Avici Systems, Inc. | Apparatus and methods for connecting modules using remote switching |
WO2000016209A1 (en) | 1998-09-15 | 2000-03-23 | Local2Me.Com, Inc. | Dynamic matchingtm of users for group communication |
JP2000156039A (ja) | 1998-11-18 | 2000-06-06 | Bantan International:Kk | マルチトラック記録再生方式及び装置 |
US6433802B1 (en) | 1998-12-29 | 2002-08-13 | Ncr Corporation | Parallel programming development environment |
US6598145B1 (en) | 1999-02-12 | 2003-07-22 | Avici Systems | Irregular network |
NO993483L (no) | 1999-07-15 | 2001-01-16 | Ericsson Telefon Ab L M | Fremgangsmåte og anordning for effektiv overföring av datapakker |
US6473849B1 (en) | 1999-09-17 | 2002-10-29 | Advanced Micro Devices, Inc. | Implementing locks in a distributed processing system |
US6754211B1 (en) | 1999-12-01 | 2004-06-22 | Mosaid Technologies, Inc. | Method and apparatus for wire speed IP multicast forwarding |
US7284033B2 (en) | 1999-12-14 | 2007-10-16 | Imahima Inc. | Systems for communicating current and future activity information among mobile internet users and methods therefor |
EP1290560A2 (en) | 2000-05-19 | 2003-03-12 | Neale Bremner Smith | Distributed processing multi-processor computer |
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 |
US6647438B1 (en) | 2000-09-19 | 2003-11-11 | Intel Corporation | Direct memory access transfer reduction method and apparatus to overlay data on to scatter gather descriptors for bus-mastering I/O controllers |
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 |
US20020091819A1 (en) | 2001-01-05 | 2002-07-11 | Daniel Melchione | System and method for configuring computer applications and devices using inheritance |
IL157514A0 (en) | 2001-02-24 | 2004-03-28 | Ibm | Class network routing |
US7555566B2 (en) | 2001-02-24 | 2009-06-30 | International Business Machines Corporation | Massively parallel supercomputer |
US7313582B2 (en) | 2001-02-24 | 2007-12-25 | International Business Machines Corporation | Arithmetic functions in torus and tree networks |
US6982960B2 (en) | 2001-03-09 | 2006-01-03 | Motorola, Inc. | Protocol for self-organizing network using a logical spanning tree backbone |
US20020144027A1 (en) | 2001-03-27 | 2002-10-03 | Schmisseur Mark A. | Multi-use data access descriptor |
DE60200530T2 (de) | 2001-04-04 | 2004-09-23 | Alcatel | Mechanismus und Verfahren zur Bestimmung und schnellen Wiederherstellung einer minimalen Kapazität in einem vermaschten Netz |
US6691101B2 (en) | 2001-06-21 | 2004-02-10 | Sybase, Inc. | Database system providing optimization of group by operator over a union all |
US7058948B2 (en) | 2001-08-10 | 2006-06-06 | Hewlett-Packard Development Company, L.P. | Synchronization objects for multi-computer systems |
US8473922B2 (en) | 2001-09-19 | 2013-06-25 | Hewlett-Packard Development Company, L.P. | Runtime monitoring in component-based systems |
US7203743B2 (en) | 2001-12-28 | 2007-04-10 | Nortel Networks Limited | Hierarchical tree-based protection scheme for mesh networks |
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 |
US7376693B2 (en) | 2002-02-08 | 2008-05-20 | Jp Morgan Chase & Company | System architecture for distributed computing and method of using the system |
JP2004005382A (ja) | 2002-03-29 | 2004-01-08 | Fujitsu Ltd | データ転送装置および方法 |
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 |
US7899067B2 (en) | 2002-05-31 | 2011-03-01 | Cisco Technology, Inc. | Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match |
US7130933B2 (en) | 2002-07-24 | 2006-10-31 | Intel Corporation | Method, system, and program for handling input/output commands |
US7263698B2 (en) | 2002-08-29 | 2007-08-28 | Sap Aktiengesellschaft | Phased upgrade of a computing environment |
US7062681B2 (en) | 2002-12-03 | 2006-06-13 | Microsoft Corporation | Method and system for generically reporting events occurring within a computer system |
US7263598B2 (en) | 2002-12-12 | 2007-08-28 | Jack Robert Ambuel | Deterministic real time hierarchical distributed computing system |
US6874054B2 (en) | 2002-12-19 | 2005-03-29 | Emulex Design & Manufacturing Corporation | Direct memory access controller system with message-based programming |
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 |
JP2005092742A (ja) | 2003-09-19 | 2005-04-07 | Toshiba Corp | ビデオ出力コントローラ及びビデオカード |
US7366109B2 (en) | 2003-10-29 | 2008-04-29 | Nortel Networks Limited | Virtual private networks within a packet network having a mesh topology |
US20050135395A1 (en) | 2003-12-22 | 2005-06-23 | Fan Kan F. | Method and system for pre-pending layer 2 (L2) frame descriptors |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7664110B1 (en) | 2004-02-07 | 2010-02-16 | Habanero Holdings, Inc. | Input/output controller for coupling the processor-memory complex to the fabric in fabric-backplane interprise servers |
US7725329B2 (en) | 2004-04-27 | 2010-05-25 | Humana Inc. | System and method for automatic generation of a hierarchical tree network and the use of two complementary learning algorithms, optimized for each leaf of the hierarchical tree network |
US7609624B2 (en) | 2004-05-03 | 2009-10-27 | Alcatel-Lucent Usa Inc. | Method and apparatus for pre-provisioning networks to support fast restoration with minimum overbuild |
US7487501B2 (en) | 2004-08-30 | 2009-02-03 | International Business Machines Corporation | Distributed counter and centralized sensor in barrier wait synchronization |
US7539989B2 (en) | 2004-10-12 | 2009-05-26 | International Business Machines Corporation | Facilitating intra-node data transfer in collective communications |
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 |
KR100703406B1 (ko) | 2005-02-04 | 2007-04-03 | 삼성전자주식회사 | Dma 제어 장치 및 방법 |
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 |
EP1729213A1 (en) | 2005-05-30 | 2006-12-06 | Honda Research Institute Europe GmbH | Development of parallel/distributed applications |
US20060282838A1 (en) | 2005-06-08 | 2006-12-14 | Rinku Gupta | MPI-aware networking infrastructure |
US7496699B2 (en) | 2005-06-17 | 2009-02-24 | Level 5 Networks, Inc. | DMA descriptor queue read and cache write pointer arrangement |
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 |
US7457257B2 (en) | 2005-11-17 | 2008-11-25 | International Business Machines Corporation | Apparatus, system, and method for reliable, fast, and scalable multicast message delivery in service overlay networks |
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 | メモリ制御装置 |
US7793527B2 (en) | 2006-01-13 | 2010-09-14 | I-Tek Metal Mfg. Co., Ltd. | Reinforced handle assembly for lock |
US7974221B2 (en) | 2006-01-24 | 2011-07-05 | Brown Universtiy | Efficient content authentication in peer-to-peer networks |
US7835378B2 (en) | 2006-02-02 | 2010-11-16 | Cisco Technology, Inc. | Root node redundancy for multipoint-to-multipoint transport trees |
US7936681B2 (en) | 2006-03-06 | 2011-05-03 | Cisco Technology, Inc. | Cross-layer design techniques for interference-aware routing configuration in wireless mesh networks |
JP4546413B2 (ja) | 2006-03-17 | 2010-09-15 | 富士通株式会社 | 並列計算機のリダクション処理方法及び並列計算機 |
EP2008182B1 (en) | 2006-03-27 | 2010-05-12 | Coherent Logix Incorporated | Programming a multi-processor system |
US20070245122A1 (en) | 2006-04-13 | 2007-10-18 | Archer Charles J | Executing an Allgather Operation on a Parallel Computer |
US7697443B2 (en) | 2006-04-13 | 2010-04-13 | International Business Machines Corporation | Locating hardware faults in a parallel computer |
US20070242611A1 (en) | 2006-04-13 | 2007-10-18 | Archer Charles J | Computer Hardware Fault Diagnosis |
US7796527B2 (en) | 2006-04-13 | 2010-09-14 | International Business Machines Corporation | Computer hardware fault administration |
US8082289B2 (en) | 2006-06-13 | 2011-12-20 | Advanced Cluster Systems, Inc. | Cluster computing support for application programs |
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 |
US20080022079A1 (en) | 2006-07-24 | 2008-01-24 | Archer Charles J | Executing an allgather operation with an alltoallv operation in a parallel computer |
US20080127146A1 (en) | 2006-09-06 | 2008-05-29 | Shih-Wei Liao | System and method for generating object code for map-reduce idioms in multiprocessor systems |
US7853639B2 (en) | 2006-09-12 | 2010-12-14 | International Business Machines Corporation | Performing process migration with allreduce operations |
US7769843B2 (en) | 2006-09-22 | 2010-08-03 | Hy Performix, Inc. | Apparatus and method for capacity planning for data center server consolidation and workload reassignment |
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 |
US7970430B2 (en) * | 2006-12-21 | 2011-06-28 | Motorola Solutions, Inc. | Method and apparatus for setting and managing operational dynamics within cognitive radio networks |
US7441448B2 (en) * | 2007-01-24 | 2008-10-28 | United Technologies Corporation | Process for adapting measurement suite configuration for gas turbine performance diagnostics |
US8086906B2 (en) | 2007-02-15 | 2011-12-27 | Microsoft Corporation | Correlating hardware devices between local operating system and global management entity |
US20080250325A1 (en) | 2007-04-03 | 2008-10-09 | Feigenbaum Barry A | Integrated Development Environment with Object-Oriented GUI Rendering Feature |
US7752421B2 (en) | 2007-04-19 | 2010-07-06 | International Business Machines Corporation | Parallel-prefix broadcast for a parallel-prefix operation on a parallel computer |
US7600095B2 (en) | 2007-04-19 | 2009-10-06 | International Business Machines Corporation | Executing scatter operation to parallel computer nodes by repeatedly broadcasting content of send buffer partition corresponding to each node upon bitwise OR operation |
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 |
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 |
US7761687B2 (en) | 2007-06-26 | 2010-07-20 | International Business Machines Corporation | Ultrascalable petaflop parallel supercomputer |
US7886084B2 (en) | 2007-06-26 | 2011-02-08 | International Business Machines Corporation | Optimized collectives using a DMA on a parallel computer |
US7984448B2 (en) | 2007-06-26 | 2011-07-19 | International Business Machines Corporation | Mechanism to support generic collective communication across a variety of programming models |
US20090006663A1 (en) | 2007-06-27 | 2009-01-01 | Archer Charles J | Direct Memory Access ('DMA') Engine Assisted Local Reduction |
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 |
US7827385B2 (en) | 2007-08-02 | 2010-11-02 | International Business Machines Corporation | Effecting a broadcast with an allreduce operation on a parallel computer |
US20090040946A1 (en) | 2007-08-06 | 2009-02-12 | Archer Charles J | Executing an Allgather Operation on a Parallel Computer |
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 |
US7673011B2 (en) | 2007-08-10 | 2010-03-02 | International Business Machines Corporation | Configuring compute nodes of a parallel computer in an operational group into a plurality of independent non-overlapping collective networks |
US7734706B2 (en) | 2007-08-22 | 2010-06-08 | International Business Machines Corporation | Line-plane broadcasting in a data communications network of a parallel computer |
US7840779B2 (en) | 2007-08-22 | 2010-11-23 | International Business Machines Corporation | Line-plane broadcasting in a data communications network of a parallel computer |
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 |
US8621484B2 (en) | 2007-08-30 | 2013-12-31 | Intel Corporation | Handling potential deadlocks and correctness problems of reduce operations in parallel systems |
US8370844B2 (en) | 2007-09-12 | 2013-02-05 | International Business Machines Corporation | Mechanism for process migration on a massively parallel computer |
US8055879B2 (en) | 2007-12-13 | 2011-11-08 | International Business Machines Corporation | Tracking network contention |
US20090196361A1 (en) | 2008-01-31 | 2009-08-06 | The Hong Kong University Of Science And Technology | Non-binary source-to-channel symbol mappings with minimized distortion |
US7991857B2 (en) | 2008-03-24 | 2011-08-02 | International Business Machines Corporation | Broadcasting a message in a parallel computer |
US8122228B2 (en) | 2008-03-24 | 2012-02-21 | International Business Machines Corporation | Broadcasting collective operation contributions throughout a parallel computer |
US7917541B2 (en) | 2008-03-31 | 2011-03-29 | Microsoft Corporation | Collecting and aggregating data using distributed resources |
US8422402B2 (en) | 2008-04-01 | 2013-04-16 | International Business Machines Corporation | Broadcasting a message in 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 |
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 |
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 |
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 |
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 |
US7895260B2 (en) | 2008-07-28 | 2011-02-22 | International Business Machines Corporation | Processing data access requests among a plurality of compute nodes |
US7904420B2 (en) | 2008-08-26 | 2011-03-08 | Raytheon Company | Identification and verification of common cluster files residing on nodes in a cluster |
US8166146B2 (en) | 2008-09-29 | 2012-04-24 | International Business Machines Corporation | Providing improved message handling performance in computer systems utilizing shared network devices |
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 |
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 |
US8607004B2 (en) | 2009-11-13 | 2013-12-10 | 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 |
US8346935B2 (en) | 2010-01-15 | 2013-01-01 | Joyent, Inc. | Managing hardware resources by sending messages amongst servers in a data center |
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 |
US8332460B2 (en) | 2010-04-14 | 2012-12-11 | International Business Machines Corporation | Performing a local reduction operation 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 |
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 |
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 |
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 |
US8484658B2 (en) | 2010-12-03 | 2013-07-09 | International Business Machines Corporation | Data communications in a parallel active messaging interface of a parallel computer |
US20120331270A1 (en) | 2011-06-22 | 2012-12-27 | International Business Machines Corporation | Compressing Result Data For A Compute Node In A Parallel Computer |
US8893083B2 (en) | 2011-08-09 | 2014-11-18 | International Business Machines Coporation | Collective operation protocol selection in a parallel computer |
US8667501B2 (en) | 2011-08-10 | 2014-03-04 | International Business Machines Corporation | Performing a local barrier operation |
US8910178B2 (en) | 2011-08-10 | 2014-12-09 | International Business Machines Corporation | Performing a global barrier operation in a parallel computer |
US8706847B2 (en) | 2012-02-09 | 2014-04-22 | International Business Machines Corporation | Initiating a collective operation in a parallel computer |
US9495135B2 (en) | 2012-02-09 | 2016-11-15 | International Business Machines Corporation | Developing collective operations for a parallel computer |
-
2011
- 2011-08-09 US US13/206,116 patent/US8893083B2/en active Active
-
2012
- 2012-05-24 GB GB1209076.7A patent/GB2493590B/en active Active
- 2012-08-07 DE DE102012214007A patent/DE102012214007A1/de active Pending
- 2012-08-09 CN CN201210281401.XA patent/CN103150144B/zh active Active
- 2012-11-21 US US13/683,702 patent/US9047091B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1394314A (zh) * | 2000-11-02 | 2003-01-29 | 索尼计算机娱乐公司 | 并行运算设备、娱乐设备、处理方法、计算机程序和半导体设备 |
US20070245163A1 (en) * | 2006-03-03 | 2007-10-18 | Yung-Hsiang Lu | Power management in computer operating systems |
US20080184214A1 (en) * | 2007-01-30 | 2008-07-31 | Charles Jens Archer | Routing Performance Analysis and Optimization Within a Massively Parallel Computer |
US20090063815A1 (en) * | 2007-08-27 | 2009-03-05 | Arimilli Lakshminarayana B | System and Method for Providing Full Hardware Support of Collective Operations in a Multi-Tiered Full-Graph Interconnect Architecture |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115280789A (zh) * | 2020-03-17 | 2022-11-01 | 高通股份有限公司 | 用于多媒体会议的场景描述的信令 |
Also Published As
Publication number | Publication date |
---|---|
GB201209076D0 (en) | 2012-07-04 |
US20130086358A1 (en) | 2013-04-04 |
DE102012214007A1 (de) | 2013-02-14 |
US8893083B2 (en) | 2014-11-18 |
US20130042088A1 (en) | 2013-02-14 |
GB2493590B (en) | 2013-07-31 |
GB2493590A (en) | 2013-02-13 |
US9047091B2 (en) | 2015-06-02 |
CN103150144B (zh) | 2016-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103150144B (zh) | 用于并行计算机中的集体操作协议选择的方法和系统 | |
US8893150B2 (en) | Runtime optimization of an application executing on a parallel computer | |
CN103309652B (zh) | 用于在并行计算机中开始集合操作的方法和装置 | |
US7653716B2 (en) | Determining a bisection bandwidth for a multi-node data communications network | |
CN102859490B (zh) | 为层次化分布式处理系统编译软件的方法和装置 | |
CN103246508B (zh) | 用于开发并行计算机的集合操作的方法和装置 | |
US9336053B2 (en) | Constructing a logical tree topology in a parallel computer | |
US9250949B2 (en) | Establishing a group of endpoints to support collective operations without specifying unique identifiers for any endpoints | |
US9229780B2 (en) | Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system | |
US9246861B2 (en) | Locality mapping in a distributed processing system | |
US9195517B2 (en) | Determining collective barrier operation skew in a parallel computer | |
Grozea et al. | FPGA vs. multi-core CPUs vs. GPUs: hands-on experience with a sorting application | |
CN103246507B (zh) | 用于开发在并行计算机中执行的集合操作的方法和装置 | |
US8788649B2 (en) | Constructing a logical, regular axis topology from an irregular topology | |
CN103324464B (zh) | 在并行计算机的计算节点处处理非预期消息的方法和装置 | |
Cao et al. | Speeding up exact algorithms for maximizing lifetime of WSNs using multiple cores | |
US10296395B2 (en) | Performing a rooted-v collective operation by an operational group of compute nodes in a parallel computer | |
US9189288B2 (en) | Executing a collective operation algorithm 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 |