CN104115124B - 对在多个计算节点上执行的源代码实施更新 - Google Patents
对在多个计算节点上执行的源代码实施更新 Download PDFInfo
- Publication number
- CN104115124B CN104115124B CN201380008762.XA CN201380008762A CN104115124B CN 104115124 B CN104115124 B CN 104115124B CN 201380008762 A CN201380008762 A CN 201380008762A CN 104115124 B CN104115124 B CN 104115124B
- Authority
- CN
- China
- Prior art keywords
- source code
- calculate node
- calculate
- node
- update
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 91
- 230000004888 barrier function Effects 0.000 claims abstract description 69
- 238000004590 computer program Methods 0.000 claims abstract description 50
- 230000004044 response Effects 0.000 claims abstract description 50
- 230000000717 retained effect Effects 0.000 claims abstract description 8
- 238000003860 storage Methods 0.000 claims description 18
- 230000009467 reduction Effects 0.000 claims description 17
- 230000005540 biological transmission Effects 0.000 claims description 12
- 238000004891 communication Methods 0.000 description 65
- 230000008569 process Effects 0.000 description 38
- 238000010586 diagram Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 12
- 239000000872 buffer Substances 0.000 description 11
- 230000008859 change Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000002457 bidirectional effect Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 239000003550 marker Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005611 electricity Effects 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 239000006185 dispersion Substances 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
提供了用于对在多个计算节点上执行的源代码实施更新的方法、装置和计算机程序产品。实施方式包括由计算节点接收广播更新通知消息,其指示存在针对在多个计算节点上执行的源代码的更新;响应于接收到该更新通知消息,实施分布式屏障;基于该分布式屏障,在源代码内的特定位置停止该源代码的执行;基于该分布式屏障,在计算节点的存储器中适当更新包括保留工件数据的源代码,该工件数据对应于源代码的执行;并且基于源代码的更新完成,利用所保留工件数据在源代码内停止执行的特定位置继续源代码的执行。
Description
技术领域
本发明的领域是数据处理,或者更具体地,是用于对在多个计算机节点上执行的源代码实施更新的方法、装置和计算机程序产品。
背景技术
1948年的EDVAC计算机系统的发展经常被称作计算机时代的开始。自那时起,计算机系统已经进化为极其复杂的设备。今天的计算机明显比诸如EDVAC的早期系统更为繁杂。计算机系统通常包括硬件组件和软件组件、应用程序、操作系统、处理器、总线、存储器、输入/输出设备等的组合。半导体处理和计算机架构的发展将计算机的性能推向越来越高的水平,更为繁杂的计算机软件已经进化为对硬件的更高性能加以利用,这使得今天的计算机系统与仅仅几年前相比也明显更为强大。
现代计算系统可以是大量并行的并且在计算系统内包括许多计算节点。相同源代码经常在多个计算节点上执行。为了保持结果的连续性,可能需要同时对所有计算节点上的源代码进行更新。通常的解决方案是利用新代码重新启动所有计算节点并重新加载数据。对于许多系统而言,尽管同时源代码更新是关键的,将源代码重新加载到计算节点中所导致的延迟也是不可接受的。
发明内容
提供了用于对在多个计算节点上执行的源代码实施更新的方法、装置和计算机程序产品。实施方式包括由计算节点从源代码更新器接收广播更新通知消息,其指示存在针对在多个计算节点上执行的源代码的更新;响应于接收到该更新通知消息,由计算机节点在计算节点上实施分布式屏障,该分布式屏障控制针对源代码的更新的实施;基于该分布式屏障,由计算节点在源代码内的特定位置停止该源代码的执行;基于该分布式屏障,由计算节点在计算节点的存储器中适当更新包括保留工件数据的源代码,该工件数据对应于源代码的执行;并且基于源代码的更新完成,由计算节点利用所保留工件数据在源代码内停止执行的特定位置继续源代码的执行。
本发明的上述和其它目标、特征和优势将由于以下对附图所示的本发明的示例性实施方式更为具体的描述而容易理解,附图中同样的附图标记总体上标识本发明示例性实施方式中同样的部分。
从第一方面看到,本发明提供了一种对在多个计算节点上执行的源代码实施更新的方法,该方法包括:由计算节点从源代码更新器接收广播更新通知消息,其指示存在针对在多个计算节点上执行的源代码的更新;响应于接收到该更新通知消息,由计算机节点在计算节点上实施分布式屏障,该分布式屏障控制针对源代码的更新的实施;基于该分布式屏障,由计算节点在源代码内的特定位置停止该源代码的执行;基于该分布式屏障,由计算节点在计算节点的存储器中适当更新包括保留工件数据的源代码,该工件数据对应于源代码的执行;并且基于源代码的更新完成,由计算节点利用所保留工件数据在源代码内停止执行的特定位置继续源代码的执行。
优选地,本发明提供了一种方法,其中所实施的分布式屏障防止了计算节点继续执行源代码直至多个计算节点中的每个计算节点都已经完成更新源代码。
优选地,本发明提供了一种方法,其进一步包括:响应于源代码的更新完成,由计算节点更新源代码在用版本的指示以记录计算节点完成了源代码的更新;由计算节点从源代码更新器接收更新完成消息,其指示多个计算节点中的每个计算节点的源代码在用版本与所更新源代码的版本相对应;并且其中继续源代码的执行响应于接收到该更新完成消息。
优选地,本发明提供了一种方法,其中所实施的分布式屏障防止了计算节点更新源代码直至多个计算节点中的每个计算节点都已经指示准备好更新源代码。
优选地,本发明提供了一种方法,其进一步包括:响应于接收到该更新通知消息,由计算节点确定该计算节点是否准备更新源代码;如果该计算节点准备更新源代码,则由该计算节点传送准备更新消息;并且由计算节点从源代码更新器接收立即更新消息,其指示多个计算节点中的每个计算节点都准备更新源代码;其中响应于接收到该立即更新消息而适当更新源代码;并且其中继续源代码的执行响应于计算节点完成该计算节点处的源代码更新。
优选地,本发明提供了一种方法,其中该更新通知消息是活动消息,其包括用于从多个计算节点中的每个计算节点收集准备更新消息的全归约操作(all reduceoperation)。
从第二方面看到,本发明提供了一种用于对在多个计算节点上执行的源代码实施更新的装置,该装置包括计算机处理器,操作耦合至该计算机处理器的计算机存储器,该计算机存储器具有部署于其中的计算机程序指令,当被计算机处理器执行时,该计算机程序指令使得该装置执行以下步骤:由计算节点从源代码更新器接收广播更新通知消息,其指示存在针对在多个计算节点上执行的源代码的更新;响应于接收到该更新通知消息,由计算机节点在计算节点上实施分布式屏障,该分布式屏障控制针对源代码的更新的实施;基于该分布式屏障,由计算节点在源代码内的特定位置停止该源代码的执行;基于该分布式屏障,由计算节点在计算节点的存储器中适当更新包括保留工件数据的源代码,该工件数据对应于源代码的执行;并且基于源代码的更新完成,由计算节点利用所保留工件数据在源代码内停止执行的特定位置继续源代码的执行。
优选地,本发明提供了一种装置,其中所实施的分布式屏障防止了计算节点继续执行源代码直至多个计算节点中的每个计算节点都已经完成更新源代码。
优选地,本发明提供了一种装置,其进一步包括计算机程序指令,当被计算机处理器执行时,该计算机程序指令使得该装置执行以下步骤:响应于源代码的更新完成,由计算节点更新源代码在用版本的指示以记录计算节点完成了源代码的更新;由计算节点从源代码更新器接收更新完成消息,其指示多个计算节点中的每个计算节点的源代码在用版本与所更新源代码的版本相对应;并且其中继续源代码的执行响应于接收到该更新完成消息。
优选地,本发明提供了一种装置,其中所实施的分布式屏障防止了计算节点更新源代码直至多个计算节点中的每个计算节点都已经指示准备好更新源代码。
优选地,本发明提供了一种装置,其进一步包括计算机程序指令,当被计算机处理器执行时,该计算机程序指令使得该装置执行以下步骤:响应于接收到该更新通知消息,由计算节点确定该计算节点是否准备更新源代码;如果该计算节点准备更新源代码,则由该计算节点传送准备更新消息;并且由计算节点从源代码更新器接收立即更新消息,其指示多个计算节点中的每个计算节点都准备更新源代码;其中适当更新源代码响应于接收到该立即更新消息;并且其中继续源代码的执行响应于计算节点完成该计算节点处的源代码更新。
优选地,本发明提供了一种装置,其中该更新通知消息是活动消息,其包括用于从多个计算节点中的每一个收集准备更新消息的全归约操作。
从另一个方面看到,本发明提供了一种用于对在多个计算节点上执行的源代码实施更新的计算机程序产品,该计算机程序产品部署在计算机可读介质上,该计算机程序产品包括计算机程序指令,当被执行时,该计算机程序指令能够使得计算机执行以下步骤:由计算节点从源代码更新器接收广播更新通知消息,其指示存在针对在多个计算节点上执行的源代码的更新;响应于接收到该更新通知消息,由计算机节点在计算节点上实施分布式屏障,该分布式屏障控制针对源代码的更新的实施;基于该分布式屏障,由计算节点在源代码内的特定位置停止该源代码的执行;基于该分布式屏障,由计算节点在计算节点的存储器中适当更新包括保留工件数据的源代码,该工件数据对应于源代码的执行;并且基于源代码的更新完成,由计算节点利用所保留工件数据在源代码内停止执行的特定位置继续源代码的执行。
优选地,本发明提供了一种计算机程序产品,其中所实施的分布式屏障防止了计算节点继续执行源代码直至多个计算节点中的每个计算节点都已经完成更新源代码。
优选地,本发明提供了一种计算机程序产品,其进一步包括计算机程序指令,当被执行时,该计算机程序指令能够使得计算机执行以下步骤:响应于源代码的更新完成,由计算节点更新源代码在用版本的指示以记录计算节点完成了源代码的更新;由计算节点从源代码更新器接收更新完成消息,其指示多个计算节点中的每个计算节点的源代码在用版本与所更新源代码的版本相对应;并且其中继续源代码的执行响应于接收到该更新完成消息。
优选地,本发明提供了一种计算机程序产品,其中所实施的分布式屏障防止了计算节点更新源代码直至多个计算节点中的每个计算节点都已经指示准备好更新源代码。
优选地,本发明提供了一种计算机程序产品,其进一步包括计算机程序指令,当被执行时,该计算机程序指令能够使得计算机执行以下步骤:响应于接收到该更新通知消息,由计算节点确定该计算节点是否准备更新源代码;如果该计算节点准备更新源代码,则由该计算节点传送准备更新消息;并且由计算节点从源代码更新器接收立即更新消息,其指示多个计算节点中的每个计算节点都准备更新源代码;其中适当更新源代码响应于接收到该立即更新消息;并且其中继续源代码的执行响应于计算节点完成该计算节点处的源代码更新。
优选地,本发明提供了一种计算机程序产品,其中该更新通知消息是活动消息,其包括用于从多个计算节点中的每一个收集准备更新消息的全归约操作。
优选地,本发明提供了一种计算机程序产品,其中该计算机可读介质是信号承载介质。
优选地,本发明提供了一种计算机程序产品,其中该计算机可读介质是存储介质。
附图说明
现在将参考附图仅通过示例对本发明的优选实施方式进行描述,其中:
图1图示了根据本发明实施方式的用于对在多个计算节点上执行的源代码实施更新的示例系统。
图2给出了根据本发明实施方式的可在能够对多个计算节点上执行的源代码实施更新的并行计算机中使用的示例计算节点的框图。
图3A给出了根据本发明实施方式的可在用于对多个计算节点上执行的源代码实施更新的系统中使用的示例点对点适配器的框图。
图3B给出了根据本发明实施方式的可在用于对多个计算节点上执行的源代码实施更新的系统中使用的示例全局组合网络适配器的框图。
图4给出了图示根据本发明实施方式的示例数据通信网络的线路图,该数据通信网络针对可在能够对多个计算节点上执行的源代码实施更新的系统中使用的点对点操作进行了优化。
图5给出了图示根据本发明实施方式的可在能够对多个计算节点上执行的源代码实施更新的系统中使用的示例全局组合网络的线路图。
图6给出了图示根据本发明实施方式的用于对多个计算节点上执行的源代码实施更新的示例性方法的流程图。
图7给出了图示根据本发明实施方式的用于对多个计算节点上执行的源代码实施更新的另外的示例性方法的流程图。
图8给出了图示根据本发明实施方式的用于对多个计算节点上执行的源代码实施更新的另外的示例性方法的流程图。
具体实施方式
以图1开始,参考附图对依据本发明的用于对多个计算节点上执行的源代码实施更新的示例性方法、装置和产品进行描述。
图1图示了根据本发明实施方式的用于对在多个计算节点上执行的源代码实施更新的示例系统。图1的系统包括并行计算机(100),用于计算机的数据存储设备(118)形式的非易失性存储器,用于计算机的打印机(120)形式的输出设备,以及用于计算机的计算机终端(122)形式的输入/输出设备。
图1的示例中的并行计算机(100)包括多个计算机节点(102)。计算机节点(102)通过若干独立数据通信网络耦合以便进行数据通信,该网络包括高速以太网(174)、联合测试行动组(JTAG)网络(104)、针对使用二叉树网络拓扑的集体操作进行优化的全局组合网络(106),以及针对使用环形网络拓扑的点对点操作进行优化的点对点网络(108)。全局组合网络(106)是包括连接至计算机节点(102)的数据新链路以便将计算机节点(102)组织为二叉树的数据通信网络。每个数据通信网络利用计算机节点(102)之间的数据通信链路而实施。数据通信链路为并行计算机(100)的计算机节点(102)之间的并行操作提供数据通信。
并行计算机(100)的计算机节点(102)被组织为计算节点的至少一个操作群组(132)以便在并行计算机(100)上进行集体操作。计算节点的每个操作群组(132)是在其上执行集体并行操作的计算节点的集合。操作群组(132)中的每个计算节点被分配以识别操作群组(132)中的特定计算节点的唯一等级。集体操作利用操作群组的计算节点之间的数据通信来实施。集体操作是涉及到操作群组(132)的所有计算节点的那些功能。集体操作是一种同时即基本上在同一时间由计算节点的操作群组(132)中的所有计算节点所执行的消息输送计算机程序指令的操作。这样的操作群组(132)可以包括并行计算机(100)中的所有计算节点(102)或者所有计算节点(102)的子集。集体操作经常围绕点对点操作来构建。集体操作要求操作群组(132)内的所有计算节点上的所有处理都调用具有匹配变元(argument)的相同集体操作。“广播”是用于在操作群组的计算节点之间移动数据的集体操作的示例。“缩减”操作是对操作群组(132)的计算节点之间所分布的数据执行算术或逻辑函数的集体操作的示例。操作群组(132)例如可以被实施为MPI“通信方(communicator)”。
“MPI”是指“消息输送接口”,这是现有技术的并行通信库,用于在并行计算机上进行数据通信的计算机程序指令的模块。可以针对根据本发明实施方式进行配置的系统中的使用而有所改进的现有技术的并行通信库的示例包括MPI和“并行虚拟机”(PVM)库。PVM由田纳西大学、Oak Ridge国家实验室和Emory大学所研发。MPI由MPI论坛所发布,这是具有来自定义和维护MPI标准的许多组织的代表的开放性组织。在本文撰写时,MPI是实际上用于在分布式存储器并行计算机上运行并行程序的计算节点之间进行通信的标准。本说明书有时为了便于解释而使用MPI术语,虽然这样使用MPI并非本发明的要求或限制。
一些集体操作具有在操作群组(132)中的特定计算节点上运行的起始或接收处理。例如,在“广播”集体操作中,向所有其它计算节点发布数据的计算节点上的处理就是起始处理。例如,在“收集”操作中,从其它计算节点接收所有数据的计算节点上的处理就是接收处理。在其上运行这样的起始或接收处理的计算节点被称作逻辑根。
大多数集体操作是四种基本操作的变化或组合:广播、收集、分散和缩减。用于这些集体操作的接口在MPI论坛所发布的MPI标准中有所定义。然而,MPI标准中并未定义用于执行集体操作的算法。在广播操作中,所有处理指定相同的跟处理,其缓冲内容将被发送。根以外的其它处理指定接收缓冲器。在该操作之后,所有缓冲器都包含来自根处理的消息。
与广播操作一样,分散操作也是一对多的集体操作。在分散操作中,逻辑根将根上的数据划分为分段并且向操作群组(132)中的每个计算节点分配以不同的分段。在分散操作中,所有处理通常规定相同的接收计数。发送变元仅对于根处理是重要的,其缓冲器实际上包含给定数据类型的sendcount*N个元素,其中N是给定计算节点群组中的处理的数量。发送缓冲器被划分并分散至所有处理(包括逻辑根上的处理)。每个计算节点被分配以称作“等级”的顺序标识符。在该操作之后,根已经以等级增序向每个处理发送了sendcount数据元素。等级0从发送缓冲器接收第一sendcount数据元素。等级1从发送缓冲器接收第二sendcount数据元素,等等。
收集操作是多对一的集体操作,其与分散操作的描述完全相反。即,收集是其中数据类型元素从分级计算节点被收集到根节点中的接收缓冲器的多对一集体操作。
缩减操作也是多对一的集体操作,其包括对两个数据元素所执行的算术或逻辑函数。所有处理指定相同的“计数”以及相同的算术或逻辑函数。在缩减之后,所有处理都已经从计算节点发送缓冲器向根处理发送了计数数据元素。在缩减操作中,来自相对应的发送缓冲器位置的数据元素通过算术或逻辑运算而按对进行组合以在根处理的接收缓冲器中产生单个相对应的元素。在运行时能够定义特定于应用的缩减操作。并行通信库可以支持预定义操作。例如,MPI提供了以下的预定义缩减操作:
除了计算节点之外,并行计算机(100)包括输入/输出(I/O)节点(110,114),其通过全局组合网络(106)耦合至计算节点(102)。并行计算机(100)中的计算节点(102)可以被划分为处理集合而使得处理集合中的每个计算节点为了进行数据通信而连接至相同的I/O节点。因此,每个处理集合由一个I/O节点和计算节点(102)的子集所组成。整个系统中计算节点的数量与I/O节点的数量之间的比率通常取决于并行计算机(100)的硬件配置。例如,在一些配置中,每个处理集合可以由8个计算节点和1个I/O节点所组成。在一些其它配置中,每个处理集合可以由64个计算节点和1个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)进行通信。服务节点(116)还包括源代码更新器(198),其被配置为根据本发明的实施方式向多个计算节点中的每个计算节点广播更新通知消息。源代码更新器(198)还可以包括所更新源代码以便分布至每个计算节点,或者备选地,所更新源代码可以存储在另一位置以便由计算节点所获取。
在特定实施方式中,源代码更新器(198)被配置为保持追踪每个计算节点的正在使用的哪个版本的源代码,并且被配置为确定每个计算节点何时完成更新。响应于确定每个计算节点已经更新了其源代码,源代码更新器(198)可以传送更新完成消息。如以下更为详细解释的,响应于接收到该更新完成消息,计算节点可以丢弃分布式屏障并且继续原代码的执行。
图1的并行计算机(100)总体上进行操作以便依据本发明的实施方式对多个计算节点上执行的源代码实施更新。为了对源代码实施更新,多个计算节点(102)中的每个计算节点可以包括源代码更新模块(199)。图1的源代码更新模块(199)包括计算机程序指令,当被计算节点的处理器执行时,该计算机程序指令使得该计算节点执行步骤:由计算节点从源代码更新器接收广播更新消息,其指示存在针对多个计算节点上执行的源代码的更新。广播更新通知消息是从源代码更新器(198)向每个计算节点(102)进行广播的消息。该更新通知消息指示可获得针对计算节点上执行的源代码的更新。
源代码更新模块(199)还包括计算机程序指令,当被计算节点的处理器执行时,该计算机程序指令使得该计算节点执行步骤:响应于接收到该更新通知消息,由计算机节点在计算节点上实施分布式屏障;基于该分布式屏障,由计算节点在源代码内的特定位置停止该源代码的执行;并且基于该分布式屏障,由计算节点对源代码进行适当更新。分布式屏障是一种对针对源代码的更新的实施进行控制的操作。即,分布式屏障用作所有计算节点的停止或集合点以在更新处理中继续特定步骤之前进行收集。停止电的位置可以基于更新的类型、所更新源代码的类型、计算节点的配置以及计算节点所执行的处理或应用的类型进行设置。例如,在一种配置中,分布式屏障可以在更新之后但是继续执行源代码之前的点停止所有计算节点的更新处理。在该示例中,每个计算节点都将在任意节点被分布式屏障允许继续执行源代码之前对源代码进行了更新。作为另一个示例,在另一种配置中,分布式屏障可以在所有计算节点都已经开始更新源代码之前的点停止更新处理。在该示例中,计算节点将指示它们何时准备开始更新源代码并且所有计算节点都将进行等待直至每个计算节点都准备进行更新。
用于由计算节点基于分布式屏障对源代码进行适当更新的计算机程序代码包括在计算节点的存储器中保留工件(workpiece)数据。工件数据的示例可以包括在源代码的执行期间所生成的数据;变量状态、指针、索引以及本领域技术人员将会意识到的前提执行数据。
源代码更新模块(199)还包括计算机程序指令,当被计算节点的处理器执行时,该计算机程序指令使得该计算节点执行步骤:基于源代码的更新完成,由计算节点利用所保留工件数据在源代码内停止执行的特定位置继续源代码的执行。即,源代码更新模块被配置为允许计算节点直接在计算节点停止更新源代码的地方继续执行。
根据本发明实施方式的对多个计算节点上所执行的源代码实施更新通常在并行计算机上实施,后者包括通过至少一个数据通信网络而组织用于集体操作的多个计算节点。实际上,这样的计算机可能包括数千个这样的计算节点。每个计算节点自身进而是一种由一个或多个计算机处理内核、其自己的存储及其自己的输入/输出适配器所组成的计算机。
为了进一步进行揭示,图2给出了根据本发明实施方式的可在能够对多个计算节点上执行的源代码实施更新的并行计算机中使用的示例计算节点(102)的框图。图2的计算节点(102)包括多个处理内核(165)以及RAM(156)。图2的处理内核(165)可以在一个或多个集成电路组模上进行配置。处理内核(165)通过高速存储器总线(155)连接至RAM(156),并且通过总线适配器(194)和扩展总线(168)连接至计算节点的其它组件。RAM(156)中存储有应用程序(159),这是使用并行算法执行并行的用户级数据处理的计算机程序指令的模块。
RAM(156)中还存储并行通信库(161),这是在计算节点之间执行包括点对点操作以及集合操作在内的并行通信的计算机程序指令的库。使用诸如C编程语言的传统编程语言,并且使用传统编程方法编写在两个独立数据通信网络上的节点之间发送和接收数据的并行通信例程,可以重新研发并行通信例程的库以便在根据本发明实施方式的系统中使用。备选地,可以对现有技术的库进行改进以根据本发明的实施方式进行操作。现有技术的并行通信库的示例包括“消息输送接口”(MPI)库和“并行虚拟机”(PVM)库。
RAM(156)中还存储应用(226)。图2的示例中的应用(226)可以被配置为并行应用,其具有在被组织为操作群组的多个计算节点之间执行的其它实例。图2的示例中的应用(226)被配置为用于依据本发明的实施方式对多个计算节点上执行的源代码实施更新。图2的示例中的应用(226)能够通过执行以下步骤而依据本发明的实施方式对多个计算节点上执行的源代码实施更新:由计算节点从源代码更新器接收广播更新通知消息,其指示存在针对在多个计算节点上执行的源代码的更新;响应于接收到该更新通知消息,由计算节点在计算节点上实施分布式屏障,该分布式屏障控制针对源代码的更新的实施;基于该分布式屏障,由计算节点在源代码内的特定位置停止该源代码的执行;基于该分布式屏障,由计算节点在计算节点的存储器中适当更新包括保留工件数据的源代码,该工件数据对应于源代码的执行;并且基于源代码的更新完成,由计算节点利用所保留工件数据在源代码内停止执行的特定位置继续源代码的执行。
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网络的数据通信网络以及本领域技术人员将会意识到的其它方式串行执行。通信适配器实现了数据通信的硬件层面,一个计算机通过其直接或通过网络向另一个计算机发送数据通信。可在能够对多个计算节点上执行的源代码实施更新的装置中使用的通信适配器的示例包括用于有线连接的调制解调器、用于有线网络通信的以太网(IEEE802.3)适配器以及用于无线网络通信的802.11b适配器。
图2的示例中的数据通信适配器包括千兆比特以太网适配器(172),其耦合示例数据节点(102)以便针对千兆比特以太网(174)进行数据通信。千兆比特以太网是IEEE802.3标准中所定义的网络传输标准,其提供了每秒钟十亿比特(1千兆比特)的数据速率。千兆比特以太网是在多模式光纤线缆、单模式光纤线缆或无屏蔽双绞线上进行操作的以太网的变化形式。
图2的示例中的数据通信适配器包括JTAG从属电路(176),其耦合示例数据节点(102)以便针对JTAG主控电路(178)进行数据通信。JTAG是用于IEEE1149.1标准所命名的标准测试访问端口和边界扫描架构的常用名称,其用于使用边界扫描来测试印刷电路板。JTAG的使用非常广泛而使得目前边界扫描或多或少地与JTAG同义。JTAG不仅被用于印刷电路板,而且被用于进行集成电路的边界扫描,并且还可被用作调试嵌入式系统的机制,其向系统中提供了便利的可替换访问点。图2的示例计算节点可以这些中的全部三种:且通常包括安装在印刷电路板上的一个或多个集成电路,并且可以被实施为具有其自己的处理内核、其自己的存储器及其自己的I/O能力的嵌入式系统。通过JTAG从属(176)进行的JTAG边界扫描可以有效地配置计算节点(102)中的处理内核寄存器和存储器以便指向可在根据本发明实施方式的能够对多个计算节点上执行的源代码实施更新的系统中使用的计算节点的模块动态地重新分配所连接节点时使用。
图2的示例中的数据通信适配器包括点对点网络适配器(180),其耦合示例计算节点(102)以便针对对于点对点消息输送操作而言最优的网络(108)进行数据通信,该网络例如是被配置为三维环形或网格的网络。通过六条双线链路:+x(181)、-x(182),+y(183),-y(184)、+z(185)和-z(186),点对点适配器(180)在三个通信轴x、y和z上以六个方向提供数据通信。
图2的示例中的数据通信适配器包括全局组合网络适配器(188),其耦合示例计算节点(102)以便针对对于集体消息输送操作而言最优的全局组合网络(106)进行数据通信,该网络例如是被配置为二叉树的网络。全局组合网络适配器(188)通过全局组合网络适配器(188)所支持的每个全局组合网络(106)的三条双向链路提供数据通信。在图2的示例中,全局组合网络适配器(188)通过全局组合网络(106)的三条双向链路提供数据通信:两条指向子节点(190)而一条指向父节点(192)。
示例计算节点(102)包括多个算术逻辑单元(ALU)。每个处理内核(165)包括ALU(166),并且单独的ALU(170)专用于全局组合网络适配器(188)的独有用途,以便在执行缩减操作的包括全归约操作在内的算术和逻辑功能时使用。并行通信库(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)在其接收到来自处理内核(165)之一的输入之前通常并不向网络(106)上输出任何数据,所以处理内核(165)可以为了在ALU(170)中执行特定算术预案算以便防止ALU(170)的输出改变而将标识元素注入到专用ALU(170)中。然而,将标识元素注入到ALU中经常耗用许多处理周期。为了在这种情况下进一步提升性能,示例计算节点(102)包括用于向ALU(170)注入标识元素以减少防止改变ALU输出所需的处理内核资源数量的专用硬件(171)。专用硬件(171)注入与ALU所执行的特定算术运算相对应的标识元素。例如,当全局组合网络适配器(188)对从子节点(190)所接收的数据执行按位OR时,专用硬件(171)可以向ALU(170)中注入零以提高整个全局组合网络(106)的性能。
为了进一步进行解释,图3A给出了根据本发明实施方式的可在能够对多个计算节点上执行的源代码实施更新的系统中使用的示例点对点适配器(180)的框图。点对点适配器(180)被设计为用于在对于点对点操作而言最优的数据通信网络中使用,这是将计算节点以三维环形或网格进行组织的网络。往来于-x方向中的下一个节点(182)以及往来于+x方向中的下一个节点(181),图3A的示例中的点对点适配器(180)通过四条双向数据通信链路而沿x轴提供数据通信。往来于-y方向中的下一个节点(184)以及往来于+y方向中的下一个节点(183),图3A的示例中的点对点适配器(180)还通过四条双向数据通信链路而沿y轴提供数据通信。往来于-z方向中的下一个节点(186)以及往来于+z方向中的下一个节点(185),图3A的示例中的点对点适配器(180)还通过四条双向数据通信链路而沿z轴提供数据通信。
为了进一步进行解释,图3B给出了根据本发明实施方式的可在能够对多个计算节点上执行的源代码实施更新的系统中使用的全局组合网络适配器(188)的框图。全局组合网络适配器(188)被设计为在针对集体操作而言最后的网络中使用,这是以二叉树对并行计算机的计算节点进行组织的网络。图3B的示例中的全局组合网络适配器(188)通过四条双向数据通信链路(190)而往来于全局组合网络的子节点提供数据通信,并且还通过两条双向数据通信链路(192)而往来于全局组合网络的父节点提供数据通信。
为了进一步进行解释,图4给出了图示根据本发明实施方式的示例数据通信网络(108)的线路图,该数据通信网络(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)。该等级实际上标示了执行根据本发明实施方式的并行操作的任务或处理。假设仅有一个这样的任务在每个节点上执行而使用等级来识别节点。针对多于一个的参与任务在单个节点上执行的情况,等级由此识别任务而不是节点。等级唯一地识别任务在树形网络中的位置以便在该树形网络中的点对点和集体操作中使用。该示例中的等级被分配为从分配给根任务或根节点(202)的0,分配给该树中第二层中的第一节点的1,分配给该树中第二层中的第二节点的2,分配给该树中第三层中的第一节点的3,分配给该书中第三层中的第二节点的4等开始的整数。为了便于图示,这里仅示出了该树的前三层中的等级,但是树形网络中的所有计算节点都被分配以唯一等级。
为了进一步进行解释,图6给出了图示根据本发明实施方式的用于对多个计算节点上执行的源代码实施更新的示例性方法的流程图。图6的方法包括由分布式处理系统的计算节点(102a)从源代码更新器(198)接收(602)广播更新通知消息(650),其指示存在针对在多个计算节点(102)上执行的源代码(280)的更新。在图6的示例中,该更新通知消息是活动消息,其包括用于从多个计算节点中的每一个收集准备更新消息的全归约操作。由分布式处理系统的计算节点(102a)从源代码更新器(198)接收(602)示存在针对在多个计算节点(102)上执行的源代码(280)的更新的广播更新通知消息(650)可以通过经由耦合服务节点(116)和计算节点(102)的联合测试行动组(JTAG)网络接收消息来实现。
图6的方法还包括响应于接收到该更新通知消息(650),由计算节点(102a)在计算节点(102a)上实施(604)分布式屏障(652)。该分布式屏障(652)控制针对源代码(280)的更新的实施。由计算节点(102a)在计算节点(102a)上实施(604)分布式屏障(652)可以通过执行屏障操作并且执行系统中断来实现。
图6的方法包括基于该分布式屏障(652),由计算节点(102a)在源代码(280)内的特定位置(654)停止(606)该源代码(280)的执行。由计算节点(102a)基于该分布式屏障(652)在源代码(280)内的特定位置(654)停止(606)该源代码(280)的执行可以通过停止源代码的执行来实现。
图6的方法还包括基于该分布式屏障(652),由计算节点(102a)在计算节点(102a)的存储器(156)中适当更新(608)包括保留工件数据(656)的源代码(280)。在图6的示例中,工件数据(656)对应于源代码(280)的执行。由计算节点(102a)基于该分布式屏障(652)在计算节点(102a)的存储器(156)中适当更新(608)包括保留工件数据(656)的源代码(280)可以通过存储与源代码执行相关联的变量、指针、寄存器内容;并且存储最后源代码执行的指针至;从源代码更新器(198)或另一位置获取所更新源代码;并且将所更新源代码存储在计算节点内来实现。
图6的方法还包括基于源代码(280)的更新完成,由计算节点(102a)利用所保留工件数据(656)在源代码(280)内停止执行的特定位置(654)继续(610)源代码(280)的执行。由计算节点(102a)基于源代码(280)的更新完成利用所保留工件数据(656)在源代码(280)内停止执行的特定位置(654)继续(610)源代码(280)的执行可以通过从存储获取指针、寄存器内容、变量和其它工件数据;获取最后的源代码执行的位置;并且在所存储位置继续执行来实现。
为了进一步进行解释,图7给出了图示根据本发明实施方式的用于对多个计算节点上执行的源代码实施更新的另外的示例性方法的流程图。图7的方法与图6的方法的相似之处在于,图7的方法包括接收(602)广播更新通知消息(650);响应于接收到该更新通知消息(650)在计算节点(102a)上实施(604)分布式屏障(652);基于该分布式屏障(652)在源代码(280)内的特定位置(654)停止(606)该源代码(280)的执行;基于该分布式屏障(652)对源代码(280)进行适当更新(608);并且基于源代码(280)的更新完成在源代码(280)内停止执行的特定位置(654)继续(610)源代码(280)的执行。
在图7的示例中,所实施的分布式屏障防止了计算节点继续执行源代码直至多个计算节点中的每个计算节点都已经完成了更新源代码。图7的方法还包括响应于完成源代码(280)的更新(608),由计算节点(102a)更新(702)源代码的在用版本的指示(780)以记录计算节点(102a)完成了源代码(280)的更新(608)。源代码的在用版本的指示是指计算节点正在执行哪个版本的源代码。由计算节点(102a)响应于完成源代码(208)的更新(608)更新(702)源代码的在用版本的指示(780)以记录计算节点(102a)完成了源代码(280)的更新(608)可以通过向源代码更新器(198)发送消息以改变对应于计算节点的源代码版本来实现。即,计算节点告知源代码更新器完成了原代码的更新。
图7的方法包括由计算节点(102a)从源代码更新器(198)接收(704)更新完成消息(752),其指示多个计算节点(102)中的每个计算节点的源代码在用版本与所更新源代码的版本相对应。由计算节点(102a)从源代码更新器(198)接收(704)指示多个计算节点(102)中的每个计算节点的源代码在用版本与所更新源代码的版本相对应的更新完成消息(752)可以通过从源代码更新器(198)接收每个计算节点具有最新源代码并且因此可以开始继续执行的指示而实现。
在图8的方法中,基于源代码(280)的更新完成在源代码(280)内停止执行的特定位置(654)继续(610)源代码(280)的执行包括响应于接收到更新完成消息(752)而继续(706)源代码的执行。响应于接收到更新完成消息(752)而继续(706)源代码的执行可以通过从所存储的起始位置开始执行所更新源代码来实现。
为了进一步进行解释,图8给出了图示根据本发明实施方式的用于对多个计算节点上执行的源代码实施更新的另外的示例性方法的流程图。图8的方法与图6的方法的相似之处在于,图7的方法包括接收(602)广播更新通知消息(650);响应于接收到该更新通知消息(650)在计算节点(102a)上实施(604)分布式屏障(652);基于该分布式屏障(652)在源代码(280)内的特定位置(654)停止(606)该源代码(280)的执行;基于该分布式屏障(652)对源代码(280)进行适当更新(608);并且基于源代码(280)的更新完成利用所保留工件数据(656)在源代码(280)内停止执行的特定位置(654)继续(610)源代码(280)的执行。
在图8的示例中,所实施的分布式屏障防止了计算节点(102a)更新(608)源代码(280)直至多个计算节点(102)中的每个计算节点都已经指示准备好更新源代码。图8的方法包括响应于接收到该更新通知消息(852),由计算节点(102a)确定(802)该计算节点是否准备更新源代码(280)。由计算节点(102a)响应于接收到该更新通知消息(852)而确定(802)该计算节点是否准备更新源代码(280)可以通过由计算节点确定源代码的执行是否可中断;并且当计算节点准备更新时,由该计算节点向源代码更新器(198)传送消息来实现。
在图8的方法中,如果该计算节点准备更新源代码,则该方法以由该计算节点(102a)传送(804)准备更新消息(850)而继续进行。由计算节点(102a)传送(804)准备更新消息(850)可以通过在JTAG网络(104)上向源代码更新器(198)传送消息来实现。
图8的方法还包括由计算节点(102a)确定(805)是否接收到立即更新消息(852)。由计算节点(102a)确定(805)是否接收到立即更新消息(852)可以通过查询存储立即更新消息的队列以确定是否接收到立即更新消息来实现。
图8的方法包括由计算节点(102a)从源代码更新器(198)接收立即更新消息(852),其指示多个计算节点(102)中的每个计算节点都准备更新源代码。由计算节点(102a)从源代码更新器(198)接收指示多个计算节点(102)中的每个计算节点都准备更新源代码的立即更新消息(852)可以通过从源代码更新器接收指示所有计算节点都准备进行更新的消息来实现。
在图8的方法中,对源代码进行适当更新(608)包括响应于接收到该立即更新消息(852)而适当更新(808)源代码。即,在图8的示例中,在计算节点(102a)响应于该计算节点(102a)接收到立即更新消息(852)而进行源代码的更新。响应于接收到立即更新消息(852)适当更新(808)源代码可以通过存储与源代码的执行相关联的变量、指针、寄存器内容;并且存储源代码内最后知性的指针位置;从源代码更新器(198)或另一个位置获取所更新源代码;并且在计算节点内存储所更新源代码来实现。
在图8的方法中,基于源代码(280)的更新完成在源代码(280)内停止执行的特定位置(654)继续(610)源代码(280)的执行包括由计算节点响应于计算节点处源代码的更新而继续(810)源代码的执行。由计算节点响应于计算节点处源代码的更新而继续(810)源代码的执行可以通过从所存储的起始位置开始所更新源代码的执行来实现。
本发明的示例性实施方式主要以用于对多个计算节点上执行的源代码实施更新的全功能计算机系统为背景进行了描述。然而,本领域技术人员将会认识到,本发明还可以以部署在计算机可读存储媒体上以便随人意适当处理系统使用的计算机程序产品而得以体现。如本领域技术人员将会意识到的,这样的计算机可读存储媒体可以是用于机器可读信息的任意存储媒体,包括磁性媒体、光学媒体或其它适当媒体。这样的媒体的示例包括硬盘或碟片中的磁盘、用于光驱的紧致盘、磁带等。本领域技术人员将会立刻认识到的是,具有适当编程工具的任意计算机系统都将能够执行以计算机程序产品所体现的本发明的方法的步骤。本领域技术人员还将会认识到,虽然一些示例性实施方式在该说明书中被描述为面向于安装在计算机硬件上并在其上执行的软件,但是被实施为固件或硬件的可替换实施方式同样处于本发明的范围之内。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施方式中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上将参照根据本发明实施方式的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令还可以被加载到计算机、其它可编程数据处理装置或者其它设备上而使得一系列操作步骤得以在该计算机、其它可编程数据处理装置或者其它设备上执行,以使得在计算机或其它可编程装置上执行的指令提供用于实施流程图和/或框图的一个或多个框中所指定的功能/动作的处理。
附图中的流程图和框图显示了根据本发明的多个实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
从以上描述将要理解的是,可以在本发明的各个实施方式中进行修改和变化而并不背离其实际精神。该说明书中的描述仅是处于说明的目的而并非以限制的含义进行理解。本发明的范围仅由以下权利要求的语言进行限定。
Claims (12)
1.一种对在多个计算节点上执行的源代码实施更新的方法,所述方法包括:
由计算节点从源代码更新器接收广播更新通知消息,其指示存在针对在所述多个计算节点上执行的所述源代码的更新;
响应于接收到所述更新通知消息,由所述计算节点在所述计算节点上实施分布式屏障,所述分布式屏障控制针对所述源代码的更新的实施;
基于所述分布式屏障,由所述计算节点在所述源代码内的特定位置停止所述源代码的执行,其中,所有所述多个计算节点基于所述分布式屏障停止所述源代码的执行;
基于所述分布式屏障,由所述计算节点在所述计算节点的存储器中适当更新包括保留工件数据的所述源代码,所述工件数据对应于所述源代码的执行;以及
基于所述源代码的所述更新完成,由所述计算节点利用所保留工件数据在所述源代码内停止执行的所述特定位置继续所述源代码的执行,其中,所有所述多个计算节点继续所述源代码的执行。
2.根据权利要求1所述的方法,其中所实施的分布式屏障防止所述计算节点继续执行所述源代码,直至所述多个计算节点中的每个计算节点都已经完成更新所述源代码。
3.根据权利要求2所述的方法,进一步包括:
响应于完成所述源代码的所述更新,由所述计算节点更新源代码在用版本的指示以记录所述计算节点完成了所述源代码的更新;
由所述计算节点从所述源代码更新器接收更新完成消息,其指示所述多个计算节点中的每个计算节点的所述源代码在用版本与所更新源代码的版本相对应;以及
其中继续所述源代码的执行响应于接收到所述更新完成消息。
4.根据权利要求1所述的方法,其中所实施的分布式屏障防止了所述计算节点更新所述源代码直至所述多个计算节点中的每个计算节点都已经指示准备好更新所述源代码。
5.根据权利要求4所述的方法,进一步包括:
响应于接收到所述更新通知消息,由所述计算节点确定所述计算节点是否准备更新所述源代码;
如果所述计算节点准备更新所述源代码,则由所述计算节点传送准备更新消息;以及
由所述计算节点从所述源代码更新器接收立即更新消息,其指示所述多个计算节点中的每个计算节点都准备更新所述源代码;
其中适当更新所述源代码响应于接收到所述立即更新消息;以及
其中继续所述源代码的执行响应于所述计算节点完成所述计算节点处的所述源代码的所述更新。
6.根据权利要求5所述的方法,其中所述更新通知消息是活动消息,其包括用于从所述多个计算节点中的每个计算节点收集准备更新消息的全归约操作。
7.一种用于对在多个计算节点上执行的源代码实施更新的装置,所述装置包括计算机处理器,操作耦合至所述计算机处理器的计算机存储器,所述计算机存储器具有部署于其中的计算机程序指令,当被所述计算机处理器执行时,所述计算机程序指令使得所述装置执行以下步骤:
由计算节点从源代码更新器接收广播更新通知消息,其指示存在针对在所述多个计算节点上执行的所述源代码的更新;
响应于接收到所述更新通知消息,由所述计算节点在所述计算节点上实施分布式屏障,所述分布式屏障控制针对所述源代码的更新的实施;
基于所述分布式屏障,由所述计算节点在所述源代码内的特定位置停止所述源代码的执行,其中,所有所述多个计算节点基于所述分布式屏障停止所述源代码的执行;
基于所述分布式屏障,由所述计算节点在所述计算节点的存储器中适当更新包括保留工件数据的所述源代码,所述工件数据对应于所述源代码的执行;以及
基于所述源代码的所述更新完成,由所述计算节点利用所保留工件数据在所述源代码内停止执行的所述特定位置继续所述源代码的执行,其中,所有所述多个计算节点继续所述源代码的执行。
8.根据权利要求7所述的装置,其中所实施的分布式屏障防止所述计算节点继续执行所述源代码,直至所述多个计算节点中的每个计算节点都已经完成更新所述源代码。
9.根据权利要求8所述的装置,进一步包括计算机程序指令,当被所述计算机处理器执行时,所述计算机程序指令使得所述装置执行以下步骤:
响应于完成所述源代码的所述更新,由所述计算节点更新源代码在用版本的指示以记录所述计算节点完成了所述源代码的更新;
由所述计算节点从所述源代码更新器接收更新完成消息,其指示所述多个计算节点中的每个计算节点的所述源代码在用版本与所更新源代码的版本相对应;以及
其中继续所述源代码的执行响应于接收到所述更新完成消息。
10.根据权利要求7所述的装置,其中所实施的分布式屏障防止了所述计算节点更新所述源代码直至所述多个计算节点中的每个计算节点都已经指示准备好更新所述源代码。
11.根据权利要求10所述的装置,进一步包括计算机程序指令,当被所述计算机处理器执行时,所述计算机程序指令使得所述装置执行以下步骤:
响应于接收到所述更新通知消息,由所述计算节点确定所述计算节点是否准备更新所述源代码;
如果所述计算节点准备更新所述源代码,则由所述计算节点传送准备更新消息;以及
由所述计算节点从所述源代码更新器接收立即更新消息,其指示所述多个计算节点中的每个计算节点都准备更新所述源代码;
其中适当更新所述源代码响应于接收到所述立即更新消息;以及
其中继续所述源代码的执行响应于所述计算节点完成所述计算节点处的所述源代码的所述更新。
12.根据权利要求11所述的装置,其中所述更新通知消息是活动消息,其包括用于从所述多个计算节点中的每个计算节点收集准备更新消息的全归约操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/369,879 | 2012-02-09 | ||
US13/369,879 US9720676B2 (en) | 2012-02-09 | 2012-02-09 | Implementing updates to source code executing on a plurality of compute nodes |
PCT/IB2013/050983 WO2013118062A1 (en) | 2012-02-09 | 2013-02-06 | Implementing updates to source code executing on a plurality of compute nodes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104115124A CN104115124A (zh) | 2014-10-22 |
CN104115124B true CN104115124B (zh) | 2017-05-10 |
Family
ID=48946744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380008762.XA Expired - Fee Related CN104115124B (zh) | 2012-02-09 | 2013-02-06 | 对在多个计算节点上执行的源代码实施更新 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9720676B2 (zh) |
CN (1) | CN104115124B (zh) |
DE (1) | DE112013000904T5 (zh) |
GB (1) | GB2513082B (zh) |
WO (1) | WO2013118062A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9081643B2 (en) * | 2012-09-21 | 2015-07-14 | Silver Sring Networks, Inc. | System and method for efficiently updating firmware for nodes in a mesh network |
US9665366B2 (en) | 2014-09-26 | 2017-05-30 | Oracle International Corporation | Creation of a software configuration signature for software |
US10073690B2 (en) | 2014-09-26 | 2018-09-11 | Oracle International Corporation | Populating content for a base version of an image |
US9864675B2 (en) * | 2014-11-17 | 2018-01-09 | Sap Se | Regression testing with external breakpoints |
CN106325126B (zh) * | 2016-08-26 | 2018-11-27 | 广州能迪云服务科技有限公司 | 一种数据采集扩展控制系统及其数据采集方法 |
CN106227102B (zh) * | 2016-08-26 | 2018-10-02 | 广州能迪云服务科技有限公司 | 一种数据采集扩展系统及其数据采集方法 |
US20180136929A1 (en) * | 2016-11-15 | 2018-05-17 | International Business Machines Corporation | Content driven automated upgrade of running web applications in on-premise environments |
DE102017119229B3 (de) | 2017-08-23 | 2018-12-13 | Jenaer Antriebstechnik Gmbh | Verfahren zur Übertragung von gerätespezifischen Daten über ein Datenübertragungssystem |
US10868709B2 (en) | 2018-09-10 | 2020-12-15 | Oracle International Corporation | Determining the health of other nodes in a same cluster based on physical link information |
CN109062599B (zh) * | 2018-09-11 | 2021-11-26 | 郑州云海信息技术有限公司 | 微服务架构下代码更新的管理方法和装置 |
US11449339B2 (en) * | 2019-09-27 | 2022-09-20 | Red Hat, Inc. | Memory barrier elision for multi-threaded workloads |
US11226807B1 (en) * | 2020-07-31 | 2022-01-18 | Rapid7, Inc. | Self-dependent upgrade of Java runtime environments |
US11662994B1 (en) * | 2020-10-20 | 2023-05-30 | Metactix Llc | System and method for updating an application for a population of computers |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7032210B2 (en) * | 2001-11-11 | 2006-04-18 | International Business Machines Corporation | Method and system for generating program source code of a computer application from an information model |
WO2011134689A1 (en) * | 2010-04-29 | 2011-11-03 | International Business Machines Corporation | Compiling software for a hierarchical distributed processing system |
US8065671B1 (en) * | 2007-08-20 | 2011-11-22 | United States Automobile Association (USAA) | Systems and methods for product updates with provisioning of data items |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6564215B1 (en) | 1999-12-16 | 2003-05-13 | International Business Machines Corporation | Update support in database content management |
US6954794B2 (en) | 2002-10-21 | 2005-10-11 | Tekelec | Methods and systems for exchanging reachability information and for switching traffic between redundant interfaces in a network cluster |
US7472384B1 (en) | 2003-12-02 | 2008-12-30 | Swsoft Holdings, Ltd. | System, method and computer program product for on-the-fly patching of executable code |
US7478382B2 (en) * | 2004-09-27 | 2009-01-13 | Corrigent Systems Ltd. | Synchronized ring software download |
US7464118B2 (en) * | 2004-12-03 | 2008-12-09 | International Business Machines Corporation | Algorithm for maximizing application availability during automated enterprise deployments |
US20070168994A1 (en) * | 2005-11-03 | 2007-07-19 | International Business Machines Corporation | Debugging a computer program in a distributed debugger |
US7818740B2 (en) * | 2006-05-05 | 2010-10-19 | Microsoft Corporation | Techniques to perform gradual upgrades |
US20090150872A1 (en) | 2006-07-04 | 2009-06-11 | George Russell | Dynamic code update |
KR100862971B1 (ko) * | 2007-07-26 | 2008-10-13 | 강릉대학교산학협력단 | 무선 센서 네트워크의 노드들에 대한 펌웨어 업데이트 방법 |
US8266260B2 (en) * | 2007-12-11 | 2012-09-11 | Sharp Laboratories Of America, Inc. | Method and system for updating the software of multiple network nodes |
WO2010016058A2 (en) * | 2008-08-04 | 2010-02-11 | Red Bend Ltd. | Performing an in-place update of an operating storage device |
-
2012
- 2012-02-09 US US13/369,879 patent/US9720676B2/en not_active Expired - Fee Related
-
2013
- 2013-01-14 US US13/740,634 patent/US9720677B2/en not_active Expired - Fee Related
- 2013-02-06 DE DE112013000904.8T patent/DE112013000904T5/de active Pending
- 2013-02-06 WO PCT/IB2013/050983 patent/WO2013118062A1/en active Application Filing
- 2013-02-06 CN CN201380008762.XA patent/CN104115124B/zh not_active Expired - Fee Related
- 2013-02-06 GB GB1414628.6A patent/GB2513082B/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7032210B2 (en) * | 2001-11-11 | 2006-04-18 | International Business Machines Corporation | Method and system for generating program source code of a computer application from an information model |
US8065671B1 (en) * | 2007-08-20 | 2011-11-22 | United States Automobile Association (USAA) | Systems and methods for product updates with provisioning of data items |
WO2011134689A1 (en) * | 2010-04-29 | 2011-11-03 | International Business Machines Corporation | Compiling software for a hierarchical distributed processing system |
Also Published As
Publication number | Publication date |
---|---|
GB2513082B (en) | 2015-05-13 |
DE112013000904T5 (de) | 2014-11-13 |
GB201414628D0 (en) | 2014-10-01 |
CN104115124A (zh) | 2014-10-22 |
US20130212572A1 (en) | 2013-08-15 |
US9720677B2 (en) | 2017-08-01 |
US9720676B2 (en) | 2017-08-01 |
WO2013118062A1 (en) | 2013-08-15 |
GB2513082A (en) | 2014-10-15 |
US20130212573A1 (en) | 2013-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104115124B (zh) | 对在多个计算节点上执行的源代码实施更新 | |
CN103309652B (zh) | 用于在并行计算机中开始集合操作的方法和装置 | |
CN103246508B (zh) | 用于开发并行计算机的集合操作的方法和装置 | |
US9569399B2 (en) | Routing data communications packets in a parallel computer | |
CN102999406B (zh) | 从硬件故障模式的增强转储数据收集的方法和系统 | |
US9424087B2 (en) | Optimizing collective operations | |
US20120185867A1 (en) | Optimizing The Deployment Of A Workload On A Distributed Processing System | |
US20130060557A1 (en) | Distributed hardware device simulation | |
CN105393212B (zh) | 使用锁定机制进行高效任务调度的方法、系统和存储介质 | |
US8689228B2 (en) | Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system | |
US8849888B2 (en) | Candidate set solver with user advice | |
US9229782B2 (en) | Collectively loading an application in a parallel computer | |
WO2024002175A1 (zh) | 指令执行方法、系统控制器及相关产品 | |
US9176778B2 (en) | Background collective operation management in a parallel computer | |
CN107832130A (zh) | 一种银行系统的作业流调度执行方法、装置及电子设备 | |
CN103246507B (zh) | 用于开发在并行计算机中执行的集合操作的方法和装置 | |
US11023277B2 (en) | Scheduling of tasks in a multiprocessor device | |
CN104731572B (zh) | 履行硬件线程的硬件权利的方法和系统 | |
CN103778003B (zh) | 用于资源的分层锁定的方法和系统 | |
CN103324464B (zh) | 在并行计算机的计算节点处处理非预期消息的方法和装置 | |
US9571329B2 (en) | Collective operation management in a parallel computer | |
Pennefather et al. | Exploration and design of a synchronous message passing framework for a CPU-NPU heterogeneous architecture | |
US9141183B2 (en) | Collective operation management in a parallel computer | |
WO2024002172A1 (zh) | 片上系统、指令系统、编译系统及相关产品 | |
WO2024002176A1 (zh) | 指令处理装置、指令执行方法、片上系统和板卡 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170510 |
|
CF01 | Termination of patent right due to non-payment of annual fee |