CN100570594C - 在并行计算机上执行全收集操作的方法和系统 - Google Patents

在并行计算机上执行全收集操作的方法和系统 Download PDF

Info

Publication number
CN100570594C
CN100570594C CNB2007100970135A CN200710097013A CN100570594C CN 100570594 C CN100570594 C CN 100570594C CN B2007100970135 A CNB2007100970135 A CN B2007100970135A CN 200710097013 A CN200710097013 A CN 200710097013A CN 100570594 C CN100570594 C CN 100570594C
Authority
CN
China
Prior art keywords
sends
buffer zone
computing node
transmission
alltoallv
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.)
Expired - Fee Related
Application number
CNB2007100970135A
Other languages
English (en)
Other versions
CN101114273A (zh
Inventor
约瑟夫·D.·拉特曼
查尔斯·J.·阿奇
约瑟·E.·莫雷拉
菲利普·黑德尔博格
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101114273A publication Critical patent/CN101114273A/zh
Application granted granted Critical
Publication of CN100570594C publication Critical patent/CN100570594C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

在并行计算机上执行全收集操作,包括利用发送位移的列表执行alltoallv操作,其中每个发送位移是一个发送缓冲区分段指针,每个发送位移指向发送缓冲区的相同分段,并行计算机包括多个计算节点,每个计算节点包括一个发送缓冲区,计算节点被组织成用于集合操作的计算节点的至少一个工作组,工作组中的每个计算节点被分配唯一的序号,每个发送缓冲区按照所述序号被分割。

Description

在并行计算机上执行全收集操作的方法和系统
技术领域
本发明涉及数据处理领域,更具体地说,本发明涉及在并行计算机上执行全收集操作(allgather operation)的方法和产品。
背景技术
1948年EDVAC计算机系统的出现通常被称为计算机时代的开始。从那以后,计算机系统已演化成极其复杂的设备。目前的计算机比早期的系统,比如EDVAC复杂得多。计算机系统一般包括硬件和软件组件、应用程序、操作系统、处理器、总线、存储器、输入/输出装置等的组合。随着半导体处理和计算机体系结构方面的进展使计算机的性能越来越高,更复杂的计算机软件发展成利用硬件的更高性能,形成今天的比仅仅几年前的计算机系统强大得多的计算机系统。
并行计算是已经历发展的计算机技术的一个领域。并行计算是相同任务(被分解和特别修改)在多个处理器上的同时执行,以便更快得到结果。并行计算以解决一个问题的处理通常可被分成较小的任务的事实为基础,在进行一定协调的情况下,所述较小的任务可被同时执行。
并行计算机执行并行算法。并行算法可被分解,以便同时在许多不同的处理装置上执行一部分,最后被重新合并起来,从而获得数据处理结果。一些算法易于分成多个部分。通过把从1到100000的数字的一个子集分配给每个可用处理器,随后把明确结果的列表合并起来,可完成分解检查从1到100000的全部数字,以了解哪些数字是质数的作业。在本说明书中,执行并行程序的单一部分的多处理装置被称为‘计算节点’。并行计算机由计算节点以及其它处理节点,例如包括输入/输出(‘I/O’)节点和服务节点构成。
并行算法颇有价值,因为由于现代处理器工作的方式的缘故,与通过串行(非并行)算法执行某些种类的大型计算任务相比,通过并行算法执行所述某些种类的大型计算任务会更快。与利用具有相同吞吐量的许多慢速处理器构成计算机相比,利用单个快速处理器构成计算机要困难得多。另外对于串行处理器的可能速度,存在一定的理论极限。另一方面,每个并行算法具有一个串行部分,从而并行算法具有饱和点。在所述饱和点之后增加更多的处理器不会产生更高的吞吐量,只会增大开销和成本。
并行算法还被用来优化并行计算机的节点之间的数据通信需要的一个以上的资源。并行处理器的通信方式有两种,共用存储器或者消息传递。共用存储器处理需要对数据的附加锁定,强加附加处理器和总线周期的开销,另外还使算法的某一部分串行化。
消息传递处理使用高速数据通信网络和消息缓冲区,但是这种通信在数据通信网络上增加传送开销,以及消息缓冲区需要的附加存储器和节点间的数据通信中的等待时间。并行计算机的设计使用专门设计的数据通信链路,以致通信开销将较小,但是决定通信量的是并行算法。
许多数据通信网络体系结构被用于并行计算机中的节点之间的消息传递。计算节点可被组织成‘环形’(torus)网或‘网格’(mesh)网。另外,计算节点可被组织成树形网。环形网利用回绕链路把节点连接成三维网格。每个节点通过该环形网与其六个相邻节点连接,每个节点由其在网格中的x,y,z坐标寻址。在树形网中,节点一般被连接成二叉树:每个节点具有一个父节点,和两个子节点(不过一些节点可能没有子节点或者只具有一个子节点,取决于硬件配置)。在使用环形网和树形网的计算机中,一般利用独立的路由电路,独立的物理链路,和独立的消息缓冲区相互独立地实现这两种网络。
环形网适合于点对点操作,但是树形网在点对点通信方面效率一般不高。但是,树形网为其中所有计算节点同时参与的一些集合操作,消息传递操作,比如全收集操作提供高带宽和低的等待时间。全收集操作是一种关于计算节点的工作组的集合操作,该操作从工作组中的所有计算节点收集数据,按照等级次序把收集的数据串联到存储缓冲区中,并把存储缓冲区的整个内容提供给工作组中的所有计算节点。由于成千上万的节点可能参与并行计算机上的集合操作,因此执行并行计算机上的全收集操作始终是一个挑战。现有的执行全收集操作的一种典型算法是工作组中的每个计算节点向工作组中的所有计算节点广播它的数据贡献。如果工作组较大,并且这样的工作组可能包含成千上万个计算节点的话,那么这种算法的数据通信成本是相当大的。
发明内容
公开了在并行计算机上执行全收集操作的方法和计算机程序产品,包括利用发送位移(send displacement)的列表执行alltoallv操作,其中每个发送位移是一个发送缓冲区分段指针,每个发送位移指向发送缓冲区的相同分段,并行计算机包括多个计算节点,每个计算节点包括一个发送缓冲区,计算节点被组织成用于集合操作的计算节点的至少一个工作组(operational group),工作组中的每个计算节点被分配唯一的序号(rank),每个发送缓冲区按照所述序号被分割。
根据如附图中图解说明的本发明的例证实施例的下述更详细说明,本发明的前述和其它目的、特征和优点将是明显的,附图中,相同的附图标记一般表示本发明的例证实施例的相同部分。
附图说明
图1图解说明执行根据本发明实施例的并行计算机上的全收集操作的计算机的例证系统。
图2是可用于执行根据本发明实施例的并行计算机上的全收集操作的例证计算节点的方框图。
图3A图像说明可用在执行根据本发明实施例的并行计算机上的全收集操作的系统中的例证点对点适配器。
图3B图解说明可用在执行根据本发明实施例的并行计算机上的全收集操作的系统中的例证集合操作适配器。
图4图解说明为点对点操作优化的例证数据通信网络。
图5图解说明为集合操作优化的例证数据通信网络。
图6是图解说明执行根据本发明实施例的并行计算机上的全收集操作的例证方法的流程图。
图7A图解说明如MPI标准中定义的全收集操作的函数。
图7B图解说明如MPI标准中定义的alltoallv操作的函数。
图7C是根据本发明的实施例,借助alltoallv执行的例证全收集操作的方框图。
图7D是根据本发明的实施例,借助alltoallv执行的另一例证全收集操作的方框图。
图8是图解说明根据本发明的实施例,在并行计算机的一个计算节点上的例证alltoallv操作的执行的方框图。
图9是图解说明根据本发明的实施例,在并行计算机中执行全收集操作的另一例证方法的流程图。
图10是图9的alltoallv可在其上实现的并行计算机的例证数据通信网络的绘线图。
具体实施方式
下面从图1开始,参考附图说明根据本发明的实施例的在并行计算机上执行全收集操作的例证方法和计算机程序产品。图1图解说明执行根据本发明实施例的并行计算机上的全收集操作的例证系统。图1的系统包括并行计算机(100),呈数据存储装置(118)形式的计算机用非易失性存储器,呈打印机(12)形式的计算机用输出装置,和呈计算机终端(122)形式的计算机用输入/输出装置。
图1的例子中的并行计算机(100)还包括多个计算节点(102)。每个计算节点是一个自动计算装置,该自动计算装置由一个或多个计算机处理器,它自己的计算机存储器,以及它自己的输入/输出功能构成。计算节点(102)由几个独立的数据通信网络耦接以便进行数据通信,所述数据通信网络包括高速以太网(174),联合测试行动小组(‘JTAG’)网络(104),为集合操作优化的树形网(106),和为点对点操作优化的环形网(108)。树形网(106)是包括与计算节点连接的数据通信链路,以便把计算节点组织成树形结构的数据通信网络。用计算节点(102)之间的数据通信链路实现每个数据通信网络。数据通信链路为并行计算机的计算节点间的并行操作提供数据通信。
并行计算机的计算节点(102)被组织成用于并行计算机(100)上的集合并行操作的至少一个计算节点工作组(132)。一个计算节点工作组是其上执行集合并行操作的一组计算节点。利用工作组的计算节点之间的数据通信实现集合操作。集合操作(collective operation)是涉及某一工作组的全部计算节点的那些功能(function)。集合操作是由一个计算节点工作组中的全部计算节点同时执行的,即,在几乎相同的时间执行的操作,消息传递计算机程序指令。这样的工作组可包括并行计算机(100)中的全部计算节点,或者全部计算节点的子集。通常围绕点对点操作建立集合操作。集合操作要求工作组内的全部计算节点上的进程用相配的变元调用相同的集合操作。‘广播’是在工作组的计算节点之间移动数据的集合操作的一个例子。‘归约(reduce)’操作是对分布在工作组的计算节点之间的数据执行算术函数或者逻辑函数的集合操作的例子。工作组可被实现成例如MPI‘通信子’(communicator)。
‘MPI’指的是‘消息传递接口’,一种现有的并行通信库,一种用于并行计算机上的数据通信的计算机程序指令的模块。可被改进以便执行根据本发明实施例的并行计算机上的全收集操作的现有并行通信库的例子包括MPI和‘并行虚拟机’(‘PVM’)库。PVM由田纳西州立大学、橡树岭国家实验室和埃默里(Emory)大学开发。MPI由PMI论坛(代表来自于定义和维护MPI标准的许多组织的一个开放团体)发布。目前MPI是在分布式存储器并行计算机上运行并行程序的计算节点之间的事实通信标准。本说明书有时使用MPI术语,以便于说明,不过这样的MPI的使用不是本发明的要求或者限制。
工作组的每个计算节点被分配一个称为‘序号’的单元标识符(图1中未示出)。计算节点的序号唯一地识别该计算节点在数据通信网络中的位置,以供点对点操作和集合操作之用。序号一般被指派为从序号0、序号1、序号2等开始的整数。图1的例子中的每个计算节点(102)包括一个发送缓冲区。每个发送缓冲区是按照工作组中的计算节点的序号分割的计算机存储器的至少一个区域。
许多集合操作是四种基本操作的变异或者组合:广播、收集、分散和归约。在广播操作中,所有进程指定相同的根进程,其缓冲区内容将被发送。除根进程之外的进程指定接收缓冲区。在该操作之后,所有缓冲区包含来自根进程的消息。类似于广播操作,分散操作也是一种一对多集合操作。所有进程指定相同的接收计数。发送变元只对根进程有意义,根进程的缓冲区实际包含指定数据类型的sendcount*N个元素,其中N是指定一组计算节点中的进程的数目。发送缓冲区被均分,并被分散给所有进程(包括它自己)。每个计算节点被分配一个称为‘序号’的连续标识符。在该操作之后,根进程已按照递增的序号顺序,把sendcount数据元素发送给每个进程。序号0从发送缓冲区接收第一sendcount数据元素。序号1从发送缓冲区接收第二sendcount数据元素,等等。
收集操作是多对一集合操作,它与分散操作的描述完全相反。即,收集是其中把数据类型的元素从排序的计算节点收集到根节点中的接收缓冲区中的多对一集合操作。
归约操作也是一个多对一集合操作,它包括对两个数据元素执行的算术或逻辑函数。所有进程指定相同的‘计数’,以及相同的算术或逻辑函数。在归约之后,所有进程都已把计数数据元素从计算节点发送缓冲区发给根进程。在归约操作中,借助算术或逻辑运算成对地组合来自对应的发送缓冲区单元的数据元素,从而在根进程的接收缓冲区中产生单一的对应元素。在运行时可定义专用归约操作。并行通信库可支持预定的操作。例如,MPI提供下述预定的归约操作:
MPI_MAX    最大值
MPI_MIN    最小值
MPI_SUM    求和
MPI_PROD   乘积
MPI_LAND   逻辑与
MPI_BAND   按位与
MPI_LOR    逻辑或
MPI_BOR    按位或
MPI_LXOR   逻辑异或
MPI_BXOR   按位异或
图1的系统一般通过利用发送位移的列表执行alltoallv操作,执行根据本发明实施例的并行计算机上的全收集操作,每个发送位移被实现成发送缓冲区分段指针,每个发送位移指向发送缓冲区的相同分段。全收集操作和alltoallv操作的函数在MPI论坛发布的MPI标准中定义。在MPI标准中没有定义用于执行集合操作的算法,包括全归约操作和全收集操作的函数。
全收集操作是关于按照序号顺序,把数据从所有计算节点的发送缓冲区收集到所有计算节点的接收缓冲区中的一个计算节点工作组的集合操作。每个计算节点把其发送缓冲区的内容传送给工作组的所有节点,包括它自己。当收到该数据时,每个计算节点按照序号顺序把数据放入其接收缓冲区中。当全收集操作结束时,每个计算节点的接收缓冲区包含按照从其发出和接收数据的计算节点的序号,顺序保存在接收缓冲区中的所有传送数据。全收集的效果是工作组中的所有计算节点中的接收缓冲区包含相同的数据。下面更详细讨论的图7图解说明如在MPI标准中定义的全收集操作的函数。
alltoallv操作是关于把数据从所有计算节点的发送缓冲区的排序分段按照序号次序发送到所有计算节点中的接收缓冲区中的一个计算节点工作组的集合操作。发送缓冲区的每个排序分段的大小可变化。每个计算节点只把其发送缓冲区的每个排序分段的内容传送给对应排序的计算节点。排序分段0的内容到达序号0的计算节点。排序分段1的内容到达序号1的计算节点,依次类推。发送缓冲区的每个排序分段的大小可变化。当收到数据时,每个计算节点按照发送计算节点的序号,按序号顺序把所述数据放入其接收缓冲区的排序分段中。来自序号0的计算节点的数据进入排序分段0中。来自序号1的计算节点的数据进入排序分段1中,依次类推。当alltoallv结束时,每个计算节点的接收缓冲区按照序号顺序包含来自工作组中的全部计算节点的发送缓冲区的对应排序分段的所有数据。alltoallv的效果在于工作组的所有计算节点中的全部接收缓冲区包含不同的数据,从发送缓冲区发送的数据的矩阵求逆。下面详细讨论的图7B图解说明如在MPI标准中定义的alltoallv操作的函数。
除了计算节点之外,计算机(100)包括通过数据通信网络之一(174)与计算节点(102)耦接的输入/输出(‘I/O’)节点(110、114)。I/O节点(110、114)提供计算节点(102)和I/O装置(118、120、122)之间的I/O服务。I/O节点(110、114)通过局域网(‘LAN’)(130)被连接以便与I/O装置(118、120、122)数据通信。计算机(100)还包括通过网络之一(104)与计算节点耦接的服务节点(116)。服务节点(116)提供多个计算节点所共有的服务,把程序装入计算节点中,在计算节点上开始程序执行,取回计算机节点上的程序运算的结果等等。服务节点(116)运行服务应用程序(124),并通过在计算机终端(122)上运行的服务应用界面(126)与用户(128)通信。
构成图1中图解说明的例证系统的节点、网络和I/O装置的排列只是用于说明目的,而不是对本发明的限制。能够执行按照本发明实施例的并行计算机的全收集操作的数据处理系统可包括本领域的技术人员想到的图1中未示出的其它节点,网络,装置和体系结构。图1的例子中的并行计算机(100)包括16个计算节点(102);能够执行按照本发明实施例的全收集操作的并行计算机有时包括成千上万个计算节点。除了以太网和JTAG之外,这种数据处理系统中的网络可支持许多数据通信协议,例如包括TCP(传输控制协议)、IP(网际协议)和本领域的技术人员想到的其它协议。除了图1中图解说明的那些硬件平台之外,可在各种硬件平台上实现本发明的各个实施例。
执行根据本发明实施例的全收集操作一般在包括多个计算节点的并行计算机上实现。事实上,这样的并行计算机可包括成千上万个这样的计算节点。每个计算节点本身又是一种由一个或多个计算机处理器、它自己的计算机存储器和它自己的输入/输出适配器构成的计算机。于是为了进一步说明,图2是可用在能够执行根据本发明实施例的全收集操作的并行计算机中的例证计算节点的方框图。图2的计算节点(152)包括至少一个计算机处理器(164)以及随机存取存储器(‘RAM’)(156)。处理器(164)通过高速存储总线(154)与RAM(156)连接,并通过总线适配器(194)和扩展总线(168)与计算节点的其它组件连接。
保存在RAM(156)中的是应用程序(158),一个利用并行算法执行并行的用户级数据处理的计算机程序指令的模块。另外保存在RAM(156)中的还有并行通信库(160),一个执行计算节点间的并行通信,包括点对点操作以及集合操作的计算机程序指令库。应用程序(158)通过调用并行通信库(160)中的软件例程,执行点对点和集合并行操作。通过利用传统的编程语言,比如C编程语言,以及利用传统的编程方法来编写在两个独立的数据通信网络上的节点之间发送和接收数据的并行通信例程,可从零开始开发并行通信例程库,供执行根据本发明实施例的并行计算机上的全收集操作之用。另一方面,可以使用现有库。可被改进以便执行根据本发明实施例的并行计算机上的全收集操作的现有并行通信库的例子包括‘消息传递接口’(‘MPI’)库和‘并行虚拟机’(‘PVM’)库。
不论它们是如何产生的,并行通信库(160)的并行通信例程被改进,以便通过利用发送位移的列表执行alltoallv操作,执行根据本发明实施例的全收集操作,其中每个发送位移被实现成一个发送缓冲区分段指针,每个发送位移指针指向发送缓冲区的相同分段。图2的例证RAM配置(156)包括发送位移的列表(196),以及发送缓冲区(197)和接收缓冲区(198)。发送位移被实现成发送缓冲区分段指针的数组,其中该数组的每个元素指向发送缓冲区的一个排序分段。在发送缓冲区的分段按照计算节点工作组中的计算节点的序号被排序的意义上,发送缓冲区的分段是‘有序的’。从而,这种数组中的第一发送位移指向发送缓冲区的第一排序分段,这种数组中的第二发送位移指向发送缓冲区的第二排序分段,这种数组中的第三发送位移指向发送缓冲区中的第三排序分段,依次类推。排序分段可位于发送缓冲区中的任意地方。不要求排序分段是连续的或者具有相同的大小。另外保存在RAM(156)中的还有操作系统(162),一个供应用程序访问计算节点的其它资源的计算机程序指令和例程的模块。并行计算机的计算节点中的应用程序和并行通信库一般运行没有用户登录和安全性问题的单一执行线程,因为该线程有权完成对节点的所有资源的访问。于是,与同时运行多个线程的串行计算机上的操作系统相比,将由并行计算机中的计算节点上的操作系统执行的任务的数量较少并且复杂性较低。另外,图2的计算节点(152)上没有任何视频I/O,这是降低对操作系统的要求的另一因素。于是,与通用计算机的操作系统相比,操作系统可以相当轻便,可以说是通用计算机的操作系统的一个缩减版本,或者为特定并行计算机上的操作专门开发的操作系统。可被有效地改进、简化,以供计算节点之用的操作系统包括UNIXTM,LinuxTM,Microsoft XPTM,AIXTM,IBM的i5/OSTM,以及本领域的技术人员想到的其它操作系统。
图2的例证计算节点(152)包括用于实现与并行计算机的其它节点的数据通信的几个通信适配器(172、176、180、188)。通过RS-232连接,通过诸如USB之类的外部总线,通过诸如IP网络之类的数据通信网络,以及按照本领域的技术人员想到的其它方法,能够连续进行这样的数据通信。通信适配器实现硬件层次的数据通信,通过硬件层次的数据通信,一个计算机直接地或者经由网络向另一计算机发送数据通信。可用在执行根据本发明实施例的全收集操作的系统中的通信适配器的例子包括有线通信用调制解调器,有线网络通信用以太网(IEEE 802.3)适配器,和无线网络通信用802.11b适配器。
图2的例子中的数据通信适配器包括一个使数据通信用例证计算节点(152)与千兆位以太网(174)耦接的千兆位以太网适配器(172)。千兆位以太网是一种在IEEE 802.3标准中定义的提供1千兆位/秒(1千兆位)的传输速率的网络传输标准。千兆位以太网是通过多模光缆、单模光缆或者无屏蔽双绞线工作的以太网的变形。
图2的例子中的数据通信适配器包括一个使数据通信用例证计算节点(152)与JTAG主电路(178)耦接的JTAG从属电路(176)。JTAG是用于关于测试访问端口的IEEE 1149.1标准“Standard Test AccessPort and Boundary-Scan Architecture”的常见名称,所述测试访问端口用于通过使用边界扫描,测试印刷电路板。JTAG被如此广泛地使用,以致目前边界扫描或多或少地与JTAG同义。JTAG不仅用于印刷电路板,而且还用于进行集成电路的边界扫描,还可用作调试嵌入系统,在系统中设置方便的‘后门’的机制。图2的例证计算节点可以是所有这三种:它一般包括安装在印刷电路板上的一个或多个集成电路,并且可被实现成具有它自己的处理器、它自己的存储器和它自己的I/O能力的嵌入系统。通过JTAG从属电路(176)的JTAG边界扫描能够有效地配置供执行根据本发明实施例的全收集操作之用的计算节点(152)中的处理器寄存器和存储器。
图2的例子中的数据通信适配器包括一个使数据通信用例证计算节点(152)与最适合于点对点消息传递操作的网络(108),例如,配置成三维环形网中网格网的网络耦接的点对点适配器(180)。点对点适配器(180)通过六个双向链路:+x(181)、-x(182)、+y(183)、-y(184)、+z(185)和-z(186),提供三个通信轴x、y和z上的六个方向的数据通信。
图2的例子中的数据通信适配器包括一个使数据通信周例证计算节点(152)与最适合于集合消息传递操作的网络(106),例如配置成二叉树的网络耦接的集合操作适配器(188)。集合操作适配器(188)通过三个双向链路:到子节点的两个链路(190)和到父节点的一个链路(192)提供数据通信。
例证的计算节点(152)包括两个算术逻辑单元(‘ALU’)。ALU(166)是处理器(164)的一个组件,一个独立的ALU(170)专供用于执行归约操作的算术函数和逻辑函数的集合操作适配器(188)使用。并行通信库(160)中的归约例程的计算机程序指令可把关于算术或逻辑函数的指令锁存到指令寄存器(169)中。例如,当归约操作的算术或逻辑函数是‘求和’或者‘逻辑或’时,集合操作适配器(188)可通过利用处理器(164)中的ALU(166),或者通过利用专用ALU(170)(一般要快得多)执行算术或逻辑运算。
为了进一步说明,图3A图解说明可用在执行根据本发明实施例的全收集操作的系统中的例证点对点适配器(180)。点对点适配器(180)用来供为点对点操作而优化的数据通信网络(一种以三维环形网或网格网的形式组织计算节点的网络)之用。图3A的例子中的点对点适配器(180)通过四个单向数据通信链路,往来于-x方向上的下一节点的通信链路(182)和往来于+x方向上的下一节点的通信链路(181)提供沿x轴的数据通信。点对点适配器(180)还通过四个单向数据通信链路,往来于-y方向上的下一节点的通信链路(184)和往来于+y方向上的下一节点的通信链路(183)提供沿y轴的数据通信。点对点适配器(180)还通过四个单向数据通信链路,往来于-z方向上的下一节点的通信链路(186)和往来于+z方向上的下一节点的通信链路(185)提供沿z轴的数据通信。
为了进一步说明,图3B图解说明可用在执行根据本发明实施例的全收集操作的系统中的例证集合操作适配器(188)。集合操作适配器(188)用来供为集合操作而优化的网络(一种以二叉树形式组织并行计算机的计算节点的网络)之用。图3B的例子中的集合操作适配器(188)通过四个单向数据通信链路(190),提供往来于两个子节点(190)的数据通信。集合操作适配器(188)还通过两个单向数据通信链路(192)提供往来于父节点的数据通信。
为了进一步说明,图4图解说明为点对点操作而优化的例证数据通信网络(106)。在图4的例子中,点代表并行计算机的计算节点(102),点之间的虚线代表计算节点之间的数据通信链路(103)。利用和图3中图解说明的类似的点对点数据通信适配器,并利用三个轴x、y和z上往来于六个方向的数据通信链路+x(181)、-x(182)、+y(183)、-y(184)、+z(185)和-z(186)实现所述数据通信链路。所述链路和计算节点被为点对点操作而优化的数据通信网络组织成三维网格(105),所述三维网格(105)回绕从而形成环形(107)。该环形中的每个计算节点在该环形中具有由一组x、y、z坐标唯一指定的位置。每个计算节点被分配一个称为‘序号’的单元标识符(图4中未示出)。计算节点的序号唯一地识别该计算节点,并且直接映射到该计算节点在环形网中的x、y、z坐标,供环形网以及树形网中的点对点操作和集合操作之用。序号一般被分配成整数0、1、2等等。为了说明的清楚起见,只用27个计算节点图解说明了图4的数据通信网络,但是读者会认识到为供执行根据本发明实施例的全收集操作之用的点对点操作而优化的数据通信网络可能只包含几个计算节点,或者可能包含成千上万上计算节点。
为了进一步说明,图5图解说明通过把计算节点组织成树形,为集合操作而优化的例证数据通信网络(108)。图5的例证数据通信网络包括与计算节点连接,从而把计算节点组织成树形的数据通信链路。在图5的例子中,点代表并行计算机的计算节点(102),点之间的虚线(103)代表计算节点之间的数据通信链路。数据通信链路用与在图3B中图解说明的类似的集合操作数据通信适配器来实现,同时每个节点一般提供往来于两个子节点的数据通信,和往来于父节点的数据通信,但存在一些例外。二叉树中的节点可被表征成根节点(202)、支节点(204)和叶节点(206)。根节点(202)具有两个子节点,而是没有父节点。叶节点(206)均具有一个父节点,但是叶节点没有子节点。支节点(204)都既具有一个父节点,又具有两个子节点。链路和计算节点从而由为集合操作而优化的这种数据通信网络组织成二叉树(108)。为了说明的清楚起见,只用31个计算节点图解说明了图5的数据通信网络,但是读者会认识到为供执行根据本发明实施例的全收集操作之用的集合操作而优化的数据通信网络可能只包含几个计算节点,或者可能包含成千上万上计算节点。
在图5的例子中,每个计算节点被分配一个序号(250),一个唯一地识别供树形网中的点对点操作和集合操作之用的每个计算节点在树形网中的位置的单元标识符。如上所述,虽然这两个网络一般独立工作,每个计算节点的序号也映射到计算节点在环形网中的x、y、z坐标。本例中的序号被分配成整数,首先0被分配给根节点(202),1被分配给树形结构的第二层中的第一个节点,2被分配给树形结构的第二层中的第二个节点,3被分配给树形结构的第三层中的第一个节点,4被分配给树形结构的第三层中的第二个节点,依次类推。为了便于图解说明,这里只表示了树形结构的前三层的序号,但是所有计算节点都被分配一个唯一的序号。
为了进一步说明,图6是图解说明根据本发明的实施例,在并行计算机中执行全收集操作的例证方法的流程图。在和上面参考图1图解说明的并行计算机类似的并行计算机(100)上执行图6的方法。这样的并行计算机包括多个计算节点,每个计算节点包括一个发送缓冲区,计算节点被组织成用于集合操作的至少一个计算节点工作组,该工作组中的每个计算节点被分配一个唯一序号,每个发送缓冲区按照所述序号被分割。通过利用发送位移的列表执行(304)alltoallv操作(其中每个发送位移被实现成一个发送缓冲区分段指针,每个发送位移指向发送缓冲区的相同分段),实现图6的方法。
利用发送位移的列表执行(304)alltoallv操作(其中每个发送位移可被实现成一个发送缓冲区分段指针,每个发送位移指向发送缓冲区的相同分段)可如下面的伪代码段中举例说明的那样实现。
Datatype sendtype=char;
Datatype recvtype=char;
char sendbuffer[1000000];
intallgather(  void*sendbufffer,int sendcount,Datatype sendtype,
            void*recvbut,int recvcount,Datatype recvtype,
            OpGroup opGroup ID)
{
    int sendcounts[3]={sendcount,sendcount,sendcount};
    int senddisplacements[3]={sendbuffer,sendbuffer,sendbuffer};
    /*initialize remaining alltoallv() parameters*/
    int alltoallv(void*sendbuffer,int*sendcounts,
                  int*senddisplacements,Datatype sendtype,
                  void*recvbufffer,int*recvcounts,
                  int*recvdisplacements,Datatype recvtype,
                  OpGroup op Group ID);
}
在该例程代码段是代码格式方面的解释,而不是实际的计算机程序列表的意义上,该例证代码段是‘伪代码’。代码格式与C编程语言的代码格式类似。在本例中,‘sendbuffer’是1000000字符的数组。如果一个字符的大小为两个字节,那么sendbuffer代表2兆字节的发送缓冲区。
‘Sendtype’声明将保存在发送缓冲区中并从发送缓冲区传送的数据类型,在本例中为字符。‘Sendcounts’是三个整数发送计数的数组,每个数组元素被初始化成‘sendcount’的全收集参数值。每个发送计数表示在发送缓冲区的每个排序分段中的许多sendtype的数据元素,即字符。发送缓冲区的第j个排序分段的大小为sendcount[j]·sizeof(char)。
‘Senddisplacements’是三个发送位移,发送缓冲区分段指针的数组。senddisplacements[]是包含发送缓冲区的对应排序分段中的第一地址的指针。本例中的senddisplacements数组被初始化成:
int senddisplacements[3]={sendbuffer,sendbuffer,sendbuffer};
而不是被初始化成:
for(i=0,i=2,i++)senddisplacements[i]=&sendbuffer[i];
同时senddisplacements数组的每个元素指向发送缓冲区的第一分段。alltoallv()迭代地步进通过发送缓冲区的排序分段,由senddisplacements数组中的指针值引导到排序分段,并依次把每个排序分段的内容发送给工作组中的每个计算节点。这种情况下,当alltoallv()在senddisplacements数组中迭代时,alltoallv()将在每次迭代时继续发送来自发送缓冲区的相同排序分段的数据。即,在本例中,alltoallv()将迭代把数据从发送缓冲区的第一排序分段发送给工作组的计算节点。
为了进一步说明,图7A陈述了现有全收集操作(320)的方框图。通过从排序为0-5的6个计算节点的工作组中的计算节点的发送缓冲区(312)传送数据,执行图7A的全收集操作。每个发送缓冲区被分成6个排序的分段(314)0-5。在图7A的例子中,只从发送缓冲区的第一分段传送数据。每个数据元素被传送给该工作组中的每个计算节点。每个传送的数据元素被该工作组中的每个计算节点接收,并按照传送数据的计算节点的序号被放入接收缓冲区(309)中的适当位置。A0(来自序号为0的计算节点的数据)进入每个计算节点的接收缓冲区的第一位置,即0位置。B0(来自序号为1的计算节点的数据)进入每个计算节点的接收缓冲区的第二位置,即1位置。依次类推。
为了进一步说明,图7B陈述了现有的alltoallv操作(322)的方框图。通过从排序为0-5的6个计算节点的工作组中的计算节点的发送缓冲区(312)传送数据,执行图7B的alltoallv操作。alltoallv操作按照序号顺序把数据从所有计算节点的发送缓冲区的排序分段发送到所有计算节点中的接收缓冲区中。发送缓冲区的每个排序分段的大小可变化。每个计算节点只把其发送缓冲区的每个排序分段的内容传送给对应排序的计算节点。排序分段0的内容到达序号为0的计算节点。排序分段1的内容到达序号为1的计算节点,依次类推。发送缓冲区的每个排序分段的大小可变化。当收到数据时,每个计算节点按照发送计算节点的序号,按序号顺序把数据放入其接收缓冲区的排序分段中。来自序号为0的计算节点的数据进入排序分段0。来自序号为1的计算节点的数据进入排序分段1,依次类推。更具体地说,在本例中:
A0(来自序号为0的计算节点的发送缓冲区的排序分段0的数据)被传送给序号为0的计算节点。A0(从序号为0的计算节点接收的数据)被保存在序号为0的计算节点的接收缓冲区的排序分段0中。
A1(来自序号为0的计算节点的发送缓冲区的排序分段1的数据)被传送给序号为1的计算节点。A1(从序号为0的计算节点接收的数据)被保存在序号为1的计算节点的接收缓冲区的排序分段0中。
A2(来自序号为0的计算节点的发送缓冲区的排序分段2的数据)被传送给序号为2的计算节点。A2(从序号为0的计算节点接收的数据)被保存在序号为2的计算节点的接收缓冲区的排序分段0中,依次类推。类似地:
B0(来自序号为1的计算节点的发送缓冲区的排序分段0的数据)被传送给序号为0的计算节点。B0(从序号为1的计算节点接收的数据)被保存在序号为0的计算节点的接收缓冲区的排序分段1中。
B1(来自序号为1的计算节点的发送缓冲区的排序分段1的数据)被传送给序号为1的计算节点。B1(从序号为1的计算节点接收的数据)被保存在序号为1的计算节点的接收缓冲区的排序分段1中。
B2(来自序号为1的计算节点的发送缓冲区的排序分段2的数据)被传送给序号为2的计算节点。B2(从序号为1的计算节点接收的数据)被保存在序号为2的计算节点的接收缓冲区的排序分段1中。
对于工作组中的所有计算节点的所有发送缓冲区的全部排序分段中的所有数据,依次类推。当alltoallv操作(322)结束时,每个计算节点的接收缓冲区按照序号顺序包含来自工作组中的所有计算节点的发送缓冲区的对应排序分段的全部数据。alltoallv操作(322)的效果在于工作组的所有计算节点中的所有接收缓冲区包含不同的数据,从发送缓冲区发送的数据的矩阵求逆。
为了进一步说明,图7C表示根据本发明的实施例,借助alltoallv执行的例证全收集操作(324)的方框图。利用发送位移的列表执行图7C的alltoallv操作,其中每个发送位移是一个发送缓冲区分段指针,每个发送位移指向发送缓冲区的相同分段。在本例中,列表中的所有发送位移指向排序的发送缓冲区分段0(316)。于是,alltoallv操作迭代地遍历该列表,试图发出发送缓冲区的不同排序分段的一系列传输,而不是反复发出发送缓冲区的相同分段的内容。通过比较图7C和7A可看出,效果与全收集的效果完全相同。缓冲区分段0的内容被alltoallv全收集到工作组的所有计算节点的所有接收缓冲区(309)中。
为了进一步说明,图7D表示根据本发明的实施例,借助alltoallv执行的另一例证全收集操作(326)的方框图。利用发送位移的列表执行图7D的alltoallv操作,其中每个发送位移是一个发送缓冲区分段指针,每个发送位移指向发送缓冲区的相同分段。图7D的例子举例说明虽然所有发送位移指向发送缓冲区的相同分段,但是并不要求发送位移指向发送缓冲区的第一分段的事实。在本例中,列表中的所有发送位移指向排序的发送缓冲区分段1,发送缓冲区的第二分段(318)。alltoallv操作迭代地遍历该列表,试图发出发送缓冲区的不同排序分段的一系列传输,而不是反复发出发送缓冲区的相同分段的内容。通过比较图7D和7A可看出,效果与全收集的效果完全相同。缓冲区分段1的内容被alltoallv全收集到工作组的所有计算节点的所有接收缓冲区(309)中。
在图6的方法中,执行(304)alltoallv操作包括传送(306)计算节点的发送缓冲区的排序分段的内容,按照随机顺序选取排序分段。通过首先把先前按照序号顺序排列的发送缓冲区的分段重新排列成随机顺序,随后按照重新排列的顺序传送发送缓冲区的每个分段的内容,能够实现在按照随机顺序选取排序分段的时候,传送计算节点的发送缓冲区的排序分段的内容。
Figure C20071009701300231
表1以表格形式图解说明与对应的发送计数和发送缓冲区分段序号相关的发送位移的列表。先前按照序号顺序排列的分段序号现在按照任意顺序排列。每一个被分配一个随机数,并且表1的记录已按照随机数被排序。
鉴于上述说明,读者会认识到在按照随机顺序选取排序分段的时候,传送计算节点的发送缓冲区的排序分段的内容的好处是大大降低执行alltoallv操作期间的网络拥塞。例如考虑图5的网络。在传统alltoallv操作的第一阶段中,每个计算节点把其第一个缓冲区分段的内容传送给序号为0的计算节点(本例中为根节点(202))。于是,这期间网络上的所有数据通信流过序号为0、1和2的计算节点之间的链路(203,205),在这些链路上造成很高程度的网络拥塞。在传统alltoallv操作的第二阶段中,每个计算节点把其第一个缓冲区分段的内容传送给序号为1的计算节点,从而严重拥塞与序号为1的计算节点连接的三条链路,依次类推。在所有节点都具有六条入站链路的环形网上,该问题稍不明显,但是总体问题是相同的。alltoallv是一种由工作组的所有计算节点同时执行的集合操作,在所述工作组中可能存在成千上万个计算节点。
但是,在根据本发明的实施例按照随机顺序选取排序分段的时候,当每个计算节点上的每个alltoallv传送计算节点的发送缓冲区的排序分段的内容时,几乎没有计算节点将首先向序号为0的计算节点传输。相反,第一传输的目的地,第二传输的目的地等等将随机分散在网络内,从而降低网络拥塞的风险。
在图6的方法中,执行(304)alltoallv操作还包括从发送缓冲区的每个分段迭代传输(310)数据的网络包(network packet),每个迭代传输包括比发送缓冲区的一个分段的全部内容少的内容。发送缓冲区的分段可包含非常大量的数据。试图把发送缓冲区的整个分段同时发送给接收计算节点冒着在接收节点周围的网络中造成网络拥塞的风险。从发送缓冲区的每个分段迭代传输(310)数据的网络包(每个迭代传输包括比发送缓冲区的一个分段的全部内容少的内容)意味着在所有缓冲区分段内,从发送缓冲区的分段0向接收计算节点0发送一些而不是全部的数据,从发达缓冲区的分段1向接收计算节点1发送一些而不是全部的数据,依次类推,随后返回从分段0发送更多的数据,从分段1发送更多的数据,依次类推,直到所有数据被发送为止。从分段发送少于全部数据的数据意味着跟踪最后的传输在数据中结束于何处,这可通过把一个附加指针(这里称为‘当前指针’)用在发送缓冲区的每个分段上来实现。表2以表格形式举例说明与对应的发送计数,发送缓冲区分段序号,和当前指针有关的发送位移的列表。
Figure C20071009701300251
将从每个分段发送的数据的数量是发送计数乘以待发送的数据类型的大小。在先前迭代中发送的数据的数量是当前指针的值减去分段的发送位移的值。每次迭代可比较待发送的总量与在先前迭代中发送的数量。在每次传输之后,迭代码可更新当前指针。
在图6的方法中,执行(304)alltoallv操作还包括从发送缓冲区的每个分段迭代传输(308)数据的网络包,每个迭代传输包括一个以上的网络包。例如,在使用256字节的网络包大小的并行计算机的数据通信网络中,从发送缓冲区的每个分段传输(308)数据的网络包,以致每个迭代传输包括一个以上的网络包可通过在每个迭代传输中,至少以512字节,或者1K字节或者2K字节的速率进行传输来实现。增大传输大小会增大网络拥塞的风险。降低传输大小会增大存储器超高速缓存过载的风险。通过监视超高速缓存交换和应用程序执行速度,可通过实验容易地确定最佳的传输大小。
在图6的方法中,执行(304)alltoallv操作还包括当发送缓冲区的一个分段的全部内容已被传送时,从发送位移的列表中除去(312)指向已传送分段的发送位移。为了进一步说明,图8是图解说明根据本发明的实施例,在并行计算机(100)的计算节点(152)上的例证alltoallv操作的执行的方框图。图8的alltoallv利用发送位移的列表(328)来执行,发送位移中的三个分别命名为senddisplacement[0]、senddisplacement[1]和senddisplacement[2]。每个发送位移是一个发送缓冲区分段指针,在本例中,每个发送位移指向发送缓冲区(312)的一个不同的排序分段。发送缓冲区的排序分段分别被命名为‘排序分段0’、‘排序分段1’和‘排序分段2’。senddisplacement[0]指向排序分段0中的第一地址(336);senddisplacement[1]指向排序分段1中的第一地址(338);senddisplacement[2]指向排序分段2中的第一地址(340)。
本例中的排序分段由不同的发送计数指定,于是具有不同的大小,显然排序分段1是这三个分段中的最小者。图8的alltoallv使用当前指针(330、332、334)来跟踪已从发送缓冲区(312)的每个排序分段发送了多少数据。图8的alltoallv从发送缓冲区的每个分段迭代传输数据的网络包,每个迭代传输包括比发送缓冲区的一个分段的所有内容少的内容。显然将在其它两个分段的全部数据被发送之前发送排序分段1中的所有数据。如果每次迭代时迭代算法检查留待从每个分段发送的数量:
while(!Finishcd)
{
        char*get_next_senddisplacement(char*list);
        {
             calculate total quantity to be sent as send count times size of
             send datatype;
             calculate amount sent as current pointer minus
             senddisplacement;
             if(amount sent is lcss than total to be sent)
             {
                   send more data;
                   update current pointcr;
             }
        }
}
那么在排序分段1中的全部数据已被发送之后,在关于排序分段1的检查中涉及的数据处理是每次迭代中的不必要开销。另外,其它分段通常远远大于较小的分段,使对其数据已被发送的分段的反复迭代处理变得极其低效。于是,当排序分段1的全部内容都已被传送时,图8的例证alltoallv从发送位移的列表(328)中除去senddisplacement[1],以致诸如
char*get_next_senddisplacement(char*list)
之类的函数将不再从列表(328)找出和返回senddisplacement[1]。
为了进一步说明,图9是图解说明根据本发明的实施例,在并行计算机中执行全收集操作的另一例证方法的流程图。图9的方法与图6的方法类似。类似于图6的方法,在和上面参考图1举例说明的并行计算机类似的并行计算机(100)上执行图9的方法。这样的并行计算机包括多个计算节点,每个计算节点包括一个发送缓冲区,计算节点被组织成用于集合操作的计算节点的至少一个工作组,该工作组中的每个计算节点被分配一个唯一序号,每个发送缓冲区按照所述序号被分割。类似于图6方法,通过利用发送位移的列表执行(304)alltoallv操作,实现图9的方法,其中每个发送位移被实现成一个发送缓冲区分段指针,每个发送位移指向发送缓冲区的相同分段。类似于图6的方法,在图9的方法中:
·执行(304)alltoallv操作包括在按照随机顺序选取排序分段的时候,传送(306)计算节点的发送缓冲区的排序分段的内容;
·执行(304)alltoallv操作还包括迭代从发送缓冲区的每个分段传送(308)数据的网络包,每个迭代传输包括一个以上的网络包;和
·执行(304)alltoallv操作还包括迭代从发送缓冲区的每个分段传送(310)数据的网络包,每个迭代传输包括比发送缓冲区的一个分段的全部内容少的内容。
但是,不同于图6的方法,在图9的方法中,执行(304)alltoallv操作包括把环面不连续点(discontinuity)周围的网络分组传输(350)给目的地计算节点。在和参考图4图解说明的并行计算机类似的并行计算机的环形网中的一个计算节点工作组的计算节点上实现图9的方法--除了其中执行图9的alltoallv的工作组包括一个环面不连续点之外。
为了进一步说明,图10是图9的alltoallv可在其上实现的并行计算机(100)的例证数据通信网络的绘线图。环形网(106)包括计算节点的一个工作组(132),该工作组包括在节点(344)的环面不连续点。环面不连续点是包含在工作组的物理范围内,但是排除在该工作组的定义之外的计算节点。工作组中的计算节点上的集合操作,比如alltoallv在该组中的所有计算节点上执行,从而该组中的所有计算节点必须相互传递消息。未被定义成工作组(132)的一部分的计算节点(344)并不期待来自工作组(132)中的计算节点的消息通信量。在计算节点(344)正在执行部分的并行应用程序这个意义上,接收意外的消息通信量会造成混乱。在不期待来自工作组(132)中的计算节点的消息通信量的情况下,计算节点(344)不能正确地转发这样的通信量。于是,计算节点(346)和计算节点(342)之间的消息通信量可有效地在计算节点(344)周围被发送,而不是试图通过计算节点(344)发送这样的通信量。事实上,出于这些相同的原因,一些并行计算机体系结构禁止定义包含这种不连续点的工作组。但是,图10的环形网支持把环面不连续点(344)周围的网络包传输(图9上的350)给目的地计算节点(342)。
如上所述,alltoallv操作中发送缓冲区的排序分段并不要求都具有相同的大小。在全收集操作中,所有传送分段大小相同。在allgatherv操作中,同样不要求缓冲区分段的所有传输具有相同的大小。可利用这种原型定义allgatherv:
int allgatherv(void*sendbuffer,int sendcount,
               Datatype sendtype,
               void*reevbuf,int*recvcounts,int*recvdisplacements,
               Datatype recvtype,OpGroup opGroupID),
本文中利用alltoallv执行全收集操作的全部所述功能和结构完全适用于allgatherv。即,本文中所述的利用alltoallv执行全收集操作的例证方法也是利用alltoallv执行allgatherv的例证方法。
主要在执行并行计算机中的全收集操作的全功能计算机系统的方面说明了本发明的例证实施例。但是,本领域的技术人员会认识到本发明还可被具体体现成置于供任何适当的数据处理系统之用的信号承载介质上的计算机程序产品。这种信号承载介质可以是用于机器可读信息的传输介质或者可记录介质,包括磁介质、光介质或其它适当的介质。可记录介质的例子包括磁盘驱动器中的磁盘或者软磁盘,光驱动器用光盘,磁带,以及本领域的技术人员想到的其它介质。传输介质的例子包括用于语音通信的电话网和数字数据通信网,比如EthernetsTM和与网际协议和万维网通信的网络。本领域的技术人员会立即认识到具有适当编程装置的任何计算机系统能够执行具体体现成程序产品的本发明的方法的步骤。本领域的技术人员会立即认识到虽然本说明书中描述的一些例证实施例面向安装在计算机硬件上,并在计算机硬件上执行的软件,不过实现成固件或者硬件的备选实施例也在本发明的范围内。
根据上述说明,在不脱离本发明的精神的情况下,在本发明的各个实施例中显然可做出许多修改和变化。本说明书中的描述只是为了举例说明,而不是对本发明的限制。本发明的范围只由下述权利要求限定。

Claims (20)

1、一种在并行计算机上执行全收集操作的方法,所述方法包括:
利用发送位移的列表执行alltoallv操作,每个发送位移包括一个发送缓冲区分段指针,每个发送位移指向发送缓冲区的相同分段,使得alltoallv操作在每次迭代时发送来自发送缓冲区的相同分段的数据,以实现全收集操作,
其中:
执行alltoallv操作还包括在按照随机顺序取得排序分段的情况下,传输计算节点的发送缓冲区的排序分段的内容,和
并行计算机包括多个计算节点,每个计算节点包括一个发送缓冲区,计算节点被组织成用于集合操作的计算节点的至少一个工作组,工作组中的每个计算节点被分配唯一的序号,每个发送缓冲区按照所述序号被分割。
2、按照权利要求1所述的方法,其中执行alltoallv操作还包括从发送缓冲区的每个分段迭代传输数据的网络包,每个迭代传输包括一个以上的网络包。
3、按照权利要求1所述的方法,其中执行alltoallv操作还包括从发送缓冲区的每个分段迭代传输数据的网络包,每个迭代传输包括比发送缓冲区的一个分段的全部内容少的内容。
4、一种在并行计算机上执行allgatherv操作的方法,所述方法包括:
利用发送位移的列表执行alltoallv操作,每个发送位移包括一个发送缓冲区分段指针,每个发送位移指向发送缓冲区的相同分段,使得alltoallv操作在每次迭代时发送来自发送缓冲区的相同分段的数据,以实现全收集操作,
其中:
执行alltoallv操作还包括在按照随机顺序取得排序分段的情况下,传输计算节点的发送缓冲区的排序分段的内容,和
并行计算机包括多个计算节点,每个计算节点包括一个发送缓冲区,计算节点被组织成用于集合操作的计算节点的至少一个工作组,工作组中的每个计算节点被分配唯一的序号,每个发送缓冲区按照所述序号被分割。
5、按照权利要求4所述的方法,其中执行alltoallv操作还包括从发送缓冲区的每个分段迭代传输数据的网络包,每个迭代传输包括一个以上的网络包。
6、按照权利要求4所述的方法,其中执行alltoallv操作还包括从发送缓冲区的每个分段迭代传输数据的网络包,每个迭代传输包括比发送缓冲区的一个分段的全部内容少的内容。
7、一种在并行计算机中执行全收集操作的系统,所述系统被置于信号承载介质之上,所述系统包括:
利用发送位移的列表执行alltoallv操作的装置,每个发送位移包括一个发送缓冲区分段指针,每个发送位移指向发送缓冲区的相同分段,使得alltoallv操作在每次迭代时发送来自发送缓冲区的相同分段的数据,以实现全收集操作,
其中:
执行alltoallv操作的装置还包括在按照随机顺序取得排序分段的情况下,传输计算节点的发送缓冲区的排序分段的内容的装置,和
并行计算机包括多个计算节点,每个计算节点包括一个发送缓冲区,计算节点被组织成用于集合操作的计算节点的至少一个工作组,工作组中的每个计算节点被分配唯一的序号,每个发送缓冲区按照所述序号被分割。
8、按照权利要求7所述的系统,其中信号承载介质包括可记录介质。
9、按照权利要求7所述的系统,其中信号承载介质包括传输介质。
10、按照权利要求7所述的系统,其中执行alltoallv操作的装置还包括从发送缓冲区的每个分段迭代传输数据的网络包的装置,每个迭代传输包括一个以上的网络包。
11、按照权利要求7所述的系统,其中执行alltoallv操作的装置还包括从发送缓冲区的每个分段迭代传输数据的网络包的装置,每个迭代传输包括比发送缓冲区的一个分段的全部内容少的内容。
12、一种在并行计算机上执行alltoallv操作的方法,
其中并行计算机包括多个计算节点,每个计算节点包括一个发送缓冲区,计算节点被组织成用于集合操作的计算节点的至少一个工作组,工作组中的每个计算节点被分配唯一的序号,每个发送缓冲区按照所述序号被分割,alltoallv操作包括发送位移的列表,每个发送位移包括一个发送缓冲区分段指针,
所述方法包括:
按照随机顺序传输计算节点的发送缓冲区的排序分段;和
当发送缓冲区的一个分段的全部内容已被传输时,从发送位移的列表中除去指向已传送分段的发送位移。
13、按照权利要求12所述的方法,还包括从发送缓冲区的每个分段迭代传输数据的网络包,每个迭代传输包括一个以上的网络包。
14、按照权利要求12所述的方法,还包括从发送缓冲区的每个分段迭代传输数据的网络包,每个迭代传输包括比发送缓冲区的一个分段的全部内容少的内容。
15、按照权利要求12所述的方法,其中:
并行计算机还包括用于节点之间的数据通信的数据通信网络,所述网络有效地把节点组织成环形;
计算节点的工作组包括一个环形网不连续点;和
所述方法还包括把不连续点周围的网络包传送给目的地计算节点。
16、一种在并行计算机中执行alltoallv操作的系统,其中并行计算机包括多个计算节点,每个计算节点包括一个发送缓冲区,计算节点被组织成用于集合操作的计算节点的至少一个工作组,工作组中的每个计算节点被分配唯一的序号,每个发送缓冲区按照所述序号被分割,alltoallv操作包括发送位移的列表,每个发送位移包括一个发送缓冲区分段指针,所述系统被置于信号承载介质之上,所述系统包括:
按照随机顺序传输计算节点的发送缓冲区的排序分段的装置;和
当发送缓冲区的一个分段的全部内容已被传输时,从发送位移的列表中除去指向已传送分段的发送位移的装置。
17、按照权利要求16所述的系统,其中信号承载介质包括可记录介质。
18、按照权利要求16所述的系统,其中信号承载介质包括传输介质。
19、按照权利要求16所述的系统,还包括从发送缓冲区的每个分段迭代传输数据的网络包的装置,每个迭代传输包括一个以上的网络包。
20、按照权利要求16所述的系统,还包括从发送缓冲区的每个分段迭代传输数据的网络包的装置,每个迭代传输包括比发送缓冲区的一个分段的全部内容少的内容。
CNB2007100970135A 2006-07-24 2007-04-17 在并行计算机上执行全收集操作的方法和系统 Expired - Fee Related CN100570594C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/459,387 US20080022079A1 (en) 2006-07-24 2006-07-24 Executing an allgather operation with an alltoallv operation in a parallel computer
US11/459,387 2006-07-24

Publications (2)

Publication Number Publication Date
CN101114273A CN101114273A (zh) 2008-01-30
CN100570594C true CN100570594C (zh) 2009-12-16

Family

ID=38972733

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100970135A Expired - Fee Related CN100570594C (zh) 2006-07-24 2007-04-17 在并行计算机上执行全收集操作的方法和系统

Country Status (2)

Country Link
US (1) US20080022079A1 (zh)
CN (1) CN100570594C (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8868930B2 (en) 2006-05-31 2014-10-21 International Business Machines Corporation Systems and methods for transformation of logical data objects for storage
WO2007138601A2 (en) 2006-05-31 2007-12-06 Storwize Ltd. Method and system for transformation of logical data objects for storage
EP2154839B1 (en) * 2007-06-06 2013-05-22 Fujitsu Limited Relay device and terminal
US8959172B2 (en) * 2007-07-27 2015-02-17 International Business Machines Corporation Self-pacing direct memory access data transfer operations for compute nodes in a parallel computer
US8422402B2 (en) 2008-04-01 2013-04-16 International Business Machines Corporation Broadcasting a message in a parallel computer
US8484440B2 (en) 2008-05-21 2013-07-09 International Business Machines Corporation Performing an allreduce operation on a plurality of compute nodes of a parallel computer
JP2009301101A (ja) * 2008-06-10 2009-12-24 Nec Corp プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法
US8281053B2 (en) 2008-07-21 2012-10-02 International Business Machines Corporation Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations
JP5331898B2 (ja) * 2009-11-12 2013-10-30 富士通株式会社 並列計算用の通信方法、情報処理装置およびプログラム
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
US8667441B2 (en) 2010-11-16 2014-03-04 International Business Machines Corporation Clock optimization with local clock buffer control optimization
US8949453B2 (en) 2010-11-30 2015-02-03 International Business Machines Corporation Data communications in a parallel active messaging interface of a parallel computer
US8725483B2 (en) 2011-01-19 2014-05-13 International Business Machines Corporation Minimizing the maximum required link capacity for three-dimensional interconnect routing
JP6138701B2 (ja) * 2011-03-04 2017-05-31 富士通株式会社 分散計算方法及び分散計算システム
US8949328B2 (en) 2011-07-13 2015-02-03 International Business Machines Corporation Performing collective operations in a distributed processing system
US8856495B2 (en) * 2011-07-25 2014-10-07 International Business Machines Corporation Automatically routing super-compute interconnects
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
US8938713B2 (en) * 2012-02-09 2015-01-20 International Business Machines Corporation Developing a collective operation for execution 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
US8930962B2 (en) * 2012-02-22 2015-01-06 International Business Machines Corporation Processing unexpected messages at a compute node of a parallel computer
CN103020203B (zh) * 2012-12-05 2017-04-12 北京奇虎科技有限公司 一种数据处理方法及装置
US9772876B2 (en) * 2014-01-06 2017-09-26 International Business Machines Corporation Executing an all-to-allv operation on a parallel computer that includes a plurality of compute nodes

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4715032A (en) * 1983-06-09 1987-12-22 Telefonaktiebolaget Lm Ericsson Method and apparatus for the connection of a closed ring through a telephone exchange
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
US5933794A (en) * 1997-02-25 1999-08-03 Hughes Electronics Corporation Scalable parallel processing apparatus and method for performing fast multipole scattering calculations
US5958017A (en) * 1996-03-13 1999-09-28 Cray Research, Inc. Adaptive congestion control mechanism for modular computer networks
US6334138B1 (en) * 1998-03-13 2001-12-25 Hitachi, Ltd. Method for performing alltoall communication in parallel computers
US6754211B1 (en) * 1999-12-01 2004-06-22 Mosaid Technologies, Inc. Method and apparatus for wire speed IP multicast forwarding

Family Cites Families (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
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
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
US5875329A (en) * 1995-12-22 1999-02-23 International Business Machines Corp. Intelligent batching of distributed messages
GB9617907D0 (en) * 1996-08-28 1996-10-09 British Telecomm Communications network
DE19635612C2 (de) * 1996-09-03 2002-07-18 Zf Sachs Ag Drossel für hydraulische Betätigungssysteme
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
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
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
US6433802B1 (en) * 1998-12-29 2002-08-13 Ncr Corporation Parallel programming development environment
NO993483L (no) * 1999-07-15 2001-01-16 Ericsson Telefon Ab L M Fremgangsmåte og anordning for effektiv overföring av datapakker
US7171484B1 (en) * 2000-05-24 2007-01-30 Krause Michael R Reliable datagram transport service
US20020091819A1 (en) * 2001-01-05 2002-07-11 Daniel Melchione System and method for configuring computer applications and devices using inheritance
ATE479147T1 (de) * 2001-02-24 2010-09-15 Ibm Neuartiger massivparalleler supercomputer
KR100592752B1 (ko) * 2001-02-24 2006-06-26 인터내셔널 비지네스 머신즈 코포레이션 토러스 및 트리 네트워크에서의 산술 기능
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
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
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
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
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
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
US7539989B2 (en) * 2004-10-12 2009-05-26 International Business Machines Corporation Facilitating intra-node data transfer in collective communications
US7539995B2 (en) * 2004-12-30 2009-05-26 Intel Corporation Method and apparatus for managing an event processing system
US7496699B2 (en) * 2005-06-17 2009-02-24 Level 5 Networks, Inc. DMA descriptor queue read and cache write pointer arrangement
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 メモリ制御装置
WO2007087363A2 (en) * 2006-01-24 2007-08-02 Brown University Efficient content authentication in peer-to-peer networks
US7936681B2 (en) * 2006-03-06 2011-05-03 Cisco Technology, Inc. Cross-layer design techniques for interference-aware routing configuration in wireless mesh networks
US7697443B2 (en) * 2006-04-13 2010-04-13 International Business Machines Corporation Locating hardware faults in a parallel computer
US8135936B2 (en) * 2009-12-23 2012-03-13 Intel Corporation Adaptive address mapping with dynamic runtime memory mapping selection
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
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
US8161480B2 (en) * 2007-05-29 2012-04-17 International Business Machines Corporation Performing an allreduce operation using shared memory
US7886084B2 (en) * 2007-06-26 2011-02-08 International Business Machines Corporation Optimized collectives using a DMA on a parallel computer
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
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
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
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
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
US20100191814A1 (en) * 2008-12-23 2010-07-29 Marco Heddes System-On-A-Chip Employing A Network Of Nodes That Utilize Receive Side Flow Control Over Channels For Messages Communicated Therebetween
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
US9021046B2 (en) * 2010-01-15 2015-04-28 Joyent, Inc Provisioning server resources in a cloud resource
US8346883B2 (en) * 2010-05-19 2013-01-01 International Business Machines Corporation Effecting hardware acceleration of broadcast operations in a parallel computer
US8949577B2 (en) * 2010-05-28 2015-02-03 International Business Machines Corporation Performing a deterministic reduction operation in a parallel computer
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
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4715032A (en) * 1983-06-09 1987-12-22 Telefonaktiebolaget Lm Ericsson Method and apparatus for the connection of a closed ring through a telephone exchange
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
US5958017A (en) * 1996-03-13 1999-09-28 Cray Research, Inc. Adaptive congestion control mechanism for modular computer networks
US5933794A (en) * 1997-02-25 1999-08-03 Hughes Electronics Corporation Scalable parallel processing apparatus and method for performing fast multipole scattering calculations
US6334138B1 (en) * 1998-03-13 2001-12-25 Hitachi, Ltd. Method for performing alltoall communication in parallel computers
US6754211B1 (en) * 1999-12-01 2004-06-22 Mosaid Technologies, Inc. Method and apparatus for wire speed IP multicast forwarding

Also Published As

Publication number Publication date
US20080022079A1 (en) 2008-01-24
CN101114273A (zh) 2008-01-30

Similar Documents

Publication Publication Date Title
CN100570594C (zh) 在并行计算机上执行全收集操作的方法和系统
US11893424B2 (en) Training a neural network using a non-homogenous set of reconfigurable processors
CN101459600B (zh) 用于跟踪网络争用的方法和设备
US7653716B2 (en) Determining a bisection bandwidth for a multi-node data communications network
US11847395B2 (en) Executing a neural network graph using a non-homogenous set of reconfigurable processors
US9009350B2 (en) Determining a path for network traffic between nodes in a parallel computer
US7600095B2 (en) Executing scatter operation to parallel computer nodes by repeatedly broadcasting content of send buffer partition corresponding to each node upon bitwise OR operation
CN103150144B (zh) 用于并行计算机中的集体操作协议选择的方法和系统
US7797445B2 (en) Dynamic network link selection for transmitting a message between compute nodes of a parallel computer
US20070245122A1 (en) Executing an Allgather Operation on a Parallel Computer
US20120216021A1 (en) Performing An All-To-All Data Exchange On A Plurality Of Data Buffers By Performing Swap Operations
US20090089328A1 (en) Minimally Buffered Data Transfers Between Nodes in a Data Communications Network
US9262243B2 (en) Analyzing update conditions for shared variable directory information in a parallel computer
US9529593B2 (en) Requesting shared variable directory (SVD) information from a plurality of threads in a parallel computer
US9225545B2 (en) Determining a path for network traffic between nodes in a parallel computer
US9250950B2 (en) Conditionally updating shared variable directory (SVD) information in a parallel computer
CN103246508A (zh) 用于开发并行计算机的集合操作的方法和装置
WO2022133047A1 (en) Dataflow function offload to reconfigurable processors
US9251078B2 (en) Acquiring remote shared variable directory information in a parallel computer
CN103246507B (zh) 用于开发在并行计算机中执行的集合操作的方法和装置
US9367364B2 (en) Broadcasting shared variable directory (SVD) information 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: 20091216

Termination date: 20150417

EXPY Termination of patent right or utility model